目录
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.客户端发起服务注册
客户端向服务端发生请求,将自身相关的信

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

830

被折叠的 条评论
为什么被折叠?



