分散式基礎通訊協議:paxos,totem和gossip
背景:
在分散式中,最難解決的一個問題就是多個節點間資料同步問題。為了解決這樣的問題,湧現出了各種奇思妙想。只有在解決了如何進行資訊同步的基礎之上才衍生出形形色色的應用。這裡開始介紹幾種分散式通訊協議。簡單即有效——totem協議:
totem協議也許你還比較陌生,但是corosync就是totem協議的一個開源實現。比較火的HA軟體pacemaker就是基於corosync來提供各種服務的。說起totem協議,最簡單的形象就是,他將多個節點組成一個令牌環。多個節點手拉手形成一個圈,大家依次的傳遞token。只有獲取到token的節點才有傳送訊息的權利。簡單有效的解決了在分散式系統中各個節點的同步問題,因為只有一個節點會在一個時刻傳送訊息,不會出現衝突。當然,如果有節點發生意外時,令牌環就會斷掉,此時大家不能夠通訊,而是重新組建出一個新的令牌環。進化的二段提交——paxos協議:
奇思妙想——gossip協議:
基礎協議的對比:
簡單的介紹了這幾種協議,下面我們來看看他們的對比:基礎協議 | paxos | totem | gossip |
資料同步 | 第一階段: proposer 選擇一個提案編號 n 並將 prepare 請求傳送給acceptors 中的一個多數派;acceptor 收到 prepare 訊息後,如果提案的編號大於它已經回覆的所有 prepare 訊息,則 acceptor 將自己上次的批准回覆給 proposer並承諾不再批准小於 n 的提案。 第二階段: 當一個 proposor 收到了多數 acceptors 對 prepare 的回覆後,就進入批准階段。它要向回覆 prepare 請求的acceptors 傳送 accept 請求,包括編號 n 和根據 P2c 決定的 value(如果根據 P2c 沒有決定 value,那麼它可以自由決定 value)。在不違背自己向其他 proposer 的承諾的前提下,acceptor 收到 accept 請求後即批准這個請求。 |
1.通訊方式。 當叢集有節點要發起通訊時,需要等待token。當拿到token後,先廣播這次需要傳送的資料,然後傳遞token來確認所有人都接收到訊息。 如果確認成功,釋放token。 2.節點的加入和退出。 當叢集中有節點加入時,加入的節點廣播一個加入資訊,所有人都開始廣播自己的資訊,當所有人都獲得同伴資訊,開始由id最小的人提交一個token,交由所有節點確認。 如果都確認後,則節點正式加入,開始正常執行。 當叢集有節點退出時,由於令牌環斷鏈,觸發token超時,則同樣開始廣播資訊,然後由最小id提交token,經過確認後恢復正常。 |
gossip協議有多種實現,這裡說一個例子當節點啟動時,讀配置檔案,然後向一個seed傳送資訊,進行資訊同步,然後開始沒秒都隨機選擇一個seed節點來同步資訊 1、隨機取一個當前活著的節點,並向它傳送同步請求 2、向隨機一臺不可達的機器傳送同步請求 3、如果第一步中所選擇的節點不是seed,或者當前活著的節點數少於seed數,則向隨意一臺seed傳送同步請求 |
資料一致性 | 強一致性 | 強一致性 | 最終一致性 |
相關應用 | zookeeper | corosync | Cassandra |
優點 | 可以很好的解決通訊一致性問題,在叢集規模上比corosync要略大一些 | 簡單方便,按照協議實現後就可以直接使用 | 協議本身簡單,組網規模幾乎不受限制,通訊效能好 |
缺點 | 理論性太強,如果要實際使用,還是需要進行優化 | 使用了廣播包,對於跨域傳送有影響,而且令牌環本身帶來的問題使得組網規模不大 | 不能提供傳統的資料一致性服務,在傳輸中佔用較多的網路流量 |
相關推薦
分散式基礎通訊協議:paxos,totem和gossip
背景: 在分散式中,最難解決的一個問題就是多個節點間資料同步問題。為了解決這樣的問題,湧現出了各種奇思妙想。只有在解決了如何進行資訊同步的基礎之上才衍生出形形色色的應用。這裡開始介紹幾種分散式通訊協議。 簡單即有效——totem協議: totem協議也許你還比較陌生,但是corosync就是to
趣談網路協議-通訊協議綜述-DHCP和PXE
動態主機配置協議HDCP(Dynamic Host Configuration Protocol) DHCP協議的請求流程 DHCP的工作流程1.客戶端會以廣播的方式傳送一個請求2.伺服器收到資料報之後也會以廣播的方式迴應,迴應的資料包裡面包含了要分配的IP3.客戶端以廣播的
Kafka 溫故(三):Kafka的內部機制深入(持久化,分散式,通訊協議)
一.Kafka的持久化 1.資料持久化: 發現線性的訪問磁碟(即:按順序的訪問磁碟),很多時候比隨機的記憶體訪問快得多,而且有利於持久化; 傳統的使用記憶體做為磁碟的快取 Kafka直接將資料寫
01分散式基礎(二)-分散式通訊協議分析
分散式通訊協議分析 網路協議: TCP/IP 和UDP/IP TCP/IP TCP的五層模型 OSI的七層模型 3次握手協議 4次揮手協議 TCP通訊原理 分散式Java應用
01分散式基礎(四)-分散式通訊協議-http
分散式通訊協議-http HTTP協議的概述 報文 狀態碼 快取 HTTPS 第一步, 使用對稱加解密 第二步,金鑰是公開的,所有的客戶端都可以拿到 第三步 針對不同的客戶端使用不同的金鑰 第四步:使用非對
分散式架構基礎-TCP/IP 通訊協議
一個http請求,在整個網路中的請求過程 當應用程式用TCP傳送資料時,資料被送入協議棧中,然後逐個通過每一層直到被當作一串位元流送入網路,其中每一層對收到的資料都要增加一些首部資訊。 當目的主機收到一個乙太網資料幀時,資料就開始從協議棧中由底向上升,同
# 2017-2018-1 20155318 《信息安全系統設計基礎》 實驗五 通訊協議設計
應用程序 .cn 代碼 下使用 申請 只讀 genrsa 關閉 accept 2017-2018-1 20155318 《信息安全系統設計基礎》 實驗五 通訊協議設計 Linux下OpenSSL的安裝與測試 任務要求:在Ubuntu中完成 http://www.cnblo
2017-2018-1 20155317《信息安全系統設計基礎》 實驗五 通訊協議設計
pthread set 申請 gac process 在一起 href main fun 2017-2018-1 20155317《信息安全系統設計基礎》 實驗五 通訊協議設計 實驗要求 任務 安裝OpenSSL環境,並編寫測試代碼驗證無誤研究OpenSSL算法,測試
20155325 2017-2018 1 《信息安全系統設計基礎》實驗五 通訊協議設計
inux tps rime 影響 收信 alt 完整 man 輸出 實驗五 通訊協議設計-1 實驗要求 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作業 提交運行結果截圖 實驗截圖 碼雲鏈接 link
Raft算法和Gossip協議
壓力 清除 獲取 定時 加入集群 特點 images 發送 兩種 簡單介紹下集群數據同步,集群監控用到的兩種常見算法。 Raft算法 raft 集群中的每個節點都可以根據集群運行的情況在三種狀態間切換:follower, candidate 與 leader。leade
深入剖析 Web 伺服器與 PHP 應用之間的通訊機制 - 掌握 CGI 和 FastCGI 協議的執行原理
本文首發於 深入剖析 Web 伺服器與 PHP 應用之間的通訊機制 - 掌握 CGI 和 FastCGI 協議的執行原理,轉載請註明出處! 身為一名使用 PHP 語言開發後端服務的程式猿,我們每天都和 PHP 以及 Web 伺服器產生無數次的親密接觸。得益於它們,我們才能
詳細剖析I2C和SPI通訊協議的區別
原文連結:http://m.elecfans.com/article/610220.html 1. 概述I2C與SPI協議 IIC vs SPI現今,在低端數字通訊應用領域,我們隨處可見IIC (Inter-Integrated Circuit) 和 SPI (Serial
01分散式基礎(三)-分散式通訊-序列化
分散式通訊-序列化 java序列化機制Serialize介面 java本身的序列化機制存在的問題 序列化和反序列化的概念 怎麼去實現一個序列化操作 擴充套件 serialVersionUID的作用 靜態
分散式一致性協議Paxos
轉自:https://blog.csdn.net/qq_35440678/article/details/78080431 什麼是paxos協議? Paxos用於解決分散式系統中一致性問題。分散式一致性演算法(Consensus Algorithm)是一個分散式計算領域的基礎性
day27 網路通訊協議, tcp和udp, 緩衝區, subprocess
1. 網際網路協議: 本質是一系列的網路協議 連線兩臺計算機之間的internet實際上是一系列統一的標準, 這些標準稱為網際網路協議, 網際網路的本質也是一系列協議, 總稱"網際網路協議" (Internet Protocol Suite
01分散式基礎(六)-分散式通訊框架-webservice
分散式通訊框架-webservice 什麼是webservice 為什麼要使用webservice 什麼時候要去使用webservice webservice中的一些概念 WSDL(web service definition lang
01分散式基礎(五)-分散式通訊框架-rmi
分散式通訊框架-RMI 回顧 分散式通訊框架-RMI RPC 什麼是RPC 一個RPC框架包含的要素 RMI的概述 如何實現一個RMI程式 如果自己要去實現一個RMI
20165328 20165319《資訊安全系統設計基礎》實驗五通訊協議設計
任務一 •在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作業 •提交執行結果截圖 瞭解學習openssl: OpenSSL簡介 OpenSSL是一個SSL協議的開源實現,採用C語言作為開發語言,具備了跨平
20165304資訊安全系統設計基礎》實驗五 通訊協議設計
資訊安全系統設計基礎》實驗五 通訊協議設計 實驗要求: 任務一:Linux下OpenSSL的安裝與使用 1、基於Socket實現TCP通訊,一人實現伺服器,一人實現客戶端 2、研究OpenSSL演算法,測試對稱演算法中的AES,非對稱演算法中的RSA,Hash演算法中的MD5 3、選用合適的演算法,基於混
20165301 20165304 20165314《資訊安全系統設計基礎》實驗五通訊協議設計
任務一 •在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作業 •提交執行結果截圖 瞭解學習openssl: OpenSSL簡介 OpenSSL是一個SSL協議的開源實現,採用C語言作為開發語言,具備了跨平臺的能力,支援Unix/Linux