Eureka简述:
Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。 Spring Cloud 集成了 Eureka,并提供了开箱即用的支持。其中, Eureka 又可细分为 :
Eureka Server:注册中心服务端,用于保存了各个服务所在的机器和端口号。
Eureka Client:注册中心客户端,负责将这个服务的信息注册到Eureka Server中,向注册中心注册服务的应用都可以叫做Eureka Client(包括Eureka Server本身)。
Eureka的原理:
Eureka Client包含服务提供者Applicaton Service和服务消费者Application Client
Applicaton Service:服务提供者,提供服务给别个调用。
Application Client:服务消费者,调用别个提供的服务。
往往大多数服务本身既是服务提供者,也是服务消费者。
Replicate进行数据同步。
Make Remote Call完成一次服务调用。
Eureka Client在启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒),如果Eureka Server在一定时间内没有接收到某个节点的心跳,Eureka Server将会注销该节点(默认90秒)。但是如果每个服务都没有返回心跳怎么办呢,难道把所有节点都删了?
当然不会,Eureka本身提供了自我保护机制:
自我保护机制是为了防止误杀服务而提供的一个机制。
Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。
总结
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。