Client根據(jù)本地共享內(nèi)存緩存的路由表,選擇對應(yīng)的AllocSvr;如果路由表不存在,隨機(jī)選擇一臺AllocSvr
對選中的AllocSvr發(fā)起請求,請求帶上本地路由表的版本號
AllocSvr收到請求,除了處理sequence邏輯外,判斷Client帶上版本號是否最新,如果是舊版則在響應(yīng)包中附上最新的路由表
Client收到響應(yīng)包,除了處理sequence邏輯外,判斷響應(yīng)包是否帶有新路由表。如果有,更新本地路由表,并決策是否返回第1步重試
基于以上的請求步驟,在本地路由表失效的時候,使用少量的重試便可以拉到正確的路由,正常提供服務(wù)。
七、總結(jié)
到此把seqsvr的架構(gòu)設(shè)計(jì)和演變基本講完了,正是如此簡單優(yōu)雅的模型,為微信的其它模塊提供了一種簡單可靠的一致性解決方案,支撐著微信五年來的高速發(fā)展,相信在可預(yù)見的未來仍然會發(fā)揮著重要的作用。