eureka

eureka

1.eureka的注册
客户端首先会将配置信息封装到InstanceInfoReplicator中,然后启动线程检测该配置是否更新(第一次也算更新),这样就会调用discoveryClient.register();方法进行服务注册。同时在源码中也会有一个finally让服务定期去注册一次
服务端会将配置信息封装到ConcurrentHashMap中,这是一个双层map集合,第一层key是服务名字,value是Map<String, Lease<InstanceInfo>>,第二层key是ip地址,lease是对InstanceInfo进行了封装,InstanceInfo中包含了客户端的
端口等等信息。

2.eureka的缓存机制
对客户端来说,需要服务的时候不会直接去访问eureka服务,他会在注册的时候或者是服务发生变化的时候将缓存放入本地,先调本地的服务信息(存在一个定时任务去定期拉eureka服务的服务列表)。
对eureka服务来说,服务注册的时候,会将信息放入ConcurrentHashMap中,但是客户端来拉列表不会从这里拉,而是会去ResponseCache中拉,ResponseCache又分为两种,一种是ReadWriteMap,另一种是ReadOnlyMap,这么做是为了读写分离
ReadWriteMap与ConcurrentHashMap实时的,ReadOnlyMap是从ReadWriteMap中获取的,他不是实时的。
3.eureka的心跳续约服务
客户端会默认30秒向eureka服务端发送心跳,如果eureka服务在90秒后还没有接收心跳就会停止该服务
4.eureka服务取消
服务关机的时候会调用shutdown,通知eureka服务下线
5.自我保护机制
当心跳小于80%就会启动自我保护机制,就会将所有的服务保持不动不会剔除任何服务,这是为了避免一个网络发生波动,eureka服务将所有的服务全部关掉。

posted @ 2019-11-01 10:51  穿靴子的猫o_O  阅读(211)  评论(0编辑  收藏  举报