什么是Eureka,什么是服務注冊與發現
Spring Boot作為目前最火爆的web框架。那么它與Eureka又有什么關聯呢?
1.Eureka是Netflix開源的一個RESTful服務,主要用於服務的注冊發現。
2.Eureka由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用作服務注冊服務器。
3.Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作為輪詢負載均衡器,並提供服務的故障切換支持。
4.Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。
一.先創建一個Eureka-Server服務注冊中心
Eureka是一個高可用的組件,每一個實例注冊之后需要向注冊中心發送心跳包,在默認情況下erureka server也是一個eureka client ,必須要指定一個 server。
1.pom.xml配置
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
2.配置application.yml文件
server: port: 8081 #服務注冊中心端口號 eureka: instance: hostname: 127.0.0.1 #服務注冊中心IP地址 client: registerWithEureka: false #是否向服務注冊中心注冊自己 fetchRegistry: false #是否檢索服務 serviceUrl: #服務注冊中心的配置內容,指定服務注冊中心的位置 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.配置啟動類引入@EnableEurekaServer
package com.sun.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * 服務注冊中心 * @author andy *啟動一個服務注冊中心 */ @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
4.訪問注冊中心
二.創建一個Eureka-Client客戶端
客戶端在向注冊中心它會提供一些元數據,例如主機和端口,URL,主頁等。Eureka server 從每個client實例接收心跳消息。 如果心跳超時,則通常將該實例從注冊server中刪除。
1.pom.xml配置同步服務端
2.配置application.yml文件
eureka: client: serviceUrl: #注冊中心的注冊地址 defaultZone: http://127.0.0.1:8081/eureka/ server: port: 8082 #服務端口號 spring: application: name: service-client #服務名稱--調用的時候根據名稱來調用該服務的方法
3.配置啟動類引入@EnableEurekaClient
package com.sun.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.scheduling.annotation.EnableScheduling; /** * 客戶端 * @author andy * */ @EnableEurekaClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }
4.定義ClientController控制器
package com.sun.eureka.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ClientController { @GetMapping(value = "/index") public String getString(){ return "Hello-Wolrd"; } }
接着我們來訪問:127.0.0.1:8082/index
5.再次訪問注冊中心
注意矩形標記,此時我們已經成功的注冊客戶端service-client
三.負載均衡的效果圖
每個微服務都是一個Eureka-Client,我們把每個app(SpringBootApplication)都向注冊中心注冊一個服務。
有時候,某個服務的工作量比較大的時候,我們可以多注冊幾個同名稱的微服務,從而讓他們交替工作,減輕單個服務的壓力。