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