Springcloud注册中心之Eureka
介绍
Springcloud注册中心目前有三种:Eureka、zookeeper、Consul。Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。
Eureka由两个部分组成:Eureka服务端和客户端,服务端就是注册中心,用来接收其他服务的注册,客户端则是一个Java客户端,用来注册,并可以实现负载均衡等功能。

从上图可以看出Eureka有三个角色:
- Eureka Server:注册中心
- Eureka Consumer:服务消费者
- Eureka Provider:服务提供者
搭建Eureka Server
1.依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
2.启动类添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
3.配置文件application.yml
spring:
application:
name: eureka-server
server:
port: 1111
eureka:
client:
# 是否从eureka获取信息
fetch-registry: false
# 是否注册到服务中心
register-with-eureka: false
service-url:
defaultZone: http://localhost:1111/eureka
- eureka.client.register-with-eureka :表示是否将自己注册到Eureka Server,默认为true。
- eureka.client.fetch-registry :表示是否从Eureka Server获取注册信息,默认为true。
- eureka.client.serviceUrl.defaultZone=设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
4.启动并用http://localhost:1111/访问

Eureka集群
1.修改host文件
127.0.0.1 eurekaA eurekaB
2.分别创建application-a.yml,application-b.yml文件
spring:
application:
name: eureka-server
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eurekaB:1112/eureka
instance:
hostname: eurekaA
server:
port: 1111
spring:
application:
name: eureka-server
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eurekaA:1111/eureka
instance:
hostname: eurekaB
server:
port: 1112
3.打包启动
- 打包

如上图点击或者执行如下命令
mvn clear package
- 启动
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=a
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=b

Eureka其他配置
服务续约
Eureka Client注册到Eureka Server上之后,事情还没有结束,刚刚开始而已。注册成功后,默认情况下,Eureka每隔30秒就要向Eureka Server发送一条心跳消息,来告诉Eureka Server我还在运行。如果Eureka Server连续90秒都没有收到Eureka Client的续约消息(连续三次没发送),它就会认为Eureka Client已经掉线了,会将掉线的Eureka从当前的服务列表中剔除。
服务续约的两个配置属性(一般不建议修改):
# 续约时间
eureka.instance.lease-renewal-interval-in-seconds= 30
# 服务失效时间
eureka.instance.lease-expiration-duration-in-seconds= 90
自我保护机制
自我保护机制默认是开启的,我们可以设置关闭
eureka.server.enable-self-preservation= false
浙公网安备 33010602011771号