服務發現追求CP還是AP?

服務發現

生產環境中服務提供者對外提供服務,集羣裏面得ip隨時再發生改變,那麼就需要一個“通訊錄”隨時去獲取服務節點,那麼這個就是服務發現

爲什麼需要服務發現

對於服務提供者來說,契約就是接口,也就是相當於通訊錄中得名字,服務節點就是提供該服務得一個實例。服務ip集合作爲通訊錄中得地址,可以通過獲取服務ip來完成服務得發現,這就是RPC的服務發現機制。

1、服務註冊:再服務啓動的時候,將服務提供者暴露的服務註冊到註冊 中心,註冊中心將服務名稱和IP地址保存。

2、服務訂閱:再服務調用方啓動得時候,會從註冊中心拉取服務並保存到緩存,以便於下次得調用。

爲什麼不使用DNS

服務的註冊其實就是將服務名稱和IP地址進行映射,那麼將IP用域名進行替換,會不會更加方便呢?

從上圖可知:域名瀏覽先從JVM緩存進行解析,再是到本地DNS緩存中進行匹配(hosts文件),本地緩存不存在,則去DNS服務器進行匹配解析,否則則去DNS遠程服務器進行解析匹配。

但是再實際得工作過程中卻很少去使用該方式,原因在於:

  • 如果ip端口下架了,那麼這個服務節點能否即時摘除。
  • 如果之前就上線了一部分服務,這個時候需要進行擴容,新上線的節點能夠即時提供服務。

但是以上的問題答案都是否,因爲dns爲了提升性能採取了多級緩存,服務調用者不能即時感知服務節點變化。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章