Spring Cloud Eureka是Spring Cloud Netflix 子項目的核心元件之一,主要用于微服務架構中的服務治理。本文将對搭建Eureka注冊中心,搭建Eureka用戶端,搭建Eureka叢集及給Eureka注冊中心添加登入認證進行介紹。
在微服務架構中往往會有一個注冊中心,每個微服務都會向注冊中心去注冊自己的位址及端口資訊,注冊中心維護着服務名稱與服務執行個體的對應關系。每個微服務都會定時從注冊中心擷取服務清單,同時彙報自己的運作情況,這樣當有的服務需要調用其他服務時,就可以從自己擷取到的服務清單中擷取執行個體位址進行調用,Eureka實作了這套服務注冊與發現機制。
這裡我們以建立并運作Eureka注冊中心來看看在IDEA中建立并運作SpringCloud應用的正确姿勢。
建立一個eureka-server子產品,并使用Spring Initializer初始化一個SpringBoot項目

填寫應用資訊
選擇你需要的SpringCloud元件進行建立
建立完成後會發現pom.xml檔案中已經有了eureka-server的依賴
在啟動類上添加@EnableEurekaServer注解來啟用Euerka注冊中心功能
在配置檔案application.yml中添加Eureka注冊中心的配置
此時服務已經建立完成,點選啟動類的main方法就可以運作了。但是在微服務項目中我們會啟動很多服務,為了便于管理,我們使用IDEA的Run Dashboard來啟動。
打開Run Dashboard,預設情況下,當IDEA檢查到你的項目中有SpringBoot應用時,會提示你開啟,如果你沒開啟,可以用以下方法開啟。
運作SpringCloud應用
運作完成後通路位址http://localhost:8001/可以看到Eureka注冊中心的界面
建立一個eureka-client子產品,并在pom.xml中添加如下依賴
在啟動類上添加@EnableDiscoveryClient注解表明是一個Eureka用戶端
在配置檔案application.yml中添加Eureka用戶端的配置
運作eureka-client
檢視注冊中心http://localhost:8001/發現Eureka用戶端已經成功注冊
由于所有服務都會注冊到注冊中心去,服務之間的調用都是通過從注冊中心擷取的服務清單來調用,注冊中心一旦當機,所有服務調用都會出現問題。是以我們需要多個注冊中心組成叢集來提供服務,下面将搭建一個雙節點的注冊中心叢集。
給eureka-sever添加配置檔案application-replica1.yml配置第一個注冊中心
給eureka-sever添加配置檔案application-replica2.yml配置第二個注冊中心
這裡我們通過兩個注冊中心互相注冊,搭建了注冊中心的雙節點叢集,由于defaultZone使用了域名,是以還需在本機的host檔案中配置一下。
修改本地host檔案
在IDEA中我們可以通過使用不同的配置檔案來啟動同一個SpringBoot應用。
添加兩個配置,分别以application-replica1.yml和application-replica2.yml來啟動eureka-server
從原啟動配置中複制一個出來
配置啟動的配置檔案
啟動兩個eureka-server,通路其中一個注冊中心http://replica1:8002/發現另一個已經成為其備份
修改Eureka-client,讓其連接配接到叢集
添加eureka-client的配置檔案application-replica.yml,讓其同時注冊到兩個注冊中心。
以該配置檔案啟動後通路任意一個注冊中心節點都可以看到eureka-client
需要添加SpringSecurity子產品。
主要是配置了登入注冊中心的使用者名和密碼。
預設情況下添加SpringSecurity依賴的應用每個請求都需要添加CSRF token才能通路,Eureka用戶端注冊時并不會添加,是以需要配置/eureka/**路徑不需要CSRF token。
配置檔案中需要修改注冊中心位址格式
添加application-security.yml配置檔案,按格式修改使用者名和密碼
以application-security.yml配置運作eureka-client,可以在注冊中心界面看到eureka-client已經成功注冊
https://github.com/macrozheng/springcloud-learning