1. 程式人生 > >spring cloud Eureka 1 (服務治理)

spring cloud Eureka 1 (服務治理)

目的:蓋房子

1、概念介紹:
Eureka中涉及到以下幾個概念:服務註冊、服務發現、Eureka服務端、Eureka客戶端。接下來咋們擼起袖子,用建房子來理解這些概念。

  • Eureka服務端:包工頭
  • Eureka客戶端:農名工
  • 服務註冊:房子的主人招聘包工頭
  • 服務發現:農名工向包工頭報道

2、理解思想:
概念瞭解了,那麼我們要怎麼通過使用這些包工頭和農名工來蓋房子來理解eureka的思想呢?

  1. 搭建服務註冊中心:招聘包工頭
  2. 註冊服務提供者:招聘農名工,然後讓農名工向包工頭報道
  3. 高可用註冊中心:招聘了多個包工頭,讓他們相互配合合作
  4. 服務發現與消費:砌牆的時候,農名工A只負責砌牆,農名工B只負責搬磚,那麼如果A需要B,就會找包工頭,告訴他我需要B給我搬磚過來,那麼B就會照做,這樣就實現了服務之間的呼叫。

3、使用步驟:
1、服務註冊中心配置示例如下(包工頭):

# ==========配置完如下資訊後,啟動並訪問http://localhost:1111/,可以看到eureka的資訊面板
server.port=1111
eureka.instance.hostname=localhost
# 不向註冊中心註冊自己
eureka.client.register-with-eureka=false
# 表示不去檢索服務
eureka.client.fetch-registry=false
# 設定服務的地址
eureka.client.service-url.defaultZone=http://${eureka.instance
.hostname}:${server.port}/eureka/ # ==========配置完如下資訊後,啟動並訪問http://localhost:1111/,可以看到eureka的資訊面板

2、註冊服務提供者示例如下(農民工):

# 表示eureka-client的name,這裡取的名字不能有下劃線,否則無法識別!
spring.application.name=wuyonghu-test-one
server.port=8081
# 該eureka客戶端是要連線那個伺服器端
eureka.client.service-url.defaultZone=http://localhost:1111
/eureka/

4、原始碼分析:
將一個普通的Spring boot應用註冊到eureka server或中eureka server中獲取服務列表,主要做了如下兩件事
- 在應用主類中配置了@EnableDiscoveryClient註解
- 在application.properties中使用eureka.client.serviceUrl.defaultZone引數指定服務註冊中心的位置

分析:(一個服務只可以屬於一個Region,而一個Region可以對應多個Zone)
1、首先會獲取Region和Zone的資訊,然後通過配置檔案開始載入Eureka Server的具體地址。(農名工通過包工頭的名字找到包工頭)
2、客戶端使用@EnableDiscoveryClient,而通過這個註解可以找到DiscoveryClient這個類,而這個類中呼叫了register的方法,在服務端進行了註冊(農名工先證明自己是合法的,然後向包工頭說了自己的名字,能幹啥)
3、服務端和客戶端會有兩個定時任務,用來進行服務獲取和服務續約。(包工頭會定時問農名工,你還能不能繼續幹啊?你還想不想幹啊?)