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