面向服務(wù) n SOA面向服務(wù)架構(gòu)設(shè)計(jì) n 微服務(wù)更細(xì)粒度服務(wù)化,一系列的獨(dú)立的服務(wù)共同組成系統(tǒng) 使用服務(wù)化思維,將核心業(yè)務(wù)或者通用的業(yè)務(wù)功能抽離成服務(wù)獨(dú)立部署,對(duì)外提供接口的方式提供功能。 最理想化的設(shè)計(jì)是可以把一個(gè)復(fù)雜的系統(tǒng)抽離成多個(gè)服務(wù),共同組成系統(tǒng)的業(yè)務(wù),優(yōu)點(diǎn):松耦合,高可用性,高伸縮性,易維護(hù)。 通過(guò)面向服務(wù)化設(shè)計(jì),獨(dú)立服務(wù)器部署,均衡負(fù)載,數(shù)據(jù)庫(kù)集群,可以讓服務(wù)支撐更高的并發(fā) n 服務(wù)例子: n 用戶行為跟蹤記錄統(tǒng)計(jì) n 說(shuō)明: n 通過(guò)上報(bào)應(yīng)用模塊,操作事件,事件對(duì)象,等數(shù)據(jù),記錄用戶的操作行為 n 比如:記錄用戶在某個(gè)商品模塊,點(diǎn)擊了某一件商品,或者瀏覽了某一件商品 n 背景: n 由于服務(wù)需要記錄用戶的各種操作行為,并且可以重復(fù)上報(bào),準(zhǔn)備接入服務(wù)的業(yè)務(wù)又是核心業(yè)務(wù)的用戶行為跟蹤,所以請(qǐng)求量很大,高峰期會(huì)產(chǎn)生大量并發(fā)請(qǐng)求。 n 架構(gòu): n nodejs WEB應(yīng)用服務(wù)器均衡負(fù)載 n redis主從集群 n mysql主 n nodejs+express+ejs+redis+mysql n 服務(wù)端采用nodejs,nodejs是單進(jìn)程(PM2根據(jù)cpu核數(shù)開啟多個(gè)工作進(jìn)程),采用事件驅(qū)動(dòng)機(jī)制,適合I/O密集型業(yè)務(wù),處理高并發(fā)能力強(qiáng) n 業(yè)務(wù)設(shè)計(jì): n 并發(fā)量大,所以不能直接入庫(kù),采用:異步同步數(shù)據(jù),消息隊(duì)列 n 請(qǐng)求接口上報(bào)數(shù)據(jù),接口將上報(bào)數(shù)據(jù)push到redis的list隊(duì)列中 n nodejs寫入庫(kù)腳本,循環(huán)pop redis list數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)入庫(kù),并進(jìn)行相關(guān)統(tǒng)計(jì)Update,無(wú)數(shù)據(jù)時(shí)sleep幾秒 n 因?yàn)閿?shù)據(jù)量會(huì)比較大,上報(bào)的數(shù)據(jù)表按天命名存儲(chǔ) n 接口: n 上報(bào)數(shù)據(jù)接口 n 統(tǒng)計(jì)查詢接口 n 上線跟進(jìn): n 服務(wù)業(yè)務(wù)基本正常 n 每天的上報(bào)表有上千萬(wàn)的數(shù)據(jù) 冗余,自動(dòng)化 當(dāng)高并發(fā)業(yè)務(wù)所在的服務(wù)器出現(xiàn)宕機(jī)的時(shí)候,需要有備用服務(wù)器進(jìn)行快速的替代,在應(yīng)用服務(wù)器壓力大的時(shí)候可以快速添加機(jī)器到集群中,所以我們就需要有備用機(jī)器可以隨時(shí)待命。 最理想的方式是可以通過(guò)自動(dòng)化監(jiān)控服務(wù)器資源消耗來(lái)進(jìn)行報(bào)警,自動(dòng)切換降級(jí)方案,自動(dòng)的進(jìn)行服務(wù)器替換和添加操作等,通過(guò)自動(dòng)化可以減少人工的操作的成本,而且可以快速操作,避免人為操作上面的失誤。 n 冗余 n 數(shù)據(jù)庫(kù)備份 n 備用服務(wù)器 n 自動(dòng)化 n 自動(dòng)化監(jiān)控 n 自動(dòng)化報(bào)警 n 自動(dòng)化降級(jí) 通過(guò)GitLab事件,我們應(yīng)該反思,做了備份數(shù)據(jù)并不代表就萬(wàn)無(wú)一失了,我們需要保證高可用性,首先備份是否正常進(jìn)行,備份數(shù)據(jù)是否可用,需要我們進(jìn)行定期的檢查,或者自動(dòng)化監(jiān)控, 還有包括如何避免人為上的操作失誤問(wèn)題。(不過(guò)事件中g(shù)itlab的開放性姿態(tài),積極的處理方式還是值得學(xué)習(xí)的) 總結(jié) 高并發(fā)架構(gòu)是一個(gè)不斷衍變的過(guò)程,冰洞三尺非一日之寒,長(zhǎng)城筑成非一日之功 。打好基礎(chǔ)架構(gòu)方便以后的拓展,這點(diǎn)很重要。 轉(zhuǎn)自:https://mp.weixin.qq.com/s/g0hUrgVZZ8iv3cDCxDZxpw |
|