Spring Cloud Eureka 注册中心高可用机制

一、Eureka 正常工作流程

  • Service 服务作为 Eureka Client 客户端需要在启动的时候就要向 Eureka Server 注册中心进行注册,并获取最新的服务列表数据。
  • Eureka Server 之间通过 Peer To Peer 模式复制最新数据。
  • Eureka Client 通过心跳机制定时向 Eureka Server 续约,上报自己的状态,并获取最新的服务列表数据。
  • Eureka Client 在本地有一个localRegionApps变量,用来保存从 Eureka Server 拉取回来的服务列表数据。

二、主要看一下Eureka 异常场景下如何做到高可用

Eureka Client  在启动的时候发现 Eureka Server 都用不了,可能在Eureka Server启动失败,或者还没有启动,这样就会导致:

  • 客户端无法注册自己
  • 客户端无法获取服务列表

这样就无法和其他服务交互了,但是Eureka 可以通过他的备用机制解决这个问题。

Eureka Client 有一个属性:


1

eureka.client.backup-registry-impl

这是 Eureka 为 Client 提供的一个 fallback,在启动的时候如果访问不到 Eureka Server,就会使用备用的 registry,把 backup-reg

istry 返回的服务列表保存到本地 localRegionApps,这就可以正常和其他Service交互了。

2. 在服务正常运行期间 Eureka Server 出现部分不可用的场景

Client 在访问 Server 时,不会一直按照配置文件中的顺序,会随机调换顺序,这样可以防止某个Server成为访问热点。

Eureka Client 维护了一个不可用 Server 列表,如果发现某个 Server 不可用,会将其放入这个不可用列表。

Client 在访问 Server 时,会排除掉不可用列表中的Server。

比如 Eureka Client 配置了3个 Server,server1、server2、server3,假设 server3 故障了,Client 就把 server3 放入不可用列表,以后再访问 Server 时就排除掉 server3。

3. 正常运行期间 Eureka Server 全部不可用

Client 曾从 Server 正常获取过服务列表数据,本地localRegionApps 存有服务列表。

如果 Server 都挂了,那么 Client 的定时程序访问 Server 时会抛出异常,便不会更新localRegionApps变量,所以 Client 可以继续使用localRegionApps中的服务列表,与其他Service正常交互。

4. Eureka Client 未及时续约场景

Eureka Server 对于未续约的 Client 会认为它已经不可用了,就会从服务列表中删除。

但Client 未续约有时不是 Client 的问题,可能是因为网络因素,例如网络的抖动,所以,如果使用一刀切的判断方式,可能出现误判,Eureka 为了避免出现误判,设计了一种自我保护机制 Self Preservation

如果大面积出现了 Client 未续约的情况,不大可能这么多 Client 同时挂掉,为防止误判,就会开启自我保护,不会剔除 Client 实例,从而保护注册信息。

具体什么情况开启自我保护呢,可以配置一个阈值(默认值为 15%),只有在最近一分钟接收到的续约次数小于阈值的时候开启。

三、总结

Eureka 通过如下机制来达到高可用:

  • backup-registry

即使 client 启动的时候 Eureka Server 都不可用也没关系,通过备用 registry 可以拿到服务列表。

  • 不可用 Eureka Server 列表

client 会维护一个不可用server列表,避免访问失效的server。

  • 服务列表本地缓存

在 Eureka Server 都失效时,本地的服务列表不会更新,使其依然可用,也就可以继续使用其中的service信息。

  • Self Preservation

自我保护机制防止误删除client。

来源:内蒙古SEO

原文地址:https://www.cnblogs.com/1994jinnan/p/11985632.html

时间: 2024-08-26 17:52:19

Spring Cloud Eureka 注册中心高可用机制的相关文章

Spring cloud Eureka 服务治理(高可用服务中心)

在微服务的架构中,我们考虑发生故障的情况,所以在生产环境中我们需要对服务中各个组件进行高可用部署. Eureka Server 的高可用实际上就是将自己作为服务想其它服务注册中心注册自己,这样就形成了一组互相注册的服务中心, 以实现服务清单 的互相同步,达到高可用的效果. 1. 创建 application-peer1.properties ,作为peer1服务中心的配置,并将serviceUrl 指向 peer2 spring.application.name=eureka-server se

spring cloud Eureka注册中心集群搭建

1.创建springcloud-eureka maven项目 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/m

微服务时代之网关及注册中心高可用架构设计

1. 微服务关系架构图 简要说明: (1)所有应用或者服务要想对外提供服务(包括网关),必须首先到注册中心进行注册. (2)所有访问通过服务网关进行访问,然后由服务网关路由到对应服务中心进行交互访问. 2. 网关及注册中心高可用架构图 2.1 springcloud eureka高可用方案 由上图可以看出,注册中心与路由很容易成为单点故障,软件老王以前使用springcloud eureka高可用架构方案: (1)euraka部署成集群模式,相互注册,通过心跳策略同步注册信息: (2)客户端注册

Spring cloud之Eureka(二)注册中心高可用

背景 在实际的生产环境中,注册中心如果只有一个,是很危险的,当这个注册中心由于各种原因不能提供正常服务或者挂掉时,整个系统都会崩溃,这是很致命的的,所以在Spring cloud 设计之初就考虑到了注册中心的高可用. springCloud的eureka高可用配置方案思路是:几个服务中心之间相互注册,比如两个注册中心,A注册到B上,B注册到A上,如果是三个注册中心则是:A注册到BC上,B注册到AC上,C注册到AB上,这样就会在几个注册中心间进行同步,同时服务提供方向三个注册中心均注册,这样就会保

spring cloud 搭建注册中心Eureka(集群模式)

集群 注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的.在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态.为了维持其可用性,使用集群是很好的解决方案.Eureka通过互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署. 新建3个配置文件 application-peer1.yml spring: application: name: Service #应用名称,也是服务注册的

Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是config client,业界也有些知名的同类开源产品,比如百度的disconf. 相比较同类产品,SpringCloudConfig

Spring Cloud之注册中心搭建

一.注册中心服务端搭建 1)引入相关Maven坐标 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> 2)加入相关注解 @EnableEurekaServer 3)相关配置属性,application.yml

Spring Cloud 核心组件——注册中心

1. 什么是微服务的注册中心 注册中心:服务管理,核心是有个服务注册表,心跳机制动态维护. 为什么要用? 微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题. 主流的注册中心:Zookeeper.Eureka.Consul.ETCD 等. 服务提供者 Provider:启动的时候向注册中心上报自己的网络信息. 服务消费者 Consumer:启动的时候向注册中心上报自己的网络信息,拉取 Provider 的相关网络信息.

Spring Cloud - Nacos注册中心入门单机模式及集群模式

近几年微服务很火,Spring Cloud提供了为服务领域的一整套解决方案.其中Spring Cloud Alibaba是我们SpringCloud的一个子项目,是提供微服务开发的一站式解决方案. 包含微服务开发的必要组件,基于SpringCloud 符合SpringCloud标准,是阿里的微服务的解决方案. 文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md Nacos的安装与启动 Nacos是