Spring Cloud 微服务实战总结-第3章 服务治理:Spring Cloud Eureka

服务治理

最核心和基础的模块,主要用来实现各微服务实例的自动化注册与发现

基础架构
三个核心要素

服务注册
服务单元向注册中心登记服务,附加主机与端口、版本号、通信协议等信息
服务注册中心通过心跳检测服务是否可用,并清除不可用服务
服务提供者
提供服务的应用,可以是Spring Boot应用或其他技术平台遵循Eureka通信机制的应用
服务消费者
消费者应用从服务注册中心获取服务列表,从而使消费者可以知道去何处调用其所需要的服务
可用Ribbon和Feign实现

服务治理机制

服务提供者
服务注册:“服务提供者”在启动时通过发生REST请求将自己注册到Eureka Server
服务同步:服务注册中心之间相互注册为服务,当服务提供者发生注册请求到一个服务注册中心时,它将请求转发给集群中相连的其他注册,从而实现注册注册中心间的服务同步
服务续约:向注册中心周期性发送心跳更新服务租约
服务下线:服务实例正常的关闭,会触发一个REST请求给服务注册中心,然后服务端将该服务状态设置为下线,并传播该事件。
服务消费者
服务获取:发送REST请求给服务注册中心获取服务清单。(为性能考虑,Eureka Server维护一份只读服务清单返回给客户端,同时每隔一定时间[默认30秒,可修改]更新一次该缓存)
服务调用:服务消费者在获取清单中,通过服务名获取具体实例进行调用
服务发现
服务A通过服务名向注册中心咨询获取可用服务B
服务A从清单中以某种(客户端、服务器端)轮询策略取出一个进行调用
服务注册中心
失效剔除:不正常下线(如内存溢出、网络故障等),Eureka Server启动时创建一个定时任务,每隔一段时间(默认60秒)将当前清单中超时(默认90秒)没有续约的服务剔除
自我保护:Eureka Server运行期间,统计心跳失败比例在15分钟内低于85%,将这些实例注册信息保护期刊,让这些实例不过期。(但这样要求客户端有容错机制,如请求重试、断路器等)


Netflix Eureka

Eureka客户端
java编写,服务的注册与发现
通过注解和参数配置
向注册中心周期性发送心跳更新服务租约
从服务端查询服务并缓存到本地
由于服务端提供RESTful API,所有也支持非java的客户端,如.NET的Steeltoe、Node.js的eureka-js-client
Eureka服务端
java编写,可集群模式部署,不同区域异步模式相互复制各自状态
提供完备的RESTful API
高可用:实际上就是将自己作为服务向其他服务注册中心注册自己,这样形成一组相互注册的服务注册中心以实现服务的相互同步,达到高可用的效果。

通信协议
使用Jersey和XStream配合JSON作为Server与Client间的通信协议

服务发现与注册
服务发现:Eureka客户端完成
服务消费:Ribbon完成

服务治理机制强调CAP中的AP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值