eureka(eureka的工作原理和流程)

伏羲号

Eureka原理及工作流程

eureka(eureka的工作原理和流程)

Eureka作为分布式系统的注册中心,主要作用是用于服务治理,Eureka分为Eureka Server和Eureka Client两种。

(1)Eureka Server—注册中心服务端;

(2)Eureka Client—注册中心客户端;

一、工作原理:

1、服务注册后,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

2、微服务默认每30秒,就会从eureka服务端获取一次最新的服务列表。如果某台微服务down机,或者添加了几台机器,此时eureka server会通知订阅他的客户端,并让客户端更新服务列表,而且还会通知其他eureka server更新此信息。

3、心跳检测,微服务每30秒向eureka server发送心跳,eureka server若90s之内都没有收到某个客户端的心跳,则认为此服务提供者出了问题,会从注册的服务列表中将其删除,并通知订阅它的客户端更新服务列表,而且还会通知其他eureka server更新此信息。

4、保护机制:默认情况下,如果 Eureka Server 在一定的 90s 内没有接收到某个微服务实例的心跳,会注销该实例。但是在微服务架构下服务之间通常都是跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,网络故障,导致此实例被注销。固定时间内大量实例被注销,可能会严重威胁整个微服务架构的可用性。为了解决这个问题,Eureka 开发了自我保护机制。

Eureka进入自我保护机制后,将不再从注册表中移除因长时间没收到心跳而应该过期的服务,并且仍然能够接收新服务的注册和查询请求,但是不会被同步到其他节点上,当网络稳定时,当前实例新的注册信息会被同步到其他节点中。

Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。当个别客户端出现心跳失联时,则认为是客户端的问题,剔除掉客户端;当 Eureka 捕获到大量的心跳失败时,则认为可能是网络问题,进入自我保护机制;当客户端心跳恢复时,Eureka 会自动退出自我保护机制。

如果在保护期内刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,即会调用失败。对于这个问题需要服务消费者端要有一些容错机制。

二、工作流程

1)Eureka Server 启动成功,等待服务注册,每个Eureka Server 都存在独立完整的服务注册表信息

2)Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务

3)Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常

4)当 Eureka Server 90s 内没有收到 Eureka Client 的心跳,注册中心则认为该节点失效,会注销该实例

5)单位时间内 Eureka Server 统计到有大量的 Eureka Client 没有上送心跳,则认为可能为网络异常,进入自我保护机制,不再剔除没有上送心跳的客户端

6)当 Eureka Client 心跳请求恢复正常之后,Eureka Server 自动退出自我保护模式

7)Eureka Client 定时全量或者增量从注册中心获取服务注册表,并且将获取到的信息缓存到本地

8)服务调用时,Eureka Client 会先从本地缓存找寻调取的服务。如果获取不到,先从注册中心刷新注册表,再同步到本地缓存

9)Eureka Client 获取到目标服务器信息,发起服务调用

10)Eureka Client 程序关闭时向 Eureka Server 发送取消请求,Eureka Server 将实例从注册表中删除。

eureka是注册中心,负责微服务的注册与发现,起到承上启下的作用,在微服务架构中相当于人体的 大脑,很重要,nacos是阿里巴巴出的,功能类似eureka,nacos的部署方式与 eureka不太一样,euraka是需要创建springboot项目,然后将euraka服务端通过gav的方式加载进来,然后部署项目。

nacos是直接从阿里巴巴nacos的官网下载jar包,启动服务

客户端可以通过以下方式继续访问:1. 使用负载均衡器:在eureka宕机后,可以通过负载均衡器来分发请求到可用的服务实例上,确保客户端能够继续访问服务。2. 使用服务发现框架:如果客户端使用了其他的服务发现框架,如Consul或Zookeeper,可以通过这些框架来获取可用的服务实例信息,从而继续进行访问。3. 使用缓存:客户端可以在eureka宕机前将服务实例信息缓存在本地,当eureka宕机后,客户端可以从缓存中获取可用的服务实例信息,继续进行访问。4. 手动配置服务实例信息:客户端可以手动配置可用的服务实例信息,将其硬编码到客户端代码中,从而绕过eureka进行访问。这种方式需要注意及时更新服务实例信息,以保证客户端能够访问到最新的可用服务。总结:当eureka宕机后,客户端可以通过使用负载均衡器、服务发现框架、缓存或手动配置服务实例信息等方式来继续访问服务,确保系统的可用性和稳定性。

Eureka可以支持成千上万的实例,这取决于所使用的硬件和网络资源。Eureka使用哈希表来存储和管理服务实例,这意味着它可以很好地扩展到大规模的集群中。另外,Eureka还支持多个Eureka服务器之间的相互注册和发现,以提高可靠性和可扩展性。因此,如果正确地配置和管理,Eureka可以支持任何规模的应用程序和服务。

默认检测周期是30秒。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,123人围观)

还没有评论,来说两句吧...