Nacos 服務注冊
Nacos 服務注冊時,客戶端會將自己的信息注冊到Nicosserver上,形成key-value組合,其中key通常是服務名稱,value是實例地址信息。在二點X版本中,客戶端通過Spring Boot的擴展機制(例如web_initialized事件)和springcloud提供的抽象自動配置監聽器,將客戶端服務注冊代碼整合到服務端啟動過程中。根據服務類型,默認采用臨時節點,即會創建定時任務每5秒鐘向客戶端發動一次心跳,gRPCclient向服務端注冊,服務端則使用GRPC InstanceRequestHandler處理請求,若需持久化節點,則客戶端會使用HTP方式進行注冊,服務端通過HTTPinstancecontroller進行處理。
服務端拿到GRPC handler請求后先 集群數據同步然后注冊服務事件,用于注冊服務并將該服務推送消息給訂閱者最后用于更新元數據信息 完成注冊
nacos服務端啟動?
首先 在BaseRpcServer初始化時完成對gRPC客戶端請求的服務進行映射監聽啟動偏移量微1000的服務端與客戶端的通信端口與服務端進行注冊中心數據同步端口
然后在ConnectionManager#start()中啟動每3秒執行一次 健康檢查定時任務
Nacos 服務注冊時
Nacos 服務注冊時,客戶端會將自己的信息注冊到Nicosserver上,形成key-value組合,其中key通常是服務名稱,value是實例地址信息。客戶端通過Spring Boot的擴展機制(例如web_initialized事件)和springcloud提供的自動裝配,將Nacos-客戶端的相關配置類進行自動服務。
Nacos 服務注冊時即會創建定時任務每5秒鐘向客戶端發動一次心跳,,默認采用臨時節點,通過gRPCclient向服務端注冊,服務端拿到GRPC handler請求,則使用InstanceRequestHandler處理請求,在該方法中先進行集群數據的同步,然后發布注冊服務事件,用于注冊服務,注冊服務完成后,將該服務推送消息給訂閱者,最后更新服務的元數據信息
,若需持久化節點,則客戶端會使用HTP方式進行注冊,服務端通過HTTPinstancecontroller進行處理。
服務發現
服務發現的實現涉及到調用discoveryclient的getinstance方法,該方法最終會通過nics namingservice來獲取服務注冊的信息。如果參數值為true,則不僅獲取服務數據,還會訂閱服務的變化;若為false,則僅發起一次RPC請求獲取服務數據。當服務發現調用成功后,客戶端會從服務端獲取到服務信息(serviceinfo),其中包含了服務名稱以及對應的所有實例信息。這些實例信息會被封裝并返回給調用方,以便進行本地緩存和后續的業務處理。