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