為什么需要注冊中心?是用 Eureka 還是 Nacos?
點擊關注公眾號,Java干貨及時送達
為什么要使用注冊中心
有使用過ip:port地址直接調用服務的開發(fā)經(jīng)歷么?該段痛苦的經(jīng)歷在此處省略500字......,該種方式的缺點:
使用注冊中心能夠實現(xiàn)服務治理,服務動態(tài)擴容,以及服務調用的負載均衡,完整調用鏈路示例如下:

服務提供者:向注冊中心根據(jù)服務名稱提供服務訪問的ip:port以及其他信息。 注冊中心:根據(jù)服務名稱,存儲對應的ip:port以及其他信息。 服務消費者:根據(jù)服務名向注冊中心獲取調用服務的ip:port以及其他相關的信息集合,然后根據(jù)負載均衡策略獲取最終的服務器ip:port訪問地址。
使用springcloud時,常用的是eureka和nacos作為注冊中心,如何選擇呢?
推薦一個 Spring Boot 基礎教程及實戰(zhàn)示例:https://github.com/javastacks/spring-boot-best-practice
Eureka注冊中心
架構原理圖如下:

服務提供者
主動向注冊中心注冊,續(xù)約,下線,獲取注冊表。服務注冊成功后,定時向注冊中心發(fā)送心跳,保證服務不被剔除。最新面試題整理好了,大家可以在Java面試庫小程序在線刷題。
注冊中心
后續(xù),復盤,應該Eureka的自我保護機制,導致的問題。在注冊中心注冊的服務是一個不可用的服務,但是,由于自我保護機制,Eureka Server沒有將無效的服務剔除。
后續(xù)的解決方法是,設置enableSelfPreservation=false關閉自我保護機制,把renewalPercentThreshold 比例降低,在Eureka Server端,如果出現(xiàn)無效的服務就會將該服務剔除。Spring Boot 學習筆記分享給你。
nacos注冊中心
nacos是springcloud的擴展,注冊中心功能通過NacosDiscoveryClient 繼承DiscoveryClient,在springcloud中,與Eureka可以無侵入的切換。注冊中心可以手動剔除服務實例,通過消息通知客戶端更新緩存的實例信息,完整調用鏈路示例如下:

在spring cloud中引入nacos時,參考官網(wǎng)匹配具體的版本,如圖:

nacos重點需要了解下其領域模型Nacos 數(shù)據(jù)模型 Key 由三元組唯一確定, Namespace命名空間,分組group,service服務。詳情可以參考官網(wǎng)Nacos 架構。
Nacos與Eureka相比優(yōu)勢如下:
nacos在自動或手動下線服務,使用消息機制通知客戶端,服務實例的修改很快響應;Eureka只能通過任務定時剔除無效的服務。 nacos可以根據(jù)namespace命名空間,DataId,Group分組,來區(qū)分不同環(huán)境(dev,test,prod),不同項目的配置。
原文鏈接:https://blog.csdn.net/new_com/article/details/112633748
版權聲明:本文為CSDN博主「iloveoverfly」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

關注Java技術棧看更多干貨

