Uber 架構(2)ringpop

ringpop.jpg
ringpop 是什麼
個人理解一句話分散式儲存和路由。
Uber 業務不斷擴充套件,擴充套件派遣服務
每 4 秒更新司機的位置資訊
寫操作可以達到 1,000,000次/秒
乘客查詢身邊的車輛
檢索操作:10,000次/秒
這麼大資料訪問量將會面臨以下挑戰
- 單機無法提供服務
- 有中心的機構存在單點失敗
-
通過今天介紹 ringpop 來實現無中心的架構
uber-taxi-for-web.jpg
在 ringpop 框架中伺服器是如何連線的呢
首先服務會讀取 初始列表 ,此表列出一系列服務的地址,然後服務 A 就會根據地址連線到伺服器 B

幻燈片1.JPG

幻燈片2.JPG
新伺服器是如何加入的呢
新加入的伺服器 C 會讀取 初始列表 ,連線到伺服器 A,因為伺服器 A 同時已連線伺服器 B,B 就可以通過 A 認識到 C。

幻燈片3.JPG
伺服器間的訊息傳遞
通過隨機Ping相互傳遞訊息,那麼因為是隨機,我們又是如何保證訊息同步的呢
ping的時候會檢查服務訊息的 CheckSum 如何服務間的 CheckSum 相等就說明訊息一致,如果不等就需要進行訊息同步。

幻燈片4.JPG
如何發現失敗節點
伺服器間是通過 ping 檢查是否連線正常,如何 C 發現無法連線到 A,這樣暫時不能判斷 A 服務掛掉了,有可能是 C 問題,那麼為了確定 A 是否真正掛掉了,C 會詢問小夥伴 B 問是否可以連線到 A 如果 B 也無法連線到 A,那就說明 A 掛掉了。

幻燈片5.JPG

幻燈片6.JPG
但有時候因為網路情況不好,時斷時續這種時候 C 就會根據情況先將 A 歸結為嫌疑人,最後再判斷 A 是否掛掉。

suspent.png

幻燈片7.JPG