Eureka是Netflix開發的服務發現框架,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通過心跳檢查、客戶端緩存等機制,確保了系統的高可用性、靈活
性和可伸縮性。
1.服務端
創建微服務服務端
父工程中管理依賴的版本
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.M9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
微服務工程
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
server: port: 6868 #服務端口號 eureka: client: register-with-eureka: false #是否將自己注冊到Eureka,不需要 fetch-registry: false #是否從Eureka中獲取注冊信息 service-url: defautZone: http://127.0.0.1:${server.port}/eureka/
@SpringBootApplication @EnableEurekaServer public class EurekaServer { public static void main(String[] args) { SpringApplication.run(EurekaServer.class); } }
2.客戶端
客戶端依賴
啟動類上添加注解:
@EnableEurekaClient
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
eureka: client: service-url: defaultZone: http://localhost:6868/eureka instance: prefer‐ip‐address: true #可以跨域訪問
