什么是分布式系統(tǒng)
曲阜ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!分布式系統(tǒng)(distributed system)具有高度的內(nèi)聚性 和透明性。
內(nèi)聚性:每一個節(jié)點高度自治,有本地的數(shù)據(jù)庫管理系統(tǒng);
透明性:每一個數(shù)據(jù)庫分布節(jié)點對用戶來說是透明的,用戶是感覺不到"分布"的,即用戶不需要知道關(guān)系是否分割、有無副本、數(shù)據(jù)位于哪個節(jié)點、事物在哪個站點上執(zhí)行等;
CAP原理
c:一致性(Consistency)
在分布式系統(tǒng)中的所有數(shù)據(jù)備份,在同一時刻是否同樣的值;
a:可用性(Availability)
在集群中一部分節(jié)點故障后,集群整體是否還能響應(yīng)客戶端的讀寫請求;
p: 分區(qū) 容忍性(Partition Rolerance)
分區(qū)相當(dāng)與對通信的時限要求,消息體如果不能在時限內(nèi)達(dá)成數(shù)據(jù)一致性,意味著發(fā)生了分區(qū)的情況。
因此分區(qū)容忍性是基本要求,否則就失去了價值。因此分布式數(shù)據(jù)系統(tǒng),就是在一致性和可用性之間取一個平衡。對于大多數(shù)的web應(yīng)用,并不需要強一致性,通常做法是以強一致性為代價換取高可用,這也是多數(shù)分布式數(shù)據(jù)庫產(chǎn)品的方向。
這里的犧牲一致性,指的是不再要求關(guān)系型數(shù)據(jù)庫中的強一致性,只要能達(dá)到最終一致性即可,這個時間窗口對用戶來說是透明的,用戶是感知不到的。通常的做法,是通過多份異步復(fù)制來實現(xiàn)系統(tǒng)的高可用和數(shù)據(jù)的最終一致性,時間窗口取決于數(shù)據(jù)復(fù)制到一致狀態(tài)的時間。
關(guān)于最終一致性
一致性問題是因為出現(xiàn)了并發(fā)的讀操作或者寫操作。對于客戶端,多進(jìn)程并發(fā)訪問時,更新過的數(shù)據(jù)在不同進(jìn)程中如何獲取的不同策略,決定了不同的一致性。
強一致性:對于關(guān)系型數(shù)據(jù)庫,要求更新過的數(shù)據(jù)能被后續(xù)的訪問都能看到;
弱一致性:如果容忍后續(xù)的部分或者全部訪問不到,這就是弱一致性;
最終一致性:如果經(jīng)過一段時間之后,要求能夠訪問到更新后的數(shù)據(jù),就是最終一致性;
從數(shù)據(jù)的同步看強弱一致性
對于服務(wù)器而言,如何盡快將更新后的數(shù)據(jù)分布到整個系統(tǒng),降低最終一致性的時間窗口,對分布式系統(tǒng)來說是十分重要的。
我們假設(shè),現(xiàn)在有一個分布式系統(tǒng),數(shù)據(jù)保存了 N 份,更新數(shù)據(jù)需要保證寫完成的節(jié)點數(shù)為 W ,讀取數(shù)據(jù)時需要讀取的節(jié)點數(shù)為 R :
如果 W+R > N, 說明讀寫節(jié)點重復(fù),則是強一致性,如一主一備同步復(fù)制的關(guān)系型數(shù)據(jù)庫;
如果 W+R <= N, 則是弱一致性,比如一主一備異步復(fù)制的數(shù)據(jù)庫,讀取備庫,可能無法讀取主庫已經(jīng)更新過的數(shù)據(jù)。
對于分布式數(shù)據(jù)庫而言,為了保證高可用,一般設(shè)置 N >= 3。
分布式系統(tǒng)架構(gòu)思路
兩種思路
1. 現(xiàn)在有一臺服務(wù)器,一臺服務(wù)器可以處理 100w/s 的請求,隨著業(yè)務(wù)增長,據(jù)估算,訪問量高會達(dá)到 200w/s ,如果不進(jìn)行處理,服務(wù)器會拒絕訪問,甚至?xí)?出現(xiàn)宕機。最簡單的方案,就是再增加一臺機器(在實際環(huán)境中,增加機器來解決問題是常用的一種解決方案),每臺機器承擔(dān)一半的請求,如果訪問量繼續(xù)增加的話,可以繼續(xù)通過增加機器來解決問題。這就是水平擴展。這里暫時不討論如何進(jìn)行負(fù)載的均衡;
2. 現(xiàn)在有一個應(yīng)用對外提供項服務(wù),每項服務(wù)都是一個請求,當(dāng)前服務(wù)器可以承擔(dān) 100w/s 的請求,目前統(tǒng)計, A 服務(wù) 40w/s , B 服務(wù) 40w/s。業(yè)務(wù)同樣擴大,服務(wù) A 和服務(wù) B 的請求都增加了一倍,有需要進(jìn)行擴展。使用兩臺機器進(jìn)行平分,每臺機器承擔(dān)服務(wù) A 和服務(wù) B 各一半,平分的話太復(fù)雜,不如一臺機器只負(fù)責(zé)服務(wù) A, 亮一臺機器只負(fù)責(zé)業(yè)務(wù) B,這種方式叫做垂直擴展。
簡單對水?dāng)U展和垂直擴展進(jìn)行總結(jié),可以發(fā)現(xiàn),按照業(yè)務(wù)進(jìn)行拆分,即是垂直擴展;按請求進(jìn)行拆分,即水平擴展。
負(fù)載均衡
負(fù)載均衡要做的任務(wù),就是確定客戶端的請求,應(yīng)該發(fā)往分布式系統(tǒng)中的哪一臺服務(wù)器上,通常的做法,就是通過一臺中間服務(wù)器,來實現(xiàn)請求的分配。
常見的負(fù)載均衡策略:
1. FastDFS 分布式系統(tǒng):client 向 tracker 詢問一臺可以進(jìn)行文件下載的 storage ,tracker 返回一臺可用的 storage,client 直接和 storage 進(jìn)行通信完成文件下載;
這里的tracker 就是負(fù)載均衡服務(wù)器;
2. 分布式RPC中間件 Hedwig:client 向 zookeeper詢問哪臺服務(wù)器可以執(zhí)行請求;zookeeper 返回一臺可用的 server;client 直接和 service 完成通信。
zookeeper 是分布式系統(tǒng)中一個負(fù)載均衡框架,Google 的 chubby 的一個開源實現(xiàn),是 Hadoop 和 Hbase 的重要組件
3. nginx也是一個負(fù)載均衡服務(wù)器,面向的是分布式web服務(wù)器
負(fù)載均衡調(diào)度算法
1. 輪詢
使用這種方式,所有標(biāo)記進(jìn)入虛擬服務(wù)的服務(wù)器應(yīng)該有相近的資源容量以及負(fù)載形同的應(yīng)用程序。
2. 加權(quán)輪循(Weighted Round Robin)
解決了輪詢的缺點,提前為每臺服務(wù)器根據(jù)資源及能力大小分配權(quán)重,傳入的請求按順序,根據(jù)權(quán)重,順序分配給集群中的服務(wù)器。
3. 最少連接數(shù)
上面兩種方式,都不能夠確定系統(tǒng)不能識別在給定的時間里保持了多少連接。由于不同連接處理的時間不同,可能發(fā)生服務(wù)器 A 上處理的連接少于 B,但是A已經(jīng)超載,因為A上用戶打開連接持續(xù)的時間更長。
這種潛在的問題,可以通過“最少連接數(shù)”算法來避免,客戶端的請求是根據(jù)每臺機器當(dāng)前打開的連接數(shù)來分配的,即活躍連接數(shù)最少的服務(wù)器會自動接收下一個傳入的請求。
與簡單輪詢一樣,每臺服務(wù)器也需要有相近的資源容量以及負(fù)載形同的應(yīng)用程序;需要注意的是,在流量率低的配置環(huán)境中,個服務(wù)器的流量并不相同,會有限考慮第一臺服務(wù)器。
4. 加權(quán)最少連接
如果服務(wù)器資源容量各不相同,那么“加權(quán)最少連接”更為合適。這種分配方式結(jié)合了連接和權(quán)重兩者的優(yōu)勢,大多數(shù)情況下,這是一種相當(dāng)公平的算法。
同樣,這種方式需要和最少連接數(shù)注意相同的問題。
5. 最少連接數(shù)慢啟動時間
對于方式 3 和方式 4 來說,當(dāng)集群中新增一個節(jié)點后,可以為其配置一個時間段,這個段時間內(nèi)連接數(shù)是有限制的,而且是緩慢增加的,這為服務(wù)器提供了一個“過度時間”。
6. 源 IP 哈希
通過生成源 IP 的哈希值,并通過這個哈希值來找到正確的真實服務(wù)器,意味著對于同一主機的請求,對應(yīng)的服務(wù)器總是相同的,但是這種方式會導(dǎo)致服務(wù)器負(fù)載不均衡。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。