1. eureka简述
eureka包含两个组件,eureka server和eureka clinet
1. server提供服务发现的能力,各个微服务启动时,会向server注册自己的信息,server会存储这些信息。
2. eureka clinet是一个java客户端,用于简化与server的交互、
3. 微服务启动之后,会周期性(默认30秒)想server发送心跳以续约自己的租期。
4. 如果server在一定时间内没有接收到某个微服务示例的心跳,server将注销该实例。
5. 默认情况下,server同时也是一个clinet,多个server之间通过复制的方式,来实现服务注册表中的数据同步
6. clinet会缓存服务注册表中的信息。
7. eureka的集群模式
- Eureka-Server 集群不区分主从节点或者 Primary & Secondary 节点,所有节点相同角色( 也就是没有角色 ),完全对等。
- Eureka-Client 可以向任意 Eureka-Client 发起任意读写操作,Eureka-Server 将操作复制到另外的 Eureka-Server 以达到最终一致性。注意,Eureka-Server 是选择了 AP 的组件。
2. 编写eureka server
1. 添加依赖
spring-cloud-starter-eureka-server
2. 编写启动类
@SpringBootApplication
@EnableEurekaServer
public class Server {
public static void main(String[] args) {
SpringApplication.run(Server.class, args);
}
}
3. 配置文件
server.port=8889
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
3. 将服务注册到eureka上
1. 添加依赖
spring-cloud-starter-eureka
2. 启动类加注解
@EnableDiscoveryClient
3. 配置文件
spring.application.name=user
server.port=8888
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
4. eureka的高可用
建立多个eureka项目,配置:
server.port=8884
eureka.instance.hostname=127.0.0.1
eureka.client.serviceUrl.defaultZone=http://localhost:8885/eureka/
server.port=8885
eureka.instance.hostname=127.0.0.1
eureka.client.serviceUrl.defaultZone=http://localhost:8884/eureka/