一:Eureka介绍java
二:Eureka架构图node
三:Eureka组件git
四:Eureka做用github
五:Eureka和Zookeeper对比redis
引入SpringCloud中文文档介绍算法
Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.缓存
At Netflix, Eureka is used for the following purposes apart from playing a critical part in mid-tier load balancing.服务器
For aiding Netflix Asgard - an open source service which makes cloud deployments easier, in架构
For our cassandra deployments to take instances out of traffic for maintenance.app
For our memcached caching services to identify the list of nodes in the ring.
For carrying other additional application specific metadata about services for various other reasons.
意思为:
Eureka是一种基于REST(Representational State Transfer)的服务,主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移。
在Netflix,除了在中间层负载平衡中起关键做用以外,Eureka还用于如下目的。
为了帮助Netflix Asgard - 一种开源服务,能够更轻松地实现云部署
对于咱们的cassandra部署,将实例从流量中取出进行维护。
对于咱们的memcached缓存服务来识别环中的节点列表。
因为各类其余缘由而携带有关服务的其余应用程序特定元数据。
上面的架构图描述了Eureka是如何在Netflix部署的,这也是Eureka集群的运行方式。在每一个区域(region)都有一个eureka集群,它只知道该区域内的实例信息。每一个分区(zone)至少有一个eureka服务器来处理本分区故障。
服务注册在Eureka上而且每30秒发送心跳来续租。若是一个客户端在几回内没有刷新心跳,它将在大约90秒内被移出服务器注册表。注册信息和更新信息会在整个eureka集群的节点进行复制。任何分区的客户端均可查找注册中心信息(每30秒发生一次)来定位他们的服务(可能会在任何分区)并进行远程调用。
著名的CAP理论指出,一个分布式系统不可能同时知足C(一致性)、A(可用性)和P(分区容错性)。因为分区容错性在是分布式系统中必需要保证的,所以咱们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。
zookeeper优先保证CP,当服务发生故障会进行leader的选举,整个期间服务处在不可用状态,若是选举时间过长势必会大幅度下降性能,另外就用途来讲zookeeper偏向于服务的协调,固然含有注册中心的做用
eureka优先保证AP, 即服务的节点各个都是平等的,没有leader不leader一说, 当服务发生故障时,其他的节点仍然能够提供服务,所以在出现故障时,性能表现优于zookeeper,可是可能会形成数据不一致的状况。
总结:Eureka做为单纯的服务注册中心来讲要比zookeeper更加“专业”,由于注册服务更重要的是可用性,咱们能够接受短时间内达不到一致性的情况。