Eureka
是Spring Cloud
生态中用于服务注册与发现的重要组件之一。Eureka
分为Server
端和Client
端。
-
Eureka Server
是一个公共服务,为Eureka Client
提供服务注册和发现的功能,维护注册到自身的Eureka Client
的相关信息,同时提供接口给Eureka Client
获取注册表中其他服务的信息,使得动态变化的Eureka Client
能够进行服务间的相互调用。 -
Eureka Client
将自己的服务信息通过一定的方式登记到Eureka Server
上,并在正常范围内维护自己信息一致性,方便其他服务发现自己,同时可以通过Eureka Server
获取到自己依赖的其他服务信息,完成服务调用,还内置了负载均衡器,用来进行基本的负载均衡。 -
Eureka Server
与Eureka Client
之间通过心跳的方式通信。心跳(Heartbeat
)即Eureka Client
定时向Eureka Server
汇报本服务实例当前的状态,维护本服务实例在注册表中租约的有效性。同时Eureka Client
也会定时从Eureka Server
中拉取注册表中的信息,并将这些信息缓存到本地,用于服务发现。
Eureka
高可用可以利用运行多个Eureka Server
实例并相互注册的方式实现。Server
节点之间会彼此增量地同步信息,从而确保节点中数据一致。本文将重点实战如何搭建一个高可用的Eureka Server
。
一、CAP
定理
1. 概念
CAP
定理指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
- 一致性(C):分布式系统中多个主机之间是否能够保持数据一致的特性。即,当系统数据发生更新操作后,各个主机中的数据仍然处于一致的状态
- 可用性(A):系统提供的服务必须一直处于可用的状态,即对于用户的每一个请求,系统总是可以在有限的时间内对用户做出响应。
- 分区容错性(P):分布式系统在遇到任何网络分区故障时,仍能够保证对外提供满足一致性和可用性的服务
2. 定理
CAP
定理的内容是:对于分布式系统,网络环境相对是不可控的,出现网络分区是不可避免的,因此系统必须具备分区容错性。但系统不能同时保证一致性与可用性。即要么 CP