Spring cloud eureka 原理及流程

Eureka是一个基于HTTP的微服务发现组件,用于在分布式系统中定位服务。它的工作流程包括服务注册、心跳续约、服务剔除、自我保护机制以及服务调用。EurekaServer维护服务注册表,而EurekaClient向Server注册并发送心跳。在网络异常时,Eureka会进入自我保护模式避免服务过早剔除。服务调用时,Client会从本地缓存或Server获取服务信息,并使用负载均衡策略如轮询进行选择。

Spring cloud eureka 原理:

1.eureka server 端: 1⃣️client向server端注册,server端维护一个两层Map结构,存储注册信息(一层存服务名称,一层存ip)
2⃣️消费者调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表3⃣️集群中的server通过复制各自状态同步信息4⃣️服务剔除5⃣️自我保护

2.eureka client端:
1⃣️向server端注册2⃣️向server端发送心跳,续约2⃣️从server端拉取注册信息并缓存3⃣️定时更新列表4⃣️client端关闭时会向server端发送取消租约

3.server端和client端通信是根据http协议

4.eureka强调了CAP中的AP,即可用性和分区容错性,他与Zookeeper这类强调CP(一致性和分区容错性)最大的区别就是eureka为了实现更高的服务可用性,牺牲了一致性

Eurka 工作流程

1、Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 复制同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息

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

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

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

5、单位时间内 Eureka Server 统计到有大量的 Eureka Client 没有上送心跳,比如15分钟之内有85%心跳失败,则认为可能为网络异常,进入自我保护机制,不再剔除没有上送心跳的客户端,所以Client客户端一定要有送错机制,比如熔断,幂等

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

7、Eureka Client 每30秒向Server发送一个rest请求,获取服务注册表,Server端返回一个只读的的列表,并且将获取到的信息缓存到本地

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

9、Eureka Client 获取到目标服务器信息,发起服务调用,具体调用哪个实例,Ribbon会采用默认的轮询策略

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

这就是Eurka基本工作流程

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值