学习过程中记录一下eureka从服务注册开始到服务调用,及各个元素设计的一些重要通信行为
1.服务提供者
1.1 服务注册:"服务提供者"在启动的时候会通过发送REST请求的方式讲自己注册到Eureka Server上,同时带上自身服务的一些 元数据信息。注册时需要确认eureka.client.register-with-eureka=true参数是否正确,该值默认true。若设置为false将 不会启动注册操作。
1.2 服务同步:相互注册的服务注册中心,共享服务提供者的服务信息
1.3 服务续约:在注册完成后,服务提供者会维护一个心跳用来持续告诉Eureka Server服务可用,防止被剔除任务从列表中排除,关于 服务续约有两个重要属性,eureka.instance.lease-renewal-interval-in-seconds用于定义服务续约任务的调用间隔时 间默认30s。eureka.instance.lease-expiration-duration-in-seconds定义服务失效时间,默认90s
2.服务消费者
2.1 获取服务:Eureka Server维护一份只读的服务清单来返回给客户端,同时该缓存清单会每隔30s更新一次。若希望修改更新时 间,可以通过eureka.client.register-fetch-interval-seconds参数修改,该值默认30单位为秒
2.2 获取清单后,服务消费者通过服务名可以获得具体提供服务的实例名和元数据信息,根据需要决定具体调用哪个实例
2.3 服务下线
3.服务注册中心
3.1 失效剔除:Euraka Server默认每隔60s将当前清单中超时(默认90s)没有续约的服务剔除
3.2 自我保护:客户端很容易拿到实际已经不存在的服务实例,会出现调用失败的情况,所以客户端必须要有容错机制,如请求重 试,断路由等机制,可以使用eureka.server.enable-self-preservation=false参数关闭自我保护