一. Eureka简介
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服务端
Eureka与其他rpc组件不同之处在于,需要我们自己搭建。
1. 创建一个 Eureka的module
2. 在相应的pom文件中导入坐标
<!--父工程 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--子工程 -->
<!--eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3. 在yml配置文件中添加Eureka的配置信息
#eureka服务的配置文件
server:
port: 6868 #服务端口
eureka:
client:
registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需注册
fetchRegistry: false #是否从Eureka中获取注册信息
serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
defaultZone: http://127.0.0.1:${server.port}/eureka/
4. 配置启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* Eureka服务端启动类
*/
@SpringBootApplication
@EnableEurekaServer//开启eureka服务端配置
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class, args);
}
}
5. 启动启动类
6.打开http://localhost:6868/,如出现下图则配置成功
三. Eureka客户端配置(其他的服务注册到Eureka服务中)
1. 在其他的微服务的pom文件中添加Eurka客户端的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2. 在该微服务的application.yml配置文件中加入Eureka客户端配置
#微服务注册到eureka配置
eureka:
client:
service-url:
defaultZone: http://localhost:6868/eureka/
3. 在该为服务的启动类上配置注册到Eureka
import com.ihrm.common.utils.IdWorker;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;
//1. springBoot的包扫描
@SpringBootApplication(scanBasePackages = "com.ihrm")
//2. Jpa的包扫描
@EntityScan(value = "com.ihrm.domain.company")
//3. 注册到Eureka
@EnableEurekaClient
public class CompanyApplication {
//springBoot的启动类
public static void main(String[] args) {
SpringApplication.run(CompanyApplication.class, args);
}
}
4. 进入http://localhost:6868/, 如下注册成功