摘要:如果能夠在分布式系統(tǒng)中針對某一個數(shù)據(jù)項的變更成功執(zhí)行后,所有用戶都可以馬上讀取到最新的值,那么這樣的系統(tǒng)就被認為具有強一致性。
1.分布式系統(tǒng)是什么
分布式系統(tǒng):
一個硬件或軟件組件分布在不同的網(wǎng)絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協(xié)調(diào)的系統(tǒng),這是分布式系統(tǒng),在不同的硬件,不同的軟件,不同的網(wǎng)絡,不同的計算機上,僅僅通過消息來進行通訊與協(xié)調(diào)。
更細致的看這些特點又可以有:分布性、對等性、并發(fā)性、缺乏全局時鐘、 故障隨時會發(fā)生。
1.1分布性:
最顯著的特點肯定就是分布性,從簡單來看,如果我們做的是個電商項目,整個項目會分成不同的功能,專業(yè)點就不同的微服務,比如用戶微服務,產(chǎn)品微服務,訂單微服務,這些服務部署在不同的tomcat中,不同的服務器中,甚至不同的集群中,整個架構(gòu)都是分布在不同的地方的,在空間上是隨意的,而且隨時會增加,刪除服務器節(jié)點,這是第一個特性。
1.2對等性:
對等性是分布式設計的一個目標。分布式系統(tǒng)拆分了好多個服務,每個服務都可能出問題而導致整個系統(tǒng)出問題,因此每個服務一般都有備份,在服務異常時備份服務能頂替原來異常的服務.
關鍵:這就要求2個服務是完全對等的,功能完全一致.比如訂單服務,客戶服務等,其實就是服務副本的冗余.
還有一種是數(shù)據(jù)冗余,如數(shù)據(jù)庫,緩存和分布式服務一樣需要有備份存在,這就是對等性.
1.3并發(fā)性:
在分布式系統(tǒng)里面的并發(fā)就不是我們基礎學習的多線程(單JVM)了,而是更高層,從多進程多JVM角度,比如多個分布式服務可能并發(fā)操作一些共享資源,如何準確并高效的協(xié)調(diào)分布式并發(fā)操作.
1.4缺乏全局時鐘:
在分布式系統(tǒng)中,節(jié)點是可能反正任意位置的,而每個位置,每個節(jié)點都有自己的時間系統(tǒng),因此在分布式系統(tǒng)中,很難定義兩個事務糾結(jié)誰先誰后,原因就是因為缺乏一個全局的時鐘序列進行控制,當然,現(xiàn)在這已經(jīng)不是什么大問題了,已經(jīng)有大把的時間服務器給系統(tǒng)調(diào)用。
1.5故障隨時發(fā)生
任何一個節(jié)點都可能出現(xiàn)停電,死機等現(xiàn)象,服務器集群越多,出現(xiàn)故障的可能性就越大,隨著集群數(shù)目的增加,出現(xiàn)故障甚至都會成為一種常態(tài),怎么樣保證在系統(tǒng)出現(xiàn)故障,而系統(tǒng)還是正常的訪問者是作為系統(tǒng)架構(gòu)師應該考慮的。
2.1 分布式系統(tǒng)帶來的問題:
通信異常:通訊異常其實就是網(wǎng)絡異常,網(wǎng)絡系統(tǒng)本身是不可靠的,由于分布式系統(tǒng)需要通過網(wǎng)絡進行數(shù)據(jù)傳輸,網(wǎng)絡光纖,路由器等硬件難免出現(xiàn)問題。只要網(wǎng)絡出現(xiàn)問題,也就會影響消息的發(fā)送與接受過程,因此數(shù)據(jù)消息的丟失或者延長就會變得非常普遍。
網(wǎng)絡分區(qū):網(wǎng)絡分區(qū),其實就是腦裂現(xiàn)象。比如有個管理者與一些服務通信并協(xié)調(diào)服務,出于一些異常情況通信斷了,出現(xiàn)了一個臨時管理者,實際上原來的管理者還在,這樣2個管理者做同一個工作會出現(xiàn)問題
三態(tài):三態(tài)其實就是成功,與失敗以外的第三種狀態(tài),叫超時態(tài)。
在一個jvm中,應用程序調(diào)用一個方法函數(shù)后會得到一個明確的相應,要么成功,要么失敗,而在分布式系統(tǒng)中,雖然絕大多數(shù)情況下能夠接受到成功或者失敗的相應,但一旦網(wǎng)絡出現(xiàn)異常,就非常有可能出現(xiàn)超時,當出現(xiàn)這樣的超時現(xiàn)象,網(wǎng)絡通訊的發(fā)起方,是無法確定請求是否成功處理的。
節(jié)點故障: 節(jié)點故障在分布式系統(tǒng)下是比較常見的問題,指的是組成服務器集群的節(jié)點會出現(xiàn)的宕機或“僵死”的現(xiàn)象,這種現(xiàn)象經(jīng)常會發(fā)生
.
2.2 CAP理論
CAP其實就是一致性,可用性,分區(qū)容錯性這三個詞的縮寫。
C 一致性:數(shù)據(jù)在分布式環(huán)境下的多個副本之間能否保持一致性,這里的一致性更多是指強一致性;這里說的一致性和前面說的對等性其實差不多。如果能夠在分布式系統(tǒng)中針對某一個數(shù)據(jù)項的變更成功執(zhí)行后,所有用戶都可以馬上讀取到最新的值,那么這樣的系統(tǒng)就被認為具有【強一致性】。
A 可用性:分布式系統(tǒng)一直處于可用狀態(tài),對于請求總是能在有限的時間內(nèi)返回結(jié)果致性;這里的重點是【有限的時間】和【返回結(jié)果】,為了做到有限時間用到了緩存,負載均衡,為了返回結(jié)果考慮服務器主備.
P 分區(qū)容錯性:除非整個網(wǎng)絡故障,分布式系統(tǒng)在任何網(wǎng)絡或者單點故障時,仍能對外提供滿足一致性和可用性的服務;
CAP具體描述:
2.3. BASE理論
即使無法做到強一致性,但分布式系統(tǒng)可以根據(jù)自己的業(yè)務特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終的一致性;
BasicallyAvaliable基本可用:當分布式系統(tǒng)出現(xiàn)不可預見的故障時,允許損失部分可用性,保障系統(tǒng)的“基本可用”;體現(xiàn)在“時間上的損失”和“功能上的損失”;e.g:部分用戶雙十一高峰期淘寶頁面卡頓或降級處理;
Soft state軟狀態(tài):允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),既系統(tǒng)的不同節(jié)點的數(shù)據(jù)副本之間的數(shù)據(jù)同步過程存在延時,并認為這種延時不會影響系統(tǒng)可用性;e.g:12306網(wǎng)站賣火車票,請求會進入排隊隊列;
Eventually consistent最終一致性:所有的數(shù)據(jù)在經(jīng)過一段時間的數(shù)據(jù)同步后,最終能夠達到一個一致的狀態(tài);e.g:理財產(chǎn)品首頁充值總金額短時不一致;
分布式一致性算法:
常見分布式一致性算法:2p,3p,paxos,zab算法;
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77825.html
摘要:但是這些角色都是相互交叉影響的。相信對于已經(jīng)工作和遇到技術瓶頸的,在這個群里會有你需要的內(nèi)容。微服務強調(diào)將功能合理拆解,盡可能保證每個服務的功能單一,按照單一責任原則明確角色。 作為一個技術人,不知道你有沒有遇到過下面的情況? 我學不到新東西 我感覺沒啥成長 每天都在重復勞動 …… 其實,每個技術從業(yè)者,多多少少都會遇到工作或?qū)W習瓶頸期。產(chǎn)生瓶頸期,往往不是因為我們不夠努力,而是以下原...
摘要:每年設有三期線下課程,分別在月份,月份以及月份,所有線下課程將在北京總部進行。當大家完成了線下課程和全部課程考核,我們會舉辦一個充滿儀式感的結(jié)業(yè)答辯,并為順利結(jié)業(yè)的小伙伴授予專屬的結(jié)業(yè)證書。 TiDB 每一次微小進步都離不開廣大社區(qū)小伙伴們的支持,但也有很多同學反映 TiDB 是一個非常復雜的分布式數(shù)據(jù)庫系統(tǒng),如果沒有相關知識和經(jīng)驗積累,在參與之初難免會遇到各種問題。因此我們決定全面升...
閱讀 3562·2021-08-31 09:39
閱讀 1868·2019-08-30 13:14
閱讀 2931·2019-08-30 13:02
閱讀 2778·2019-08-29 13:22
閱讀 2356·2019-08-26 13:54
閱讀 778·2019-08-26 13:45
閱讀 1596·2019-08-26 11:00
閱讀 990·2019-08-26 10:58