最近學習了Spring Cloud 。簡單的搭建了一個Eureka,用於服務器之間的調用。
Eureka是Netflix開源的一款提供服務註冊和發現的產品,它提供了完整的Service Registry和Service Discovery實現。也是Spring Cloud 體系中最重要最核心的組件之一。
Spring Cloud 封裝了 Netflix 公司開發的 Eureka 模塊來實現服務註冊和發現。Eureka 採用了 C-S 的設計架構。Eureka Server 作爲服務註冊功能的服務器,它是服務註冊中心。而系統中的其他微服務,使用 Eureka 的客戶端連接到 Eureka Server,並維持心跳連接。這樣系統的維護人員就可以通過 Eureka Server 來監控系統中各個微服務是否正常運行。Spring Cloud 的一些其他模塊(比如Zuul)就可以通過 Eureka Server 來發現系統中的其他微服務,並執行相關的邏輯。
Eureka由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用作服務註冊服務器。Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作爲輪詢負載均衡器,並提供服務的故障切換支持。Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。
用一張圖來認識以下:
上圖簡要描述了Eureka的基本架構,由3個角色組成:
1、Eureka Server
提供服務註冊和發現
2、Service Provider
服務提供方
將自身服務註冊到Eureka,從而使服務消費方能夠找到
3、Service Consumer
服務消費方
從Eureka獲取註冊服務列表,從而能夠消費服務
案例實踐
配置Eureka服務器端
1.添加服務器端依賴
<!-- 引入eureka server依賴 -->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
2.配置propertities文件
server.port=6868
#註冊中心不需要註冊自己
eureka.client.register-with-eureka=false
#註冊中心不需要去發現服務
eureka.client.fetch-registry=false
#設置服務註冊中心的URL
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:${server.port}/eureka/
3.在啓動類添加@EnableEurekaServer
4,啓動Eureka的服務端,瀏覽器進行驗證,如下即可表示成功
配置Eureka的客戶端
1.添加客戶端依賴
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
2.配置properties依賴
#配置cloud的客戶端
#設置服務註冊中心的URL
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6868/eureka/
#配置可以跨域訪問
eureka.instance.prefer-ip-address=true
3.在啓動類添加 @EnableEurekaClient註解進行啓動
4.通過接口進行調用是,用的是REST API的方法進行調用的
@FeignClient("tensquare-base")
public interface BaseClient {
@RequestMapping(value = "/label/{labelId}",method = RequestMethod.GET)
public Result findById(@PathVariable("labelId") String labelId);
}
5.啓動客服端,可以發現客戶端服務註冊到了Eureka的服務器端了。
此致,一個簡單的Eureka之間的調用就完成了。