目录
1.概述
Eureka作为一个服务注册及发现中心,主要解决如下几个问题:
1.1 服务实例如何注册到服务中心
本质上就是在服务启动的时候,需要调用Eureka Server的REST API的register方法,去注册该应用实例的信息。对于使用Java的应用服务,可以使用Netflix的Eureka Client封装的API去调用;对于Spring Cloud的应用,可以使用spring-cloud-starter-netflix-eureka-client,基于Spring Boot的自动配置,自动帮你实现服务信息的注册。
1.2服务实例如何从服务中心剔除
正常情况下服务实例在关闭应用的时候,应该通过钩子方法或其他生命周期回调方法去调用Eureka Server的REST API的de-register方法,来删除自身服务实例的信息。另外为了解决服务实例挂掉或其他异常情况没有及时删除自身信息的问题,Eureka Server要求Client端定时进行续约,也就是发送心跳,来证明该服务实例还是存活的,是健康的,是可以调用的。如果租约超过一定时间没有进行续约操作,Eureka Server端会主动剔除。这一点Eureka Server采用的就是分布式应用里头经典的心跳模式。
1.3 服务实例信息的一致性问题
由于服务注册及发现中心不可能是单点的,其自身势必有个集群,那么服务实例注册信息如何在这个集群里保持一致呢?这跟Eureka Server的架构有关,其设计理念主要分AP优于CP、Peer to Peer架构、Zone及Region设计、SELF PRESERVATION设计四个方面。
2.AP优于CP
分布式系统领域有个重要的CAP理论,该理论由加州大学伯克利分校的Eric Brewer教授提出&#x