如何启动eureka服务

如何启动eureka服务,第1张

使用Eureka做服务发现

Zookeeper做注册中心的缺陷

Peter Kelley(个性化教育初创公司Knewton的一名软件工程师)发表了一篇文章说明为什么ZooKeeper用于服务发现是一个错误的做法,他主要提出了三个缺点[1]:

ZooKeeper无法很好的处理网络分区问题,当网络分区中的客户端节点无法到达Quorum时,会与ZooKeeper失去联系,从而也就无法使用其服务发现机制。

服务发现系统应该是一个AP系统,设计上针对可用性;而ZooKeeper是一个CP系统。

ZooKeeper的设置和维护非常困难,实际 *** 作的时候也容易出错,比如在客户端重建Watcher,处理Session和异常的时候。

当然,Peter Kelley提出的这几个问题并不是不能克服的,并不能说明基于ZooKeeper就不能做好一个服务发现系统,但是我们可能有更简洁的方案来实现。

Eureka介绍

什么是Eureka

官方的介绍在这里Eureka wiki。Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

在我看来,Eureka的吸引力来源于以下几点:

开源:大家可以对实现一探究竟,甚至修改源码。

可靠:经过Netflix多年的生产环境考验,使用应该比较靠谱省心

功能齐全:不但提供了完整的注册发现服务,还有Ribbon等可以配合使用的服务。

基于Java:对于Java程序员来说,使用起来,心里比较有底。

spring cloud可以使用Spring Cloud, 与Eureka进行了很好的集成,使用起来非常方便。

Eureka架构

Netflix主要是在AWS中使用Eureka的,虽然同时也支持本地环境,但是了解AWS的一些基础概念对于理解Eureka的设计非常有帮助。

我们先来看看Eureka的集群架构图

1,服务注册。

Eureka Server作为服务注册中心,为微服务架构提供服务注册功能。微服务节点启动后,会在Eureka中进行注册,Eureka Server中会存储所有的可用微服务节点信息。

2,Eureka客户端。

Eureka Client是一个java客户端,用于简化与Eureka Server的交互。客户端同时也具备一个内置的、使用轮询算法的负载均衡器。

3,心跳检测。

在应用启动后,客户端将会向Eureka Server发送心跳(默认为30秒,我们项目配置的是30秒)。Eureka Serber如果在多个心跳周期内没有收到某个微服务节点的心跳,将会剔除该节点(默认90秒,我们项目配置的是90秒)。

4,集群数据同步。

Eureka Server之间通过复制的方式来进行数据同步。

5,客户端缓存功能。

Eureka Client具有缓存功能,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。

6,清理失效节点。

7,自我保护模式。

自我保护模式是指在网络出现异常的情况下,由于Eureka Server无法收到客户端的心跳续约,Eureka Server会判断该节点不可用,但其实该节点可能是正常的,可用的。为了避免误删,Eureka Server引入了自我保护模式。一旦Eureka Server发现当前收到的心跳总次数小于心跳阈值的85%(默认值),就会进入自我保护模式,此时Eureka Server不会清理任何节点。直到Eureka Server收到的心跳总次数大于等于心跳阈值的85%。

自我保护模式的设计哲学是:在不确定节点是否可用的情况下,尽可能保留节点。

问题:Eureka Server的服务发现,是如何工作的?

答:服务发现和服务注册是同一个概念。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7530250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存