系統(tǒng)練級攻略 | 京東架構(gòu)師傾情解讀
引言
系統(tǒng)搭建,小有小的靈活,大有大的難處,從小到大,系統(tǒng)該怎么打怪練級呢?
首先:守住你的底線
- 底線?單體實(shí)例的***處理量
- 單體實(shí)例?泛指單個應(yīng)用實(shí)例、單個緩存實(shí)例,單個存儲實(shí)例
- 底線從何而來?壓測
- 底線恒定不變?隨著服務(wù)的架構(gòu)變化隨時調(diào)整
- 如:一個實(shí)例【java實(shí)例+DB】的處理峰值為500/秒,在緩存化數(shù)據(jù)后處理峰值可以調(diào)整的5000/秒,但是緩存異常情況下,系統(tǒng)降級,那峰值必須要回到500/秒。
- 守不住底線?打怪如同碰見一個大 BOSS,經(jīng)由負(fù)載均衡一個個秒掉你的服務(wù),最終全局502
- 怎么守住底線?限流、限流、限流!
- 限流:一個系統(tǒng)穩(wěn)定的***層的護(hù)城河,永遠(yuǎn)不要輕視它。
線上的情況千變?nèi)f化,交易峰值你可以規(guī)劃,但是異常流量永遠(yuǎn)不可預(yù)測
如我們的限流拆分:
- 調(diào)整線上限流依據(jù)?監(jiān)控,分流監(jiān)控
監(jiān)控的力度也是根據(jù)限流層次同步細(xì)化
PS:我們搭建了一個流量分析平臺,通過接入系統(tǒng),可以通過自定義規(guī)則定義流量拆分報(bào)表,并且實(shí)現(xiàn)精細(xì)化流量控制
其次:不斷提高底線
1. 提高單位處理量
優(yōu)化數(shù)據(jù)結(jié)構(gòu)和使用緩存等手段,提升單體實(shí)例的***吞吐量。
常用手段:
- 網(wǎng)站靜態(tài)流量分流:頁面靜態(tài)化、APP本地緩存、CDN分發(fā)
- 數(shù)據(jù)緩存化:配置性數(shù)據(jù)本地預(yù)加載緩存,熱點(diǎn)數(shù)據(jù)redis預(yù)加載緩存[注意:緩存也是吞吐量閥值和容量閥值]
- 流程簡化:收單流程和生產(chǎn)流程拆分
- 請求流量清理:啟用gzip壓縮、ajax清理掉多余的數(shù)據(jù)信息
2. 無狀態(tài)化
高內(nèi)聚,低耦合,將應(yīng)用+DB打包成一個對外可擴(kuò)展的服務(wù)模塊,標(biāo)準(zhǔn)有三:
- 對內(nèi)依賴數(shù)據(jù)的多源化
- 對上游實(shí)現(xiàn)無依賴化
- 對下游實(shí)現(xiàn)數(shù)據(jù)的自動傳遞
價保系統(tǒng)流程處理中心樣例:
***:統(tǒng)籌變化,橫向擴(kuò)展
1. 監(jiān)控為眼
統(tǒng)籌變化,首先要對系統(tǒng)的流量情況了若指掌,是通過監(jiān)控系統(tǒng)來實(shí)現(xiàn)的。
2. 流程優(yōu)化
只有簡單的業(yè)務(wù)流程才是穩(wěn)定可靠的,將業(yè)務(wù)流程和接單流程拆分,針對性配置資源,才能實(shí)現(xiàn)性能和資源的靈活安排。
針對現(xiàn)在的微服務(wù)化,要根據(jù)系統(tǒng)所處階段靈活拆分,任何過度設(shè)計(jì)都會導(dǎo)致開發(fā)量和運(yùn)維量飆升,最終影響系統(tǒng)的穩(wěn)定性。
3. 橫向擴(kuò)展
集群化計(jì)算中心【容器+DB】,橫向擴(kuò)容縮容,外部依賴異??伸`活切換。
系統(tǒng)練級標(biāo)準(zhǔn)
1. 單實(shí)例不死
通過DB限流和應(yīng)用限流,保證單實(shí)例在大流量下沖擊下,會出現(xiàn)服務(wù)性能變差,但是不會死掉。
2. 分類型限流
在細(xì)化監(jiān)控基礎(chǔ)上,針對不同業(yè)務(wù)不同流程配置不同的限流閥值,保證異常流量可監(jiān)控,可阻截,高效的提供正常服務(wù)。
3. 集群擴(kuò)展【DB+實(shí)例】
將DB和實(shí)例打包成一個集群,可以根據(jù)服務(wù)流量動態(tài)調(diào)整擴(kuò)容縮容。
該集群具備標(biāo)準(zhǔn):對上游通過接口擴(kuò)容,數(shù)據(jù)流內(nèi)部自我驅(qū)動流轉(zhuǎn),對下游主動同步。
4. 外部依賴無感化
簡而言之就是外部依賴接口掛掉不影響系統(tǒng)的核心功能,通過將相關(guān)依賴數(shù)據(jù)預(yù)抓取實(shí)現(xiàn)熱數(shù)據(jù)備份,保證接口掛掉后自我降級,保證服務(wù)的可用性。
每個階段都是應(yīng)該隨著系統(tǒng)的流量的增加,逐級優(yōu)化,反之就是過度設(shè)計(jì),導(dǎo)致研發(fā)和線上運(yùn)維成本等上升,反而影響系統(tǒng)穩(wěn)定性。
劉慎寶:京東財(cái)務(wù)研發(fā)部架構(gòu)師,主要負(fù)責(zé)財(cái)務(wù)研發(fā)部的基礎(chǔ)組件和各系統(tǒng)技術(shù)方案支持,10+年互聯(lián)網(wǎng)研發(fā)專家。2010年入職京東并歷經(jīng)幾乎所有618和雙11挑戰(zhàn)。精通高并發(fā)服務(wù)搭建和業(yè)務(wù)建模,曾多次主導(dǎo)京東財(cái)務(wù)系統(tǒng)架構(gòu)升級和數(shù)據(jù)庫升級,主導(dǎo)結(jié)算魔方重構(gòu),訂單臺賬優(yōu)化、價保優(yōu)化等重大研發(fā)項(xiàng)目,對財(cái)務(wù)系統(tǒng)有深刻理解。
【本文來自51CTO專欄作者張開濤的微信公眾號(開濤的博客),公眾號id: kaitao-1234567】