SpringCloud中的Eureka组件原理:
Eureka是SpringCloud的一个服务注册组件,其中包含两个组件:Eureka Server (注册中心) 和 Eureka Client (服务提供者、服务消费者)。其主要作用是注册和消费,心跳续约,服务剔除。
当Eureka运行时,服务的生产者会将它的ip地址,端口号,预约的配置,和访问路径等信息传递到Eureka的注册资源表(cconcurrentHashMap)中,之后会将注册资源表中的信息同步到ReadWrite;而在Eureka中还会有个定时线程任务对ReadWrite进行监控,当ReadWrite进行改变的时候,将数据定时复制到ReadOnly中;而服务消费方进行数据拉取的时候,也并不是直接在ReadWrite中拉取,就直接到ReadOnly拉取。
当生产者宕机之后,会停止发送心跳到注册资源表中,此时会先将ReadWrite中的所有数据线进行删除,在添加新的所有注册资源表中的信息,重新通过定时器刷新到ReadOnly中; 所以当Eureka重新启动,或者其他微服务重新启动后,会产生一定的延迟,导致数据不能访问到,稍等一会就可以了.