EurekaServer服務註冊中心建立及微服務註冊進Eureka服務
EurekaServer服務註冊中心建立及微服務註冊進Eureka服務
目錄
一、Eureka簡介
Eureka是Netflix開發的服務發現框架,本身是一個基於REST的服務,主要用於定位執行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。SpringCloud將它整合在其子專案spring-cloud-netflix中,以實現SpringCloud的服務發現功能。
Eureka包含兩個元件:Eureka Server和Eureka Client。
Eureka Server提供服務註冊服務,各個節點啟動後,會在Eureka Server中進行註冊,這樣EurekaServer中的服務登錄檔中將會儲存所有可用服務節點的資訊,服務節點的資訊可以在介面中直觀的看到。
Eureka Client是一個java客戶端,用於簡化與Eureka Server的互動,客戶端同時也就是一個內建的、使用輪詢(round-robin)負載演算法的負載均衡器。
在應用啟動後,將會向Eureka Server傳送心跳,預設週期為30秒,如果Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,Eureka Server將會從服務登錄檔中把這個服務節點移除(預設90秒)。
Eureka Server之間通過複製的方式完成資料的同步,Eureka還提供了客戶端快取機制,即使所有的Eureka Server都掛掉,客戶端依然可以利用快取中的資訊消費其他服務的API。綜上,Eureka通過心跳檢查、客戶端快取等機制,確保了系統的高可用性、靈活性和可伸縮性。
二、EurekaServer的建立
2.1、在pom.xml檔案中新增eureka的Maven座標:
<!-- eureka-server服務端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
2.2、在yml檔案中增加Eureka的配置資訊:
server:
port: 8761 #埠
eureka:
server:
enable-self-preservation: false
instance:
hostname: localhost #eureka服務端的例項名
client:
registerWithEureka: false #false表示不向註冊中心註冊自己
fetchRegistry: false #false表示自己端就是註冊中心,我的職責是維護服務例項,並不需要去檢索服務。
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #設定與Eureka Server交行的地址查詢服務和註冊服務
2.3、在啟動類上標註啟動該eureka元件的相關注解標籤@EnableEurekaServer:
@EnableEurekaServer //Eureka服務啟動類,接受其他微服務註冊進來。
@SpringBootApplication
public class SpringCloudEurekaApplication {
/**
* The entry point of application.
*
* @param args the input arguments
*/
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaApplication .class, args);
}
}
2.4、測EurekaServer的建立:
以上:完成了EurekaServer已經建立完成。
三、將微服務註冊到Eureka服務中心
3.1、在微服務的pom.xml檔案中新增如下配置(引入Eureka-Client端):
<!--將微服務provider側註冊進Eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
3.2、在微服務的yml檔案中新增如下配置:
eureka:
client: #客戶端註冊進Eureka服務列表內
serviceUrl:
defaultZone: http://localhost:8761/eureka
3.3、在微服務啟動類上標註Eureka客戶端註解標籤(@EnableEurekaClient):
@EnableEurekaClient //本服務啟動後會自動註冊進eureka服務
@SpringBootApplication
public class SpringCloudUacApplication {
/**
* The entry point of application.
*
* @param args the input arguments
*/
public static void main(String[] args) {
SpringApplication.run(SpringCloudUacApplication .class, args);
}
3.4、啟動測試微服務註冊到Eureka服務列表的結果:
以上:SpringCloudUacApplication已經註冊進Eureka服務中了。