springcloud Alibaba(nacos服务注册发现)

一、服务注册发现

nacos注册:
1、客户端调用API接口注册实例,封装ip、端口、服务名等为instance对象
2、服务端通过ApplicationListener注册监听,触发监听事件处理请求将参数封装为pair对象放入阻塞队列
3、 线程池调用线程异步处理从队列中取出pair,信息往set集合写完成注册
4、 注册实例同时定时发送心跳:循环嵌套延时(5s)调用API接口,服务端间隔时间内无心跳会先健康状态变为false,再检测不到心跳会删除服务实例(30s)

服务发现:调用nacosserver接口定时拉取服务注册列表, 从注册表中选择实例调用。
Ribbon底层实现是将实例中的ip、端口替换至http请求的url,发起请求。
nacos更新注册表使用copyonwrite机制防止并发读写冲突。复制注册表副本,修改副本完成再赋给新注册表。

在这里插入图片描述

完整注册表是 双层map,适应不同环境不同服务。namespace:开发环境或者测试环境等等
在这里插入图片描述
简要说明nacos的ap模式与cp模式:

  • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  • 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  • 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

nacos实现cp通过选举leader节点需要超过半数投票,ap是同步实例信息至其他节点。

备份下参考[3]中的源码分析图:
在这里插入图片描述

参考:
[1] https://www.bilibili.com/video/BV1vK4y1N7tC
[2] https://nacos.io/zh-cn/docs/open-api.html
[3] https://blog.csdn.net/weixin_42437633/article/details/105337390

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值