第二章 服務治理:spring cloud eureka
服務治理可以說是微服務架構最核心和基礎的模組,他主要實現各服務之間自動化註冊和發現服務。那為什麼要引入服務治理呢?
當我們剛建立微服務的時候,服務模組很少,我們可以採用靜態配置的方式來進行服務之間的呼叫,例如:服務A和服務B,A呼叫服務B,A需要維護B的例項清單才能進行精確呼叫,但是當服務越來越多時,維護成本大大加高,手工維護服務的例項清單更加困難,這個時候就需要一個服務治理的東東來幫助我們維護這些服務例項清單。
服務的註冊: 在服務治理框架中,通常會構建一個註冊中心,每個服務單元向註冊中心註冊自己的服務資訊,將主機、埠號、版本號、通訊協議等資訊告知註冊中心,註冊中心按服務名來劃分服務清單。當我們給服務A啟動兩個服務例項時,我們通過A的服務名來呼叫,註冊中心通過服務名幫助我們找到對應的服務例項的資訊。
服務發現
Eureka實現服務的註冊與發現,它既包含了服務端,也包括了客戶端。它使用java編寫,所以只適用於java語言的程式。
eureka服務端,就是我們說的註冊中心,他支援高可用配置。就是啟動多個註冊中心,他們通過非同步的方式進行相互之間複製服務清單,這樣當一個註冊中心掛掉之後,其他的註冊中心依然可以擁有服務清單資訊。
Eureka客戶端,主要負責服務的註冊與發現工作。客戶端通過註解或者引數配置的形式,eureka客戶端向註冊中心註冊自身提供的服務並週期性的發起心跳來更新自己服務的租約。同時也能向註冊中心發起查詢請求,查詢當前所有服務清單列表,並把他們快取在本地,週期性的重新整理服務狀態。
搭建服務註冊中心
1.首先建立springboot工程,命名為eureka,在pom.xml中加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
通過@EnableEurekaServer註解來表明這是一個註冊中心服務端
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
然後再來看配置檔案
server:
port: 8761
spring:
application:
name: eruka
# 通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server.
eureka.client.registerWithEureka:false
eureka.client.fetchRegistry:false
eureka.client.registerWithEureka:false 表示是否向註冊中心註冊自己,false表示不註冊自己
eureka.client.fetchRegistry:false 表示是否檢索其他服務,這裡註冊中心不需要去檢索。
配置好之後我們啟動服務,執行EurekaApplication類的main方法
這時我們在瀏覽器輸入:local host:8761會顯示如下介面,說明我們的eureka服務啟動完成。
我們目前還沒有任何其他的服務,所以在頁面上看不到服務清單,下一張我們將繼續講解如何將服務註冊到eureka上去。