《架构设计2.0大型分布式系统架构方法论与实践》三高笔记
生活随笔
收集整理的這篇文章主要介紹了
《架构设计2.0大型分布式系统架构方法论与实践》三高笔记
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 前言
- 高并發(fā)
- 高并發(fā)讀
- 動靜分離與CDN加速
- 緩存
- 并發(fā)讀與Pipeline
- 重寫輕讀
- 讀寫分離
- 批量
- 高并發(fā)寫
- 數(shù)據(jù)分片
- 任務(wù)分片
- 異步化
- 批量
- 高可靠
- 七板斧
- 高可用
- 高可用架構(gòu)幾個核心問題
前言
- 因為本人沒多少三高的實戰(zhàn)經(jīng)驗,所以對《架構(gòu)設(shè)計2.0大型分布式系統(tǒng)架構(gòu)方法論與實踐》這本書的三高比較感興趣,在此做個記錄,并加入一點自己的理解(如果有錯誤的地方請批評指出,感激不盡)。
- 何為三高?
- 高并發(fā):高并發(fā)是為了讓系統(tǒng)變得更有效率。
- 高可靠:為了讓系統(tǒng)變得更靠譜,盡可能減少故障發(fā)生次數(shù)。
- 高可用:為了故障發(fā)生后,故障恢復時間盡可能的短。
高并發(fā)
- 高并發(fā):高并發(fā)是為了讓系統(tǒng)變得更有效率。高并發(fā)又可以分為幾種側(cè)重類型:高并發(fā)讀、高并發(fā)寫、高并發(fā)讀寫。
高并發(fā)讀
動靜分離與CDN加速
- 靜態(tài)內(nèi)容常用的處理策略就是CDN。
緩存
- 本地緩存或集中式緩存(如Redis/Memcached)。
并發(fā)讀與Pipeline
-
并發(fā)讀:串行改并行,可以使用FutureTask、CompleteService、CompletableFuture實現(xiàn),FutureTask使用具體可參考拙作使用FutureTask優(yōu)化業(yè)務(wù)代碼。
-
Pipeline:多個Get操作一個個發(fā)出去,不等等返回結(jié)果,就像流入一個管道一樣,結(jié)果從另一個管道流出。這塊很像HTTP Pipeline。
重寫輕讀
- 書中舉例微博Feeds流,要查詢用戶Feeds流時,要先查詢關(guān)注的用戶列表,不利于高并發(fā)查詢,所以為每個用戶準備一個收件箱。某人發(fā)了條微博后,給粉絲的信箱都投遞一條數(shù)據(jù)。這樣把計算邏輯從“讀”的一端移到了“寫”的一端。
- 寬表:其實就是冗余字段。
讀寫分離
- 例如MySQL可以做集群,讀寫分離,讀的節(jié)點可以多一些。
批量
- 可以參考拙作高并發(fā)場景下請求合并(批量)。
高并發(fā)寫
數(shù)據(jù)分片
- 例如MySQL分庫分表。
任務(wù)分片
- 任務(wù)分片:例如把生產(chǎn)汽車的過程分成多道工序。雖然對每輛汽車來說依舊是串行的,但工序之間是并行的。對應(yīng)代碼與FutureTask的含義有所關(guān)聯(lián),FutureTask使用具體可參考拙作使用FutureTask優(yōu)化業(yè)務(wù)代碼。
異步化
- 書中舉例短信驗證碼的例子:請求發(fā)送驗證碼加入到消息隊列,由另一個程序消費。
批量
- 書中提到了廣告計費系統(tǒng)的合并扣費,把用戶分組,多個扣款的請求合并成一個,也就是說只需要調(diào)用一次數(shù)據(jù)庫,減少了數(shù)據(jù)庫壓力,也提高了執(zhí)行效率。雖然這是高并發(fā)寫,但同樣可以參考拙作高并發(fā)場景下請求合并(批量)。
高可靠
- 高可靠:為了讓系統(tǒng)變得更靠譜,盡可能減少故障發(fā)生次數(shù)??偨Y(jié)下面7個有效措施。
七板斧
- 1、限流
- 2、降級
- 3、熔斷
- 4、超時與重試
- 5、隔離
- 6、灰度發(fā)布、滾動發(fā)布、備份、回滾
- 7、監(jiān)控體系和日志報警
高可用
- 高可用:為了故障發(fā)生后,故障恢復時間盡可能的短。要想快速恢復,要避免單點。
高可用架構(gòu)幾個核心問題
- 故障探測。
- 腦裂問題。
- 數(shù)據(jù)一致性。
- 對客戶端透明。
- 高可用依賴的連環(huán)套問題。
總結(jié)
以上是生活随笔為你收集整理的《架构设计2.0大型分布式系统架构方法论与实践》三高笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动平台端到端低成本解决方案
- 下一篇: Nehe第19课 粒子系统