圖解 | 注冊發(fā)現(xiàn)核心原理提煉
作者: 梁勇
通過對Nacos注冊與發(fā)現(xiàn)源碼閱讀,將其核心原理歸納提煉。包含:注冊、發(fā)現(xiàn)、節(jié)點(diǎn)之間通信、健康檢查類型。
引言
通過對Nacos注冊與發(fā)現(xiàn)源碼閱讀,將其核心原理歸納提煉。包含:注冊、發(fā)現(xiàn)、節(jié)點(diǎn)之間通信、健康檢查類型。
一、服務(wù)注冊原理
當(dāng)客戶端發(fā)起注冊時,注冊原理邏輯見下圖,進(jìn)一步簡化主要有:
- 將新注冊的實(shí)例信息推送給訂閱該服務(wù)的訂閱者
- 將新注冊的實(shí)例信息增量同步給集群中的其他節(jié)點(diǎn)
二、服務(wù)發(fā)現(xiàn)原理
服務(wù)發(fā)現(xiàn)的邏輯進(jìn)一步簡化為:
- 定時從注冊中心查詢最新服務(wù)實(shí)例列表信息
- 定時頻率通常為6秒,發(fā)生異常為60秒
三、集群節(jié)點(diǎn)通信原理
集群中節(jié)點(diǎn)通信原理可以進(jìn)一步簡化為:
- 每個節(jié)點(diǎn)用于全量的注冊快照信息
- 新節(jié)點(diǎn)加入集群時會從集群中某節(jié)點(diǎn)發(fā)起全量同步
- 節(jié)點(diǎn)之間每隔5秒校驗(yàn)緩存的注冊快照信息
- 節(jié)點(diǎn)之間每隔2秒進(jìn)行一輪健康檢查用于關(guān)閉/新建/刷新gRPC連接
四、健康檢查類型與場景
健康檢查類型與場景進(jìn)一步可以簡化為:
- 臨時節(jié)點(diǎn)通過gRPC連接保鮮實(shí)現(xiàn),保鮮頻率為5秒
- 臨時節(jié)點(diǎn)注冊使用Distro協(xié)議,持久節(jié)點(diǎn)注冊使用Raft協(xié)議
- 持久節(jié)點(diǎn)支持客戶端心跳和服務(wù)端探活兩種方式
- 持久節(jié)點(diǎn)探活支持HTTP、TCP等探活類型
本文轉(zhuǎn)載自微信公眾號「瓜農(nóng)老梁」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系瓜農(nóng)老梁公眾號。
責(zé)任編輯:武曉燕
來源:
瓜農(nóng)老梁