1.Eureka基礎架構
Eureka架構中的三個核心角色:
-
服務註冊中心
Eureka的服務端應用,提供服務註冊和發現功能,就是剛剛我們建立的eureka-server-7001 -
服務提供者
提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,只要對外提供的是Rest風格服務即可。本例中就是我們實現的springcloud-demo -
服務消費者
消費應用從註冊中心獲取服務列表,從而得知每個服務方的信息,知道去哪裏調用服務方。本例中就是我們實現的springcloud-demo-consumer
2.高可用的Eureka Server
Eureka Server即服務的註冊中心,在剛纔的案例中,我們只有一個EurekaServer,事實EurekaServer也可以是一個集羣,形成高可用的Eureka中心。
Eureka Server除了單點運行之外,還可以通過運行多個實例,並進行互相註冊的方式來實現高可用的部署。所以我們只需要將Eureke Server配置其他可用的 serviceUrl 就能實現高可用部署。
服務同步
多個Eureka Server之間也會互相註冊爲服務,當服務提供者註冊到Eureka Server集羣中的某個節點時,該節點會把服務的信息同步給集羣中的每個節點,從而實現數據同步。因此,無論客戶端訪問到Eureka Server集羣中的任意一個節點,都可以獲取到完整的服務列表信息。
動手搭建高可用的EurekaServer
我們假設要搭建兩條EurekaServer的集羣,端口分別爲:7001、7002、7003
1)我們修改原來的EurekaServer配置-7001:
server:
port: 7001 # 端口
spring:
application:
name: eureka-server-7001 # 應用名稱,會在Eureka中顯示
eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false # 是否註冊自己的信息到EurekaServer,默認是true
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url: # EurekaServer的地址,現在是自己的地址,如果是集羣,需要加上其它Server的地址。
defaultZone: http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
所謂的高可用註冊中心,其實就是把EurekaServer自己也作爲一個服務進行註冊,這樣多個EurekaServer之間就能互相發現對方,從而形成集羣。因此我們做了以下修改:
把service-url的值改成了另外一臺EurekaServer的地址,而不是自己
2)我們修改原來的EurekaServer配置-7002:
server:
port: 7002 # 端口
spring:
application:
name: eureka-server-7002 # 應用名稱,會在Eureka中顯示
eureka:
instance:
hostname: eureka7002.com
client:
register-with-eureka: false # 是否註冊自己的信息到EurekaServer,默認是true
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url: # EurekaServer的地址,現在是自己的地址,如果是集羣,需要加上其它Server的地址。
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7003.com:7003/eureka
3)我們修改原來的EurekaServer配置-7003:
server:
port: 7003 # 端口
spring:
application:
name: eureka-server-7003 # 應用名稱,會在Eureka中顯示
eureka:
instance:
hostname: eureka7003.com
client:
register-with-eureka: false # 是否註冊自己的信息到EurekaServer,默認是true
fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
service-url: # EurekaServer的地址,現在是自己的地址,如果是集羣,需要加上其它Server的地址。
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
4)在自己的hosts中加入端口映射
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
c:\windows\system32\drivers\etc\hosts
5)啓動測試
注意:idea中一個應用不能啓動兩次,我們需要重新配置一個啓動器:
然後啓動即可。
6)springcloud-demo集羣版,客戶端註冊服務到集羣
因爲EurekaServer不止一個,因此註冊服務的時候,service-url參數需要變化:
# EurekaServer地址
eureka.client.service-url.defaultZone= http:// eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
7)測試服務是否註冊