中心化和去中心化:
分布式的架構中,同乙個服務會部署若干服務節點,在面對具體服務請求時,怎麼決定由哪個節點來提供服務,根據實現方案分為中心化和去中心化兩種方式。
中心化
在開源中介軟體codis的集群組網中,應用對快取節點的訪問都通過codis的proxy**,由**來決定資料儲存到哪個節點上:
這種分布式的組網架構就是中心化的組網,由統一的中心codis-proxy進行排程。我司使用的zk/dubbo架構也屬於中心化的組網,zk作為服務的註冊中心。
去中心化
開源中介軟體redis的集群模式組網中(非我司使用的哨兵模式),沒有中心節點,所有節點處於對等地位:
這種分布式的組網架構中,由節點間兩兩相互進行狀態確認,根據演算法集體決策出服務的提供方。
節點規模的因素
去中心化中,每個節點需要與其它所有節點進行狀態確認,節點部署規模小的情況下,整個過程還算快捷。但當節點規模超大時,節點間互動過程會隨節點數指數增長,整個過程會複雜漫長而不可控。
中心化的組網架構中,服務統一進行管理,管理邏輯相對簡單和穩定,特別適用於大規模節點部署的情況。
中心節點單點故障的風險
中心化的設計存在的最大問題是中心節點的安危問題,如果中心節點出了問題,整個集群就奔潰了。為了解決這個問題,大多數中心化系統都採用了主備兩個「中心節點」的設計方案,例如圖3中兩台codis-proxy本身採用的是負荷分擔方式;
中心化帶來的效能影響
中心化的設計中,對服務的訪問往往需要先經過中心節點,會帶來額外的該問路徑,造成額外的效能開銷,例如codis和redis底層儲存節點都一樣,但是不同組網架構中,coides效能明顯差於redis的集群模式。
換存型別
value長度
set速率(條/s)
get速率(條/s)
redis
10032449
38013
50029743
36855
1000
24245
33395
codis
10018524
18709
50017481
18368
1000
15523
16981
沒有絕對的去中心化
實際上,完全意義的真正去中心化的分布式系統並不多見。相反,外部開來去中心化單工作機制採用了中心化設計思想的分布式系統正在不斷湧出。在這種架構下,集群中的領導是被動態選擇出來的,而不是認為預先置頂的,而且集**生故障的情況下,集群的成員會自發的舉行「會議」選舉新的「領導」主持工作。最典型的案例就是zookeeper。
腦裂問題
去中心化設計裡最難解決的乙個問題是「腦裂」問題,這種情況的發生概率很低,但影響很大。腦裂指乙個集群猶豫網路的故障,被分為至少兩個彼此無法通訊的單獨集群,此時如果兩個集群都各自工作,則可能會產生嚴重的資料衝突何錯誤。一般的設計思路是,當集群半段發生了腦裂問題是,規模較小的集群就「自殺」或者拒絕服務。
區塊鏈去中心化和傳統去中心化有什麼區別?
區塊鏈引導網際網路技術潮流一來,我們聽得最多的與區塊鏈打包出現的詞非去中心化莫屬了,那什麼是去中心化,什麼又是中心化呢?他們間有什麼區別呢?通俗地講,中心化就是乙個或多個重要級別的領導講話,所有其他人只能參與聽,領導講話你是不能插嘴的。以前的門戶 是中心化。而去中心化就是每個人都可以講話,都可以選擇...
豆瓣的去中心化
都想著方法去黏住使用者,所以現在的網際網路熙熙攘攘,喧鬧嘈雜。我們總是去嘗試著那些最新的應用,我們痴迷於最尖端的技術,我們熱衷於最流行的八卦 儘管它們中的很多其實是專門為我們設計的 這樣的體驗你感覺好嗎?至少我的感覺很不好。我展望乙個更為清淨的網際網路,正如文中的前半段所說,我們應該也有 不被人隨時...
務實的去中心化
建立非盈利性的公司 在法律文書中,將資產作為解開功能特性的應用代幣 將你的資產放到mercury這樣的去中心化交易所裡。這是乙個務實的開始,可能也是有效去中心化所必須做的全部事情。這樣你就可以把去中心化交易在法律上的雷區全都交給交易者自己去處理了。交易是去中心化的,所以無法關掉,不過訂單匹配伺服器可...