Eureka原理看这一篇就够了

本文详细解析了Eureka服务发现如何通过统一的注册中心实现服务的解耦与动态管理,包括服务注册、心跳检测、服务剔除与一致性策略,以及集群部署确保高可用性。

目录

1.服务发现概念

2.服务发现解决的问题

2.1.解耦、屏蔽程序之间IP及端口依赖

2.2.动态管理服务状态

3.Eureka是如何设计服务发现

3.1.同一管理中心

3.2.基本概念

3.3.基本运行流程

 3.3.1.客户端发起服务注册

 3.3.2.服务端保存注册信息

 3.3.3.客户端定时发送心跳检测

3.3.4.服务端服务剔除和自我保护

3.3.5.客户端发送服务下线请求

3.3.6.客户端定时获取注册表信息

 3.3.7.客户端整合服务发现

4.Eureka如何保证高可用和一致性

4.1.CAP理论

4.2.服务端数据同步

4.2.1.Peer To Peer同步模式

 5.Eureka分区


1.服务发现概念

首先,要理解服务发现的概念,需要先了解分布式系统,这里引用一个通俗易懂的分布式系统比喻

“当一头牛拉不动车的时候,不要试图寻找一头更强壮的牛,而是用两头牛来拉车”

因此,从狭义来解释,分布式系统是:由多个应用程序协同来完成任务的一种工作模式系统。这里的任务可以是一个下单操作、可以是一个复杂的统计计算、可以是存储一个超大数据等等,总之就是这个任务不适合或者无法通过单个程序独立完成,需要多个程序协同完成。

2.服务发现解决的问题

2.1.解耦、屏蔽程序之间IP及端口依赖

分布式系统中,程序之间通过一次或者多次远程调用或者数据传输完成任务,调用程序我们首先需要知道被调用的程序在网络中的位置,在网络中地位程序的位置通过IP+端口号。但是这种方式存在两个问题:

1、IP地址没有任务特殊含义,不容易记忆和理解;

2、当被调用的程序IP和端口号改变,调用者也需要同步修改地址;

通过服务发现,可以将程序之间对于IP+端口号的依赖转化为服务名的依赖,服务名可以根据业务功能等进行命名。因此,解耦、屏蔽服务之间IP+端口号的依赖是分布式系统需要解决的第一个问题。

2.2.动态管理服务状态

在分布式系统中,我们说程序或者说服务有可能宕掉,磁盘可能损坏、线程可能全部被占用,网络可能不稳定。因此,在分布式系统中程序的状态是随时变化的,不可预测的,谁也无法保证某个程序下一秒是否还可以正常运行,如果某个程序挂掉,调用者不能及时知道,就会出现多米勒骨牌式的连锁反应。

服务发现可以对服务的状态进行管理,当程序状态发生改变,可以第一时间通知程序的调用者,可以从两方面理解:

1、程序之间需要彼此知道对方的信息与状态;

2、对方程序状态发生改变能及时知晓;

3.Eureka是如何设计服务发现

3.1.统一管理中心

服务发现要做的是抽象程序标识达到解耦、屏蔽IP+端口号依赖以及程序状态的实时管理,要进行管理,首先会想到集权、集中、统一、设置机构等等,Eureka也是如此,要管理服务程序,首先要有一个统一的管理中心--注册中心

因此,注册中心就是Eureka的大脑,负责Eureka各项管理、协调的职能。

3.2.基本概念

将注册中心作为服务发现中的管理者,是一个不错的想法。就如一个公司,出钱的是老板、找活的是销售经历、监督干活的是项目经历、干活的是程序员。

Eureka也对管理者与非管理者进行了区分,负责管理的-注册中心(服务端),负责干活的程序(客户端),对应EurekaServer和EurekaClient

3.3.基本运行流程

  • 客户端发起服务注册
  • 服务端保存注册信息到注册表
  • 客户端定时发生心跳检测
  • 服务端服务剔除及自我保护
  • 客户端发起服务下线
  • 客户端或者服务端注册信息到本地内存
  • 客户端整合服务发现

 3.3.1.客户端发起服务注册

客户端向服务端发生请求,将自身相关的信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿小木的愤怒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值