1.1. Eureka
微服务注册发现中心
1.1.1. Eureka概念
- 微服务系统中的其他服务使用Eureka客户端将其连接到Eureka Service中,并且维持心跳,可以通过Eureka Service来监控各个微服务是否运行正常
1.1.2. Eureka怎么实现高可用
- 集群部署,注册多台互相注册
- 客户端启动后,定时向Eureka服务端注册自己的服务信息(服务名、IP、端口等)
- 客户端启动时,首先创建一个心跳的定时任务,定时向服务端发送心跳信息,服务端对客户端心跳作出响应,如果响应状态为404,表示服务端没有该客户端的服务信息,此时客户端向服务端发送注册请求
- 服务端保存客户端信息:客户端通过Jersey框架(http框架)将服务实例信息发送到服务端,服务端将客户端信息放在一个ConcurrentHashMap对象中
- 客户端启动后,定时拉去服务端已保存的服务注册信息
- 客户端拉取服务端服务信息是通过一个定时任务定时拉取,每次拉取后刷新本地已保存的信息,需要时直接从本地获取
- 拉取服务端保存的服务注册信息后,就可以调用消费其他服务提供者提供的服务
1.1.4. Eureka心跳机制
心跳机制:
服务剔除机制: ```text客户端启动后,会启动一个定时任务,定时向服务端发送心跳数据,告知服务端自己还存活,默认心跳时间间隔是30秒
- 如果开启了自我保护机制,那么所有服务,包括已过期的服务都不会被剔除
- 如果未开启自我保护机制,那么将判断最后一分钟收到的心跳数与一分钟收到心跳数临界值比较
- 一旦服务剔除机制开启,则eureka服务端不回直接剔除所有已过期的服务,而是通过随机数的方式进行剔除,避免自我保护开启之前将所有的服务给剔除
```
1.1.5. Eureka和zk区别
- zk节点服务挂了要选举,选举期间注册服务瘫痪不可用,因为zk集群必须有一台主其他都是从
- eureka各个节点平等,只要有一台eureka可用就可保证服务可用,数据都是最新的
- eureka本质是一个工程,而zk只是一个进程
- zk保证的是CP(一致性与分区容错性),eureka保证的是AP(可用性以及分区容错性)