分布式一致性協議(如Raft)可以使用UDP實現嗎?我認為是可以的,為什麼一般都是使用TCP實現呢?

時間 2021-05-11 17:09:20

1樓:owen

我先前被老闆壓迫改成udp組播模式,在我們的業務場景下,效能提公升不大。

基於consul的 hashcorp的raft庫改的。

2樓:nolan

raft、paxos本質上是基於邏輯時鐘概念推導出來的協議,包亂序、丟包之類本來就在協議中解決了,用tcp還是udp就看效能了,個人認為內網環境下,raft實現要通過工程上的優化達到效能極限,udp反而是更佳的選擇。raft主要的場景日誌同步過程中,由於日誌空洞不被允許,目前的實現中pipeline如果是在一條tcp長鏈結上做的話,其實效能優化是比較有限的,哪個角度來看隊頭阻塞效應都是存在的。如果網路環境不錯,用udp通訊,自己實現類似滑動視窗和快速重傳的能力,用對應更大index的回包來覆蓋前面收到的包等等手段是有很大優化空間的,進一步考慮到leader節點發起廣播的時候是不需要自己完成落盤的,pipeline可以做的很極致,follower節點落盤的時候batch化和頁對齊也能做的更高效。

當然實際情況中,batch化方面的設計對raft系統吞吐量和效能影響更大,tcp長鏈結加上合理的batch化設計已經能把效能提到很高了,是不是用udp在工程上進一步優化,可以根據實際情況來決定。

3樓:

理論上講,能夠用TCP實現的,都能夠用UDP實現,大不了你自己在應用層解決丟包、重複、亂序等問題。但是在分布式系統中,除了極少數場景,例如盡力廣播(Best Effort Broadcast),大部分問題都依賴於完美鏈路(Perfect Link),完美鏈路的性質就是不丟包、不重複、可以亂序。除了可以亂序這個性質外,其他方面與TCP很類似,所以索性就用TCP實現了。

請問分布式事務一致性與raft或paxos協議解決的一致性問題是同一回事嗎?

walon 發現這麼多人長篇大論,卻沒有人能幾句說得清楚的。兩者區別在於 分布式事務,本質上是解決所有參與節點對最終事務狀態 status succ or fail 的共識問題。跟事務其實已經關係不大了。raft協議則是通過狀態複製來實現共識問題兩者之間的關係 分布式事務可以利用 raft協議來實現...

請問raft協議到底實現了強一致性 線性一致性 還是順序一致性 如何進行證明呢?

Augustus Fengh 無論是線性一致還是順序一致,都是一種,做讀操作時,對獲取結果的 guarantee 單純的 raft,只是公式演算法,和一致性無關 但是配合其他的機制,可以做到線性和順序 1 線性 讀發往主,同時主要向所有 replica 確定,我是主,不是乙個zombie 2 順序 ...

分布式一致性演算法是如何解決少數派節點的寫順序一致性問題的

Irons Du 直接看某種業務應用系統原始碼,可能讓概念更清晰,真正的摸的著的那種實在感。 楊東東 研究過paxos類協議時確實會碰到,我之前了解了paxos後寫過總結,不是專門解釋這個,是個人覺得不太好理解的地方記錄 https zhuanlan p 23 811020 正祥 這個問題本身解決起...