05-Spring Cloud Alibaba Nacos注册中心GRPC总结

05-Spring Cloud Alibaba Nacos注册中心GRPC总结

Nacos2.X相比1.X中,AP模式不在采用Http的形式进行客户端与服务端的通信,而是采用GRPC。CP模式的通信方式不变,并不在允许临时实例与非临时实例混用,并在Nacos2.x中采用大量事件,通过事件进行驱动。

Nacos基本组成

  1. 服务注册

    Nacos client会向Nacos service 发送Grpc请求,其中包括ip、端口、namespace和groName等信息,并发布,服务注册事件,服务元数据变更事件,客户端变更事件,实例元数据变更事件;其中注册事件是将实例信息推送所有客户端,并建实例保存在注册表中

  2. 服务发现

    Nacos client会向Nacos service 发送Grpc请求,获取注册时注册表中的全部实例信息,并缓存到本地,同时client会开启定时任务来定期获取注册表信息

  3. 服务间信息同步

    服务间信息同步是在客户端变更事件和客户端断开事件中完成,发送DistroDataRequest请求,其他service端DistroDataRequestHandler中处理

  4. 服务端与客户端健康检查

    客户端容器初始化时NacosNamingService会创建两个线程,一个是处理连接成功与断开的线程,另一个是处理异步重连和健康检查的线程;健康检查就是在这里进行的,默认五秒发一次请求,不健康设置重连上下文,发起重连请求

  5. 服务间心跳

    AP模式采用的是Distro协议,每个节点都是平等的处理数据,不同的服务之间数据是弱一致的;Distro协议是保证每个服务之间数据的最终一致,服务之间是互相推送各自的数据,不存在心跳一说,数据同步在上面服务信息同步中描述;在CP中采用的Raft协议,采用两阶段提交,节点之间并不平等,客户端发生变化是先将信息提交给master,master再将信息提交给其余节点,要求其余节点要半数以上的节点返回成功才判定信息同步成功并返回,而master面临宕机、网络等因素的风险,所以服务间需要心跳探知当前存活的节点数,master是否需要重新选举等

Nacos 常见处理事件

事件名描述监听处理
ClientChangedEvent客户端变更事件向其他服务同步客户端变化
ClientDisconnectEvent客户端断开事件向其他服务同步客户端删除信息,删除本地元数据缓存
ServiceMetadataEvent服务元数据变更事件更新本地元数据缓存
ClientRegisterServiceEvent客户端注册事件更新注册表
InstanceMetadataEvent实例元数据事件记录本地缓存文件,更新本地缓存
ClientDeregisterServiceEvent客户端注销事件更新缓存,发布ServiceChangedEvent
ClientSubscribeServiceEvent客户端订阅事件更新缓存,发布ServiceSubscribedEvent
ClientUnsubscribeServiceEvent客户端退订事件更新缓存
ServiceSubscribedEvent服务订阅事件事件处理与ServiceChangedEvent处理差不多,只推送目标客户端
ServiceChangedEvent服务变更事件将变化推送所以客户端

源码流程

在这里插入图片描述

  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值