4--SpringCloud搭建高可用的服務註冊中心 1--SpringCloud的服務註冊與發現Eureka 1--SpringCloud的服務註冊與發現Eureka 1--SpringCloud的

  咱們已經介紹了1--SpringCloud的服務註冊與發現Eureka,其中,主要演示瞭如何構建和啓動服務註冊中心Eureka Server,以及如何將服務註冊到Eureka Server中,可是在以前的示例中,這個服務註冊中心是單點的,顯然這並不適合應用於線上生產環境,那麼下面在前文的基礎上,咱們來看看該如何構建高可用的Eureka Server集羣。html

準備

  若是您還不熟悉如何構建服務中心和註冊服務,請先閱讀1--SpringCloud的服務註冊與發現Eurekagit

Eureka Server的高可用

  Eureka Server除了單點運行以外,還能夠經過運行多個實例,並進行互相註冊的方式來實現高可用的部署,因此咱們只須要將Eureke Server配置其餘可用的serviceUrl就能實現高可用部署。spring

  下面以中1--SpringCloud的服務註冊與發現Eureka的eureka-server爲基礎,對其改造,構建雙節點的服務註冊中心。app

 

建立application-peer1.properties文件微服務

  做爲peer1服務中心的配置,並將serviceUrl指向peer2post

spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1

eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/

 

建立application-peer2.properties文件url

  做爲peer2服務中心的配置,並將serviceUrl指向peer1spa

spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

 

修改host文件3d

  Windows:C:\Windows\System32\drivers\etc               Linux:/etc/hostscode

127.0.0.1 peer1
127.0.0.1 peer2

 

經過修改 application.properties裏面的spring.profiles.active屬性來分別啓動peer1和peer2 

 

 

  此時訪問peer1的註冊中心:http://localhost:1111/,以下圖所示,咱們能夠看到registered-replicas中已經有peer2節點的eureka-server了。一樣地,訪問peer2的註冊中心:http://localhost:1112/,能看到registered-replicas中已經有peer1節點,而且這些節點在可用分片(available-replicase)之中。咱們也能夠嘗試關閉peer1,刷新http://localhost:1112/,能夠看到peer1的節點變爲了避免可用分片(unavailable-replicas)。

 

服務註冊與發現

   在設置了多節點的服務註冊中心以後,咱們主須要簡單需求服務配置,就能將服務註冊到Eureka Server集羣中。咱們以1--SpringCloud的服務註冊與發現Eureka中的eureka-service爲基礎,修改application.properties配置文件:   

#指定微服務的名稱後續在調用的時候只須要使用該名稱就能夠進行服務的訪問。
spring.application.name=compute-service
server.port=2222
#屬性對應服務註冊中心的配置內容,指定服務註冊中心的位置。
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

  上面的配置主要對eureka.client.serviceUrl.defaultZone屬性作了改動,將註冊中心指向了以前咱們搭建的peer1與peer2。

 

  下面,咱們啓動該服務,經過訪問http://localhost:1111/http://localhost:1112/,能夠觀察到compute-service同時被註冊到了peer1和peer2上。若此時斷開peer1,因爲compute-service同時也向peer2註冊,所以在peer2上其餘服務依然能訪問到compute-service,從而實現了高可用的服務註冊中心。

深刻理解

雖然上面咱們以雙節點做爲例子,可是實際上因負載等緣由,咱們每每可能須要在生產環境構建多於兩個的Eureka Server節點。那麼對於如何配置serviceUrl來讓集羣中的服務進行同步,須要咱們更深刻的理解節點間的同步機制來作出決策。

Eureka Server的同步遵循着一個很是簡單的原則:只要有一條邊將節點鏈接,就能夠進行信息傳播與同步。什麼意思呢?不妨咱們經過下面的實驗來看看會發生什麼。

  • 場景一:假設咱們有3個註冊中心,咱們將peer一、peer二、peer3各自都將serviceUrl指向另外兩個節點。換言之,peer一、peer二、peer3是兩兩互相註冊的。啓動三個服務註冊中心,並將compute-service的serviceUrl指向peer1並啓動,能夠得到以下圖所示的集羣效果。

訪問http://localhost:1112/,能夠看到3個註冊中心組成了集羣,eureka-service服務經過peer1同步給了與之互相註冊的peer2和peer3。

經過上面的實驗,咱們能夠得出下面的結論來指導咱們搭建服務註冊中心的高可用集羣:

  • 兩兩註冊的方式能夠實現集羣中節點徹底對等的效果,實現最高可用性集羣,任何一臺註冊中心故障都不會影響服務的註冊與發現

 獲取源碼: 4--SpringCloud搭建高可用的服務註冊中心

相關文章
相關標籤/搜索