分布式系統定義:建立在網絡之上的軟件系統,彼此之間通過消息傳遞進行通信和協調的系統,展現給用戶是一個統一的整體。
分布式系統架構需要解決三大問題
- 吞吐量
- 可用性
- 可擴展
什么是吞吐量?
能接收多少請求,能返回多少請求。一般單位時間內能處理多少請求,如每秒處理多少請求,一般叫QPS,如果更嚴格的QTS每秒處理事務數
這里有幾個概念表達同一件事
1.吞吐量:指QPS
2.并發量:指同一時間內的連接數
3.性能:指響應時間
這里數據來源于壓測,并發量越大,QPS也會升高,在并發量一定范圍內響應時間是不變的,當并發量無線增大時,響應時間會增高,增高到一定程度就會下降。
如何提升吞吐量?
單機性能不足需要擴容部署,多臺機器同時提供服務,形成集群部署,流量請求過來均勻的把流量分配到每臺機器。如果依然存在瓶頸,先擴容后找原因,最終決定性能的可能不是應用系統,可能是數據庫,因為它是長連接獨占的同步交互。如果數據庫性能不足,應用擴容太多也沒有用,因為最終流量都要達到數據庫中,因此數據庫也需要擴容。
總結:要想提升吞吐量,唯一解決辦法就是擴容,擴容不但解決消息堆積問題,還能提升請求耗時。
如何提升可用性?
解決可用性的唯一手段就是冗余,冗余就要解決副本與副本之間的一致性問題,分布式一致性問題就構成了分布式理論的核心,即CAP問題。
C:一致性
A:可用性
P:分區容錯性
分布式場景中當發生故障時P是必須存在,當解決一致性時無法解決可用性,當解決可用性時無法解決一致性,所以三種不都能同時滿足,只能選擇任意兩種。要么選擇CP,要么選擇AP。注意只有在發生故障時才會這么選擇,當正常場景下三種均滿足。
如何解決擴展性?
擴展性分功能擴展和集群擴展。
- 功能擴展:指業務架構的擴展
- 群集擴展:指節點擴展
- 有狀態擴展:有內存數據或數據庫擴展,擴展難
- 無狀態擴展:無數據直接擴展非常容易(推薦)
如果這篇文章對你有用,麻煩關注點贊收藏,或關注公眾號“猿碼”了解更多內容