多個注冊中心,其實用不同的配置對應 不同的端口號注冊就行了。
注冊中心自己也是個服務,看看之前的單個注冊中心是怎么樣的呢?
server:
port: 8888 # 服務端口
eureka:
instance:
hostname: localhost # 設置主機名
client:
registerWithEureka: false # 是否向 Eureka 注冊服務。該應用為服務注冊中心,不需要自注冊,設置為 false
fetchRegistry: false # 是否檢索服務。該應用為服務注冊中心,職責為注冊和發現服務,無需檢索服務,設置為 false
server:
waitTimeInMsWhenSyncEmpty: 0 # 設置同步為空時的等待時間。默認 5 * MINUTES
那么多個改怎么弄呢,你看上面有設置不允許自己注冊自己,所有多個注冊中心A和B....就應該相互注冊
那就看看配置吧,
application.yml
spring:
profiles:
active: mars-8764 #按-后綴默認啟動
application:
name: eureka-rigister-server
application-mars-8763.yml
server:
port: 8763 # 服務端口
eureka:
instance:
hostname: 127.0.0.1 # 設置主機名
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:8764/eureka/
register-with-eureka: false # 是否向 Eureka 注冊服務。該應用為服務注冊中心,不需要自注冊,設置為 false
fetch-registry: false # 是否檢索服務。該應用為服務注冊中心,職責為注冊和發現服務,無需檢索服務,設置為 false
application-mars-8764.yml
server:
port: 8764
eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:8763/eureka/
register-with-eureka: false
fetch-registry: false
你們看,默認啟動mars-8764,所以jar install兩次,修改active: mars-8764 為active: mars-8763再啟動一次,這樣就同時啟動了2個注冊中心,他們的之間維護的服務清單和實例會相互同步。
那么消費者的配置也得向多個注冊中心注冊,並且一個注冊中心掛了,不會影響程序運行,這樣可以實現注冊中心集群
server:
port: 8765
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:8763/eureka/,http://127.0.0.1:8764/eureka/
#(注冊中心地址,如果多個注冊中心用逗號拼接,具體可以查源碼)
spring:
application:
name: service-biz //服務名稱 yml配置文件語法是不是跟最近流行Python的語法很相似
現在我們的服務注冊中心和服務的消費者提供者都有了,其中服務發現由EureKa客戶端完成,而服務消費有Ribbon完成,Ribbon是一個基於HTTP和TCP的客戶端負載均衡器,通過輪詢訪問服務端列表實現負載聚會的,下一小節我們會具體介紹。