spring cloud - nacos 原始碼
阿新 • • 發佈:2022-12-09
Nacos核心功能點
服務註冊:Nacos Client會通過傳送REST請求的方式向Nacos Server註冊自己的服務,提供自身的元資料,比如ip地址、埠等資訊。Nacos Server接收到註冊請求後,就會把這些元資料資訊儲存在一個雙層的記憶體Map中。
服務心跳:在服務註冊後,Nacos Client會維護一個定時心跳來持續通知Nacos Server,說明服務一直處於可用狀態,防止被剔除。預設5s傳送一次心跳。
服務健康檢查:Nacos Server會開啟一個定時任務用來檢查註冊服務例項的健康情況,對於超過15s沒有收到客戶端心跳的例項會將它的healthy屬性置為false(客戶端服務發現時不會發現),如果某個例項超過30秒沒有收到心跳,直接剔除該例項(被剔除的例項如果恢復傳送心跳則會重新註冊)
服務發現 :服務消費者(Nacos Client)在呼叫服務提供者的服務時,會發送一個REST請求給Nacos Server,獲取上面註冊的服務清單,並且快取在Nacos Client本地,同時會在Nacos Client本地開啟一個定時任務定時拉取服務端最新的登錄檔資訊更新到本地快取
服務同步:Nacos Server叢集之間會互相同步服務例項,用來保證服務資訊的一致性。
Nacos服務登錄檔結構:Map<namespace, map<group::servicename,="" service="">>
舉例說明:
原始碼相關流程參考:
https://www.processon.com/view/link/6392f5540791296d78828371