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