注册中心
Eureka
注册中心:专门负责注册于发现
Eureka Client :负责将服务的信息注册到Eureka中
Eureka Server : 注册中心,里面有一个注册表,保存各个服务所在的机器和端口
各个服务在默认的情况下,没间隔30s就会发送一个请求到Eureka server,拉取最近有变化的服务信息。
Eureka 还有一个心跳机制或者说是服务续约,每隔30s就会发送一次心跳到Eureka server,如果长时间没有发送的话那么就可以认定这个服务挂掉了。
Eureka是如何注册到注册中心的
Eureka在启动之后就会创建定时任务,定时任务定时向服务端发送心跳,服务端会对发送的消息进行相应,如果相应为404的时候,说明服务器中没有这个服务,客户端会向服务端发送注册请求。
服务端是如何保存注册信息的
注册表的核心是一个叫做registry的CocurrentHashMap;注册表是基于纯内存的,在内存中维护的一个数据结构
客户端是如何拉取服务端已经保存的服务信息的
客户端拉取服务端服务信息是通过一个定时任务定时拉取的,每次拉取后刷新本地已保存的信息,需要使用时直接从本地直接获取。
Eureka集群
在高可用的状态下,每一个服务注册中心都是等级的,都会相互注册,注册中心会做判断:是注册中心的注册信息还是说是客户端的注册信息,如果是客户端的注册信息的话就会同步到其他的Eureka中。
Eureka 挂掉后消费者和注册者之间的关系
1、Eureka 突然宕机之后各个消费者已经存有相互调用的服务的IP和端口,相互之间的访问没有什么问题
2、重启之后消费者和提供者都保存映射信息,所以没有什么影响
Eureka缓存
Eureka服务剔除机制
eureka会将过期的服务进行剔除
1:服务初始化集群同步信息,重试5次,每次间隔30s
2:开启定时器每过60s清理过期的微服务,这里不会清除全部过期的微服务,至多清理15%的微服务,如果大批微服务同一时刻全部宕机,可能触发了自我保护机制则不会清理
3:最后一分钟的心跳数 < 阈值 触发自我保护机制
Eureka自我保护