随着微服务兴起,传统的微服务数量多起来后无法集中管理,它们相互之间调用混乱,也难以实现负载均衡,如果其中一个服务器挂了会造成较大的影响。而基于zookeeper的微服务,如果leader节点挂了就要重新选举,而选举的时间过长,可用性被降低。Eureka 是实现服务注册和发现的工具,各种服务都可以向Eureka注册,Eureka集中管理这些服务,Eureka的各个服务都是平等的,其中注册中心挂了也不会影响其正常工作,其它注册中心依然可以提供注册功能(只不过次注册中心的注册信息可能不是最新的),如果有客户端在90内没有心跳,那么Eureka就会把此客户端剔除注册中心,这样就避免了访问此服务异常,提高了可用性。
1、Eureka的大致功能框架介绍
1)Eureka Server
(1) Eureka Server主要提供注册服务,各个微服务启动时,会通过Eureka Client向Eureka Server进行注册自己的信息。
(2) 多个Eureka Server相互同步信息更新注册表,当Eureka1有新的注册后会将信息同步到Eureka2和Eureka3等服务。
(3) Eureka有自我保护模式,当一个Eureka Server 在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,那么它不再注销任何微服务。
2)Eureka Client
(1) 不管是消费者还是生产者都会在启动的时候由Eureka Client代理去向Eureka Server 去注册自身的信息(地址和端口号),同时也将Eureka Server中的注册其它生产者的注册信息拉取下来,如果想获取其它生产者的信息,那么消费者就会根据自身注册信息表直接去访问生产者。
(2) Eureka Client每30秒向Eureka Server发送心跳,如果90秒没法送,那么Eureka Server就会把此客户端从注册表中提除。