当前位置:   article > 正文

eureka核心操作解析:集群间数据同步、自我保护、三级缓存_eureka集群同步策略

eureka集群同步策略

1.什么是注册中心?

Eureka是spring cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)P(分区容错性)。
  • 1

一个Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者,又可以作为服务的消费者。具体结构如下图:

Eureka 是一个基于 REST(表述性状态转移)的服务,主要用于AWS云中定位服务,以实现中间层服务器的负载平衡和故障转移。

Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 进行了二次封装,主要负责完成微服务架构中的服务治理功能。

2.Eureka 基本概念

2.1.1.Register - 服务注册

当 Eureka Client 向 Eureka Server 注册时,Eureka Client 提供自身的元数据,比如 IP 地址、端口、运行状况指标的 Url、主页地址等信息。

2.1.2.Renew - 服务续约

Eureka Client 在默认情况下会每隔 30 秒来发送一次心跳来进行服务续约。通过服务续约来告知 Eureka Server 该 Eureka Client 仍然可用,没有出现故障。

如果 Eureka Server 90 秒内没有收到 Eureka Client 的心跳,Eureka Server 会将该 Eureka Client 实例从注册列表中剔除。

注意:官网不建议修改服务续约的间隔时间。

2.1.3.Fetch Registries - 获取服务注册列表信息

Eureka Client 从 Eureka Server 获取服务注册表信息,并将其缓存在本地(内存中)。Eureka Client 再从本地的注册列表中获取需要的服务信息,从而进行远程调用。

这个注册列表信息定时(每 30 秒)更新一次,每次返回的列表信息可能与当前缓存的数据不一致,Eureka Client 会自己处理这些信息。

Eureka Client 和 Eureka Server 可以使用 JSON 和 XML 数据格式进行通信,默认情况下,Eureka Client 使用 JSON 的方式来获取服务注册列表信息。

Eureka Client 缓存了所有的服务注册列表信息,其实这是一个 Eureka 的缺点,比较浪费内存,当服务器实例达到一定数量之后,比如 40K 以上的集群规模,每次更新内存都会消耗很大的资源,而且每个客户端实例都会缓存这么一份数据,实际上很多都是无效数据。

2.1.4.Cancel - 服务下线

Eureka Client 在程序关闭时可以向 Eureka Server 发送下线请求。发送请求后,该客户端的实例信息将从 Eureka Server 的服务注册列表中删除。

该下线请求不会自动完成,需要在程序关闭时调用以下代码:

DiscoveryManager.getInstance().shutdownComponent();

注意这是一个过期方法,一般不会使用。

2.1.5.Eviction - 服务剔除

默认情况下,如果 Eureka Client 连续 90 秒没有向 Eureka Server 发送服务续约(心跳),Eureka Server 会将该客户端的实例信息将从服务注册列表中删除,即服务剔除。

3.客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/416303
推荐阅读
相关标签
  

闽ICP备14008679号