該文章需要整理
2015.3.13修改
分布式系統通常服務大請求、維護著大資料、快速響應、長時間可用。設計分布式後台服務需要考慮的東西很多,本文給出一些常用的設計準則,以備檢視。
效能:快速響應、低延遲
可靠性:系統可靠就是同樣的請求返回同樣的資料;更新能夠持久化;資料不會丟失
可管理性:便於運維,整個系統是否便於維護和變更,常常考慮的有-問題發生時能及時方便的發現和處理,系統修改和更新是否易於操作
成本:軟硬體成本、部署和維護成本、學習成本
現實中面對這些要求常用的解決辦法:
準則戰術
可用性•高可用集群
•非同步訊息
•請求限流(丟棄超過處理能力的流量)
•隔離:服務隔離、資料隔離、資源隔離
•容量規劃(單機容量(qps)=最大處理執行緒數/單次請求平均響應時間,系統容量(qps)=單機容量*機器數*r(容量係數,預留30%的冗餘應對突發狀況)
•快速拒絕:盡早拒絕過載請求
•大系統小做:把複雜的大系統拆成多個獨立、高度自治的小系統,實現高內聚低耦合,避免牽一發動全身
效能•負載均衡
•快取,資料預載入
•資料讀寫分離、資料分片、分庫、分表
•索引•併發處理
•非同步處理
•超時控制(丟棄超時響應)
•阻塞容錯
可伸縮性
•彈性雲計算平台
•資料層面:讀寫分離、資料分割槽
•應用層面:垂直伸縮、水平複製、功能分級(服務無狀態)、應用分片
上表裡面不管是服務還是資料都提到分割槽或分片,或者垂直/水平,其實就是切分的兩個方向:
來解釋下常見的策略:
補充:提高響應效能的手段歸根結底就是三板斧:佇列(queue)、快取(cache)和分割槽(sharding):
佇列:可以緩解併發寫操作的壓力,提高系統伸縮性,同時也是非同步化系統的最常見實現手段;
快取:從檔案系統到資料庫再到記憶體的各級快取模組,解決了資料就近讀取的需求;
分割槽:保證了系統規模擴張和長期資料積累時,頻繁操作的資料集規模在合理範圍。
分布式 分布式系統的設計
在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...
分布式系統
分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...
分布式系統
分布式,一來就直接看書,除非你有比較深厚的技術功底,要不還是很晦澀難懂的。先想想為什麼會有分布式,分布式怎麼來的。傳統的電信 銀行業,當業務量大了之後,普通伺服器cpu io 網路到了100 請求太慢怎麼辦?最直接的做法,公升級硬體,反正也不缺錢,ibm小型機,大型機,採購了堆硬體。但是網際網路不能...