阅读背景:

Spring-Cloud 服务注册与发现 Eureka

来源:互联网 
一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。
可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。
分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
Eureka Server作为一个独立的部署单元,以REST API的形式为服务实例提供了注册、管理和查询等操作。同时,Eureka Server也为我们提供了可视化的监控页面,可以直观地看到各个Eureka Server当前的运行状态和所有已注册服务的情况。
Eureka Server通过运行多个实例来构建集群,解决单点问题,与ZooKeeper的leader/flower选举机制不同,Eureka Server采用的是Peer to Peer对等通信。
自我保护模式
Service Provider本质上是一个Eureka Client。它启动时,会调用服务注册方法,向Eureka Server注册自己的信息。Eureka Server会维护一个已注册服务的列表,这个列表为一个嵌套的hash map:
当实例状态发生变化时(如自身检测认为Down的时候),也会向Eureka Server更新自己的服务状态,同时通过节点间复制向其它Eureka Server节点做状态同步。 前面提到过,服务实例启动后,会周期性地向Eureka Server发送心跳以续约自己的信息,避免自己的注册信息被剔除。 Service Consumer本质上也是一个Eureka Client。它启动后,会从Eureka Server上获取所有实例的注册信息,包括IP地址、端口等,并缓存到本地(默认每30秒更新一次)。
分享到: