Eureka -- 浅谈Eureka
目录:
什么是Eureka
引入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
- Fast rollback of versions in case of problems avoiding the re-launch of 100's of instances which could take a long time.
- In rolling pushes, for avoiding propagation of a new version to all instances in case of problems.
-
For our cassandra deployments to take instances out of traffic for maintenance.
-
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 - 一种开源服务,可以更轻松地实现云部署
- 在出现问题的情况下快速回滚版本,避免重新启动可能需要很长时间的100个实例。
- 在滚动推送中,以避免在出现问题时将新版本传播到所有实例。
-
对于我们的cassandra部署,将实例从流量中取出进行维护。
-
对于我们的memcached缓存服务来识别环中的节点列表。
-
由于各种其他原因而携带有关服务的其他应用程序特定元数据。
Eureka架构图
上面的架构图描述了Eureka是如何在Netflix部署的,这也是Eureka集群的运行方式。在每个区域(region)都有一个eureka集群,它只知道该区域内的实例信息。每个分区(zone)至少有一个eureka服务器来处理本分区故障。
服务注册在Eureka上并且每30秒发送心跳来续租。如果一个客户端在几次内没有刷新心跳,它将在大约90秒内被移出服务器注册表。注册信息和更新信息会在整个eureka集群的节点进行复制。任何分区的客户端都可查找注册中心信息(每30秒发生一次)来定位他们的服务(可能会在任何分区)并进行远程调用。
Eureka组件
Eureka作用
1.中心化配置:用一个统一的注册中心管理各个节点,如zookeeper
Zookeeper和Eureka对比
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。
zookeeper优先保证CP,当服务发生故障会进行leader的选举,整个期间服务处在不可用状态,如果选举时间过长势必会大幅度降低性能,另外就用途来说zookeeper偏向于服务的协调,当然含有注册中心的作用
eureka优先保证AP, 即服务的节点各个都是平等的,没有leader不leader一说, 当服务发生故障时,其余的节点仍然可以提供服务,因此在出现故障时,性能表现优于zookeeper,但是可能会造成数据不一致的情况。
总结:Eureka作为单纯的服务注册中心来说要比zookeeper更加“专业”,因为注册服务更重要的是可用性,我们可以接受短期内达不到一致性的状况。
- 学习本是一个不断抄袭、模仿、练习、创新的过程。
- 虽然,园中已有本人无法超越的同主题博文,为什么还是要写。
- 对于自己,博文只是总结。在总结的过程发现问题,解决问题。
- 对于他人,在此过程如果还能附带帮助他人,那就再好不过了。
- 由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充!
- 感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。