服务注册中心Eureka 高可用集群

本文详细介绍了Eureka注册中心如何实现高可用集群,包括配置多个服务节点,通过彼此注册实现数据同步。同时,探讨了Eureka的自我保护模式,解释了在网络异常时如何保持服务注册信息的稳定性,以及自我保护模式可能带来的问题。最后,建议在实际应用中结合服务消费者的容错机制来应对可能的挑战。
摘要由CSDN通过智能技术生成


1.Eureka 注册中心 高可用集群概述

	在微服务架构的这种分布式系统中,我们要充分考虑各个微服务组件的高可用性问题,不能
有单点故障,I由于注册中心eureka本身也是一个服务,如果它只有一个节点,那么它有可
能发生故障,这样我们就不能注册与查询服务了,所以我们需要一个高可用的服务注册中
心,这就需要通过注册中心集群来解决。
	eureka服务注册中心它本身也是一个服务,它也可以看做是一个提供者,又可以看做是一个
消费者,我们之前通过配置:,
	eureka.client.register-with-eureka=false 让注册中心不注册自己,但是我们可以向其他注册
中心注册自己;,

在这里插入图片描述

	Eureka Server 的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这
样就会形成—组互相注册的服务注册中心,进而实现服务清单的互相同步,往注册中心A
上注册的服务,可以被复制同步到注册中心B上,所以从任何一台注册中心上都能查询到已
经注册的服务,从而达到高可用的效果。
	一个注册中心故障了 ,有任意一个注册中心就可以用。

2.Eureka 注册中心 高可用集群搭建

由于是springboot项目 可以不同环境,在 复制两份 不同的yml配置文件
在这里插入图片描述
修改其中内容
在这里插入图片描述
在这里插入图片描述

2.1但是不识别其中别名

在这里插入图片描述

	C:\Windows\System32\drivers\etc\hosts文件下修改加入

在这里插入图片描述

加入了  
127.0.0.1 eureka8083
127.0.0.1 eureka8084

2.2创建两个main入口

在这里插入图片描述

2.3如何 main和 端口yml对应

右键main 类创建运行项
在这里插入图片描述
选择激活那一份配置文件 (8083main 激活了8083配置文件)
在这里插入图片描述
在这里插入图片描述

2.4打开后发现(相互指向)

在这里插入图片描述
在这里插入图片描述

3.Eureka 注册中心 高可用集群测试

3.1 注册的服务中配置 变成2个

以服务提供者 (服务消费者为例)

server:
  port: 8081

spring:
  application:
    # 配置服务的名称
    name: 01-springcloud-service-provider

Eureka:
  client:
    # 注册中心连接地址
    service-url.defaultZone: http://eureka8083:8083/eureka/,http://eureka8084:8084/eureka/

3.1.1 两个注册中心 数据同步

在这里插入图片描述
在这里插入图片描述

3.2 消费者只连接一个注册中心

server:
  port: 8082

spring:
  application:
    # 配置服务的名称
    name: 02-springcloud-service-consumer

eureka:
  client:
    # 注册中心连接地址 http://eureka8083:8083/eureka/,http://eureka8084:8084/eureka/
    service-url.defaultZone: http://eureka8083:8083/eureka/

3.2.1 两个注册中心 通过相互注册 数据也同步

在这里插入图片描述
在这里插入图片描述

3.3 挂掉8083 发现8084还是存在两个

在这里插入图片描述

3.3.1 即使 8084报错

在这里插入图片描述

2021-01-06 22:21:48.653 ERROR 1316 --- [et_eureka8083-7] 
c.n.e.cluster.ReplicationTaskProcessor   : Network level connection 
to peer eureka8083; retrying after delay

4.Eureka 注册中心 自我保护机制

在这里插入图片描述
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

	在没有Eureka自我保护的情况下,如果Eureka Server在一定时间内没有接收到某个微服
务实例的心跳,Eureka Server将会注销该实例,但是当发生网络分区故障时,那么微服务
与Eureka Server之间将无法正常通信,以上行为可能变得非常危险了——因为微服务本身
其实是正常的,此时不应该注销这个微服务,如果没有自我保护机制,那么Eureka Server
就会将此服务注销掉。

在这里插入图片描述

如果没有心跳就认为是宕机,销毁服务注册,而服务保护机制会先保护所有服务

	Eureka通过“自我保护模式”来解决这个问题——当Eureka Server节点在短时间内丢失过多客
户端时(可能发生了网络分区故障),那么就会把这个微服务节点进行保护。一旦进入自我保
护模式,Eureka Server就会保护服务注册表中的信息,不删除服务注册表中的数据(也就是
不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会再自动退出自我保护模
式。

	所以,自我保护模式是一种应对网络异常的安全保护措施,它的架构哲学是宁可同时保留所
有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务,使
用自我保护模式,可以让Eureka集群更加的健壮、稳定。

当然也可以使用配置项: eureka.server.enable-self-preservation = false禁用自我保护模式。

4.1Eureka Server自我保护模式也会给我们带来一些困扰

	但是 Eureka Server自我保护模式也会给我们带来一些困扰,如果在保护期内I某个服务提供
者刚好非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对
于这个问题需要服务消费者端具有一些容错机制,如重试,断路器等。

	Eureka的自我保护模式是有意义的,该模式被激活后,它不会从注册列表中剔除因长时间没收到心跳
导致注册过期的服务,而是等待修复,直到心跳恢复正常之后,它自动退出自我保护模式。这种模式旨
在避免因网络分区故障导致服务不可用的问题。
	例如,两个微服务客户端实例A和B之间有调用的关系,A是消费者,B是提供者,但是由于网络故障,B
未能及时向Eureka发送心跳续约,这时候Eureka不能简单的将B从注册表中剔除,因为如果剔除了,A
就无法从Eureka服务器中获取B注册的服务,但是这时候B服务是可用的;·
	所以,Eureka 的自我保护模式最好还是开启它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值