Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。
Spring Cloud Eureka有2个组件:Eureka Server和Eureka Client
1 Eureka Server
即服务注册中心。注册中心按照服务名分类组织服务清单,同时还需要以心跳检测的方式去检测清单中的服务是否可用,若不可用,需要从服务清单中剔除,以达到排除故障服务的目的。
每个服务单元向注册中心登记自己提供的服务,包括服务的主机、端口号、服务版本号、通讯协议等一些附加信息。
2 Eureka Client
主要处理服务的注册和发现,在应用程序启动时,客户端向服务注册中心注册自身提供的服务,并周期性的发送心跳来更新它的服务租约,同时它也从服务端查询当前注册的服务信息并把它们缓存到本地并周期性的刷新服务状态。
客户端同时也是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
3 处理过程
在应用启动后,Eureka Client将会向Eureka Server发送心跳,默认周期是30s,如果Eureke Server在多个心跳周期内都没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90s)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka提供了客户缓存的机制,即使所有的Eureka Server都挂掉了,客户端依然可以利用缓存中的信息消费其他服务的API。Eureka通过心跳检查,客户端缓存等机制,确保了系统的高可用、灵活性和可伸缩性。
4 为什么说Eureka是高可用的
在Eureka服务治理设计中,所有节点既是服务的提供方,又是服务的消费方,服务注册中心也不例外。高可用体现在Eureka Server将自己作为服务向其他服务注册中心注册自己,这样就形成了一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的目的。
5 Eureka内置负载均衡
Eureka Client内置了负载均衡用于执行基本的负载均衡轮询制度,使用ribbon。客户端ribbon的负载均衡,解决的是服务发起方(在Eureka注册的服务)对被调用的服务的负载。
6 EurekaClient ribbon和SpringCloudZuul负载均衡的区别
ribbon是服务之间的负载均衡。
zuul是对外部请求做负载均衡。