高并發(fā)系統(tǒng)設計三大目標:高性能书释、高并發(fā)、高可用
高性能:
為什么需要高性能赊窥?
性能體現了系統(tǒng)的并行處理能力爆惧,在有限的硬件投入下,提高性能意味著節(jié)省成本锨能。同時扯再,性能也反映了用戶體驗芍耘,響應時間分別是100毫秒和1秒,給用戶的感受是完全不同的熄阻。
高性能評估方式斋竞?
性能指標:
平均響應時間:最常用,但是缺陷很明顯秃殉,對于慢請求不敏感坝初。比如1萬次請求,其中9900次是1ms钾军,100次是100ms鳄袍,則平均響應時間為1.99ms,雖然平均耗時僅增加了0.99ms巧颈,但是1%請求的響應時間已經增加了100倍畦木。
TP90、TP99等分位值:將響應時間按照從小到大排序砸泛,TP90表示排在第90分位的響應時間十籍, 分位值越大,對慢請求越敏感唇礁。
吞吐量:和響應時間呈反比勾栗,比如響應時間是1ms,則吞吐量為每秒1000次盏筐。
可用性指標:
- 可用性 = 正常運行時間 / 系統(tǒng)總運行時間
高性能設計手段
縱向擴展和橫向擴展:提升單機的處理能力围俘,提高并發(fā)處理能力。
天下武功琢融,唯快不破”界牡。性能是系統(tǒng)設計成功與否的關鍵,實現高性能也是對程序員個人能力的挑戰(zhàn)漾抬。不過在了解實現高性能的方法之前宿亡,我們先明確一下性能優(yōu)化的原則。首先纳令,性能優(yōu)化一定不能盲目挽荠,一定是問題導向的。脫離了問題平绩,盲目地提早優(yōu)化會增加系統(tǒng)的復雜度圈匆,浪費開發(fā)人員的時間,也因為某些優(yōu)化可能會對業(yè)務上有些折中的考慮捏雌,所以也會損傷業(yè)務跃赚。
其次,性能優(yōu)化也遵循“八二原則”腹忽,即你可以用 20% 的精力解決 80% 的性能問題来累。所以我們在優(yōu)化過程中一定要抓住主要矛盾砚作,優(yōu)先優(yōu)化主要的性能瓶頸點。再次嘹锁,性能優(yōu)化也要有數據支撐葫录。在優(yōu)化過程中,你要時刻了解你的優(yōu)化讓響應時間減少了多少领猾,提升了多少的吞吐量米同。
最后,性能優(yōu)化的過程是持續(xù)的摔竿。高并發(fā)的系統(tǒng)通常是業(yè)務邏輯相對復雜的系統(tǒng)面粮,那么在這類系統(tǒng)中出現的性能問題通常也會有多方面的原因。因此继低,我們在做性能優(yōu)化的時候要明確目標熬苍,比方說,支撐每秒 1 萬次請求的吞吐量下響應時間在 10ms袁翁,那么我們就需要持續(xù)不斷地尋找性能瓶頸柴底,制定優(yōu)化方案,直到達到目標為止粱胜。
高可用:
為什么需要高可用柄驻?
軟件
- 軟件總是有Bug的
- 軟件總會有性能極限的
- 軟件交互相互影響
硬件
- 硬件總是有故障的
- 硬件的生命周期
- 硬件的網絡劃分問題
高可用評估方式?
傳統(tǒng)
- 一段時間的停機時間時間占比:停機時間/總時間
科學
- 一段時間的停機影響請求量占比:停機時間影響請求量/總請求量
高可用設計手段
以微服務為例子:必須做到一下幾點
1焙压、服務冗余(無狀態(tài)化)
- 當系統(tǒng)發(fā)生故障時,冗余配置的部件介入并承擔故障部件的工作,由此減少系統(tǒng)的故障時間
- 當前資源足夠提供一個服務的情況下多給點資源以防突發(fā)情況
2鸿脓、冪等設計(負載均衡)
- 實現數據一致性和事務完整性的重要手段
- 負載均衡設備,實現流量分發(fā)涯曲。 負載均衡(Load Balance)野哭,意思是將負載(工作任務,訪問請求)進行平衡幻件、分攤到多個操作單元(服務器虐拓,組件)上進行執(zhí)行。
3傲武、超時機制(異步化設計)
- 基于接口異步響應,常用在第三方對接流程
- 基于消息生產和消費模式城榛,解耦復雜流程
- 基于發(fā)布和訂閱的廣播模式揪利,常見系統(tǒng)通知
4、數據復制/緩存/Sharding(服務限流降級熔斷)
服務限流
概述:當系統(tǒng)的處理能力不能應對外部請求的突增流量時狠持,為了不讓系統(tǒng)奔潰疟位,必須采取限流的措施。實現技術:Hystrix喘垂,Sentinel
服務降級
概述:當服務器壓力劇增的情況下甜刻,根據實際業(yè)務情況及流量绍撞,對一些服務和頁面有策略的不處理或換種簡單的方式處理,從而釋放服務器資源以保證核心交易正常運作或高效運作得院。實現技術:Hystrix傻铣,Dubbo(dubbo-admin,mork祥绞,@Reference)
服務熔斷
概述:服務熔斷的作用類似于我們家用的保險絲非洲,當某服務出現不可用或響應超時的情況時,為了防止整個系統(tǒng)出現雪崩蜕径,暫時停止對該服務的調用两踏。實現技術:Hystrix
5、架構拆分兜喻、服務治理
- 業(yè)務場景梦染、系統(tǒng)水平拆分
- 應用場景、功能垂直拆分
高并發(fā):
為什么需要高并發(fā)朴皆?
隨著流量變大帕识,會遇到各種各樣的技術問題,比如接口響應超時车荔、CPU load升高渡冻、GC頻繁、死鎖忧便、大數據量存儲等等族吻,這些問題能推動我們在技術深度上不斷精進。
高并發(fā)評估方式珠增?
1超歌、系統(tǒng)性能指標:
- 提高吞吐量
- 縮短響應延遲
2、性能優(yōu)化指標:
- 縮短響應時間
- 提高并發(fā)數&提高吞吐量
- 讓系統(tǒng)長期處于一個合理的時間節(jié)點
高并發(fā)設計手段
1蒂教、優(yōu)化手段:
- 當系統(tǒng)響應時間是瓶頸的時候巍举,考慮空間換時間
- 當系統(tǒng)數據大小是瓶頸的時候,考慮時間換空間
- 最重要的是凝垛,找到系統(tǒng)的瓶頸
2懊悯、優(yōu)化層次:
- 架構設計層次
- 分布式系統(tǒng)微服務化
- 分庫分表、讀寫分離梦皮、數據分片
- 無狀態(tài)化設計炭分、水平擴展
- 調用鏈路梳理、熱點數據盡量靠近用戶
- 分布式cache剑肯、多級多類型緩存
- 對系統(tǒng)容量進行評估捧毛、規(guī)劃
- 提前拒絕、保證柔性可用
- 算法邏輯層次
- 使用更高效的算法替換現有算法
- 使用增量式算法
- 進行并發(fā)和鎖的優(yōu)化
- 當系統(tǒng)時間是瓶頸,采用空間換時間算法策略
- 當系統(tǒng)空間容量是瓶頸呀忧,采用時間換空間算法策略
- 并行執(zhí)行师痕、降低響應時間
- 異步執(zhí)行、業(yè)務流程解耦而账、提供穩(wěn)定性和降低響應時間
- 代碼優(yōu)化層次
此處省略···
最后胰坟,安利一款阿里云產品
AHAS:應用高可用服務
可輕松抵御流量洪峰沖擊,打造超高并發(fā)下穩(wěn)定運行的系統(tǒng)環(huán)境福扬。實現流量分發(fā)腕铸,系統(tǒng)擴縮容,數據庫穩(wěn)定性與線性擴容能力铛碑;通過解耦應用與緩存數據降低核心應用負載狠裹;解決系統(tǒng)實時監(jiān)控與流控問題。
結尾:
希望這篇文章能帶給你關于高并發(fā)更全面的認識汽烦,如果你也有可借鑒的經驗和深入的思考涛菠,歡迎評論區(qū)留言討論。