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