SpringCloud Eureka (一)

服務治理 Spring Cloud Eureka

服務治理是微服務架構中最爲核心和基礎的模塊,主要用來實現各個微服務實例的自動化註冊與發現。Spring Cloud Eureka 是 Spring Cloud Netflix 微服務套件中的一部分,基於 Netflix Eureka 作了二次封裝,主要負責完成微服務架構中的服務治理功能。spring

  • 服務註冊
    在服務治理框架中一般都會構建一個註冊中心,每一個服務單元向註冊中心登記本身提供的服務,將端口,版本號,通訊協議等附加信息告知註冊中心,註冊中心按服務名分類組織服務清單。服務註冊中心還須要以心跳方式監測清單中的服務是否可用,不可用則從服務清單中剔除,達到排除故障服務的做用。
  • 服務發現
    在服務治理框架做用下,服務間的調用再也不經過指定具體的實例的地址來實現,而是經過向服務名發起請求調用實現。因此,服務調用方在調用服務提供方接口的時候,並不知道服務實例具體的位置,服務調用方須要向服務註冊中心諮詢服務,獲取全部的服務實例清單,實現對具體服務實例的訪問。

1. 搭建服務註冊中心(Eureka 服務端)

1.1 服務註冊中心搭建

  1. 建立Spring Boot 工程
  2. 添加依賴: spring-cloud-starter-eureka-server
  3. 使用@EnableEurekaServer開啓服務註冊中心
  4. 配置服務註冊中心

1.2 服務註冊中心配置

name description value
spring.application.name 服務名 -
server.port 端口 -
eureka.instance.hostname 主機名稱 -
eureka.client.register-with-eureka 是否向註冊中心註冊本身 false
eureka.client.fetch-registry 是否須要檢索服務 false
eureka.client.service-url.defaultZone 服務註冊中心地址 http://\({eureka.instance.hostname}:\){server.port}/eureka/

2. 註冊服務提供者(Eureka 客戶端)

2.1 服務提供者註冊

  1. 建立Spring Boot 工程
  2. 添加依賴: spring-cloud-starter-eureka-client
  3. 使用@EnableDiscoveryClient激活 discovery client
  4. 配置服務提供者

2.2 服務提供者配置

name description value
spring.application.name 服務名 -
server.port 端口 -
eureka.client.service-url.defaultZone 服務註冊中心地址 -

3. 註冊服務消費者(Eureka 客戶端)

3.1 服務消費者註冊

  1. 建立Spring Boot 工程
  2. 添加依賴: spring-cloud-starter-eureka-client, spring-cloud-starter-ribbon
  3. 使用@EnableDiscoveryClient激活 discovery client,在主類中建立RestTemplate的Spring Bean實例,並經過@LoadBalanced註解開啓客戶端負載均衡
  4. 配置服務提供者

3.2 服務消費者配置

name description value
spring.application.name 服務名 -
server.port 端口 -
eureka.client.service-url.defaultZone 服務註冊中心地址 -

4. 高可用服務註冊中心

在分佈式環境中,須要充分考慮發生故障的狀況,因此在生產環境中必須對各個組件進行高可用部署,對於服務中心也同樣。在 Eureka 的服務治理設計中,全部節點既是服務提供方也是服務消費方,服務註冊中心也不例外。Eureka Server 高可用實際上就是將本身做爲服務向其它服務註冊中心註冊本身,造成一組互相註冊的註冊中心,實現服務清單互相同步,達到高可用效果。架構

4.1 高可用服務註冊中心配置

name description value
spring.application.name 服務名 -
server.port 端口 -
eureka.instance.hostname 主機名稱 -
eureka.client.service-url.defaultZone 服務註冊中心地址 其它服務註冊中心地址: url2,url3...

4.2 服務提供方配置

name description value
spring.application.name 服務名 -
server.port 端口 -
eureka.client.service-url.defaultZone 服務註冊中心地址 其它服務註冊中心地址: url1,url2,url3...

附. 經常使用配置

name description default
spring.application.name 服務名 -
server.port 端口 -
eureka.instance.hostname 主機名稱 -
eureka.instance.lease-renewal-interval-in-seconds 服務續約任務的調用間隔時間 30
eureka.instance.lease-expiration-duration-in-seconds 服務失效時間 90
eureka.client.register-with-eureka 是否向註冊中心註冊本身 true
eureka.client.fetch-registry 是否須要檢索服務 true
eureka.client.service-url.defaultZone eureka server 分區地址 -
eureka.server.enable-self-preservation 是否開啓保護機制 -
相關文章
相關標籤/搜索