2020-12-24

x

博客园Logo
首页
新闻
博问
专区
闪存
班级

代码改变世界
搜索
注册
登录
返回主页
bluedarkni
笨鸟也要飞,蜗牛也要爬呀…
博客园
首页
新随笔
联系
订阅
管理
nacos注册中心源码流程分析

作为一个注册中心,和eureka类似,核心的功能点:

1.服务注册:nacos客户端携带自身信息向nacos服务端进行注册。

2.服务心跳:客户端定时向服务端发送心跳,告知服务端自己处于可用状态

3.服务健康检查:服务端定时检查客户端是否有发送心跳,如果超过15s没有收到心跳,那么就会将该客户端实例设置为不健康状态,如果超过30s没有收到心跳则会剔除该客户端实例

4.服务同步:服务端为了高可用,通常都是集群模式,那么集群之间需要进行数据的同步。

5.服务发现:客户端向服务端查询所有注册的服务列表。客户端获取到之后会放入自己的本地缓存,需要使用的时候,先从本地缓存拿,没有再去服务获取。同时还有定时任务,去服务端拉取注册列表,更新本地缓存,如果失败拉取的间隔时间会根据失败次数增加。

源码分析:

从客户端开始入手,切入点当然是spring-cloud-starter-alibaba-nacos-discovery包的spring.factories文件中的自动配置类

1.最为关键的就是NacosDiscoveryAutoConfiguration 和 NacosServiceRegistryAutoConfiguration 这两个配置类了,eureka是通过SmartLifecycle整合进spring的,从配置类中创建的NacosAutoServiceRegistration这个类,追溯一下可以看到这个是实现了ApplicationListener接口,所以nacos是通过这个接口整合进spring的

2.nacos源码中很多地方都是初始化的时候就设置好了定时任务,或者线程池,后续的任务都是直接扔进去执行就是了。

3.nacos提供了AP和CP 两种模式。非持久化实例注册,数据放在内存中,和eureka类似,集群节点之间都是点对点的。如果是持久化实例,则是CP模式,集群节点会有leader和follower,客户端注册的数据会写入磁盘,节点重启时会从磁盘上把数据读取出来。

4.和eureka不同的是,nacos还有主动推送功能,eureka的注册列表发生改变的时候,eureka是失效读写缓存,等待下一次只读缓存(如果使用了)来更新时,重建读写缓存,或者客户端拉取数据时重建读写缓存。nacos并没有使用多级缓存。当注册列表发生改变时,会发送ServiceChangeEvent事件,然后主动向客户端推送信息

源码关键流程图:基于1.4.0

分类: cloudAlibaba
好文要顶 关注我 收藏该文
白露非霜
关注 - 36
粉丝 - 23
+加关注
0 0
« 上一篇: nacos配置中心使用
posted @ 2020-12-23 21:19 白露非霜 阅读(56) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
登录后才能发表评论,立即 登录 或 注册, 访问 网站首页
写给园友们的一封求助信
【推荐】News: 大型组态、工控、仿真、CADGIS 50万行VC++源码免费下载
【推荐】有你助力,更好为你——博客园用户消费观调查,附带小惊喜!
【推荐】博客园x丝芙兰-圣诞特别活动:圣诞选礼,美力送递
【推荐】了不起的开发者,挡不住的华为,园子里的品牌专区
【福利】AWS携手博客园为开发者送免费套餐+50元京东E卡
【推荐】未知数的距离,毫秒间的传递,声网与你实时互动
【推荐】新一代 NoSQL 数据库,Aerospike专区新鲜入驻
相关博文:
· AlibabaNacos学习(四):NacosDocker
· KubernetesNacos
· Nacos简单配置
· Nacos配置中心
· springboot+springcloud+nacos实战
» 更多推荐…
最新 IT 新闻:
· 红帽为CentOS的决定辩护 声称Stream版本可以覆盖当前95%的用户场景
· 美国宇航局可能已经捕捉到了太阳纳米耀斑的全生命周期
· 京东“京蜓”无人机在自贡成功首飞
· 《光环:士官长合集》开发商宣布加入腾讯:会变得更好
· 游族爆高层内斗CEO被投毒住院 警方通报来了:光速反转
» 更多新闻…
公告
昵称: 白露非霜
园龄: 3年4个月
粉丝: 23
关注: 36
+加关注
< 2020年12月 >
日 一 二 三 四 五 六
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
搜索

找找看

谷歌搜索
最新随笔
1.nacos注册中心源码流程分析
2.nacos配置中心使用
3.基于nacos注册中心的ribbon定制规则
4.Zookeeper(5)—分布式锁
5.Eureka相关相关接口和代码位置
6.Zookeeper(4)—ZK集群部署和选举
7.Zookeeper(3)—java客户端的使用
8.Zookeeper(2)—节点属性、监听和权限
9.Zookeeper(1)—初识
10. RocketMQ(2)—核心概念、特性、使用等
积分与排名
积分 - 65372
排名 - 15157
随笔分类
cloudAlibaba(5)
ELK(4)
hibernate(2)
java(7)
javaee(4)
java并发(7)
jvm(5)
MyBatis(3)
Mysql(3)
Nginx(3)
redis(6)
spring(8)
Spring_boot/cloud(10)
springMVC(2)
struts2(3)
更多
随笔档案
2020年12月(4)
2020年11月(2)
2020年10月(3)
2020年6月(4)
2020年5月(9)
2020年4月(12)
2020年3月(11)
2020年2月(9)
2020年1月(2)
2019年12月(7)
2019年11月(1)
2019年10月(4)
2019年9月(3)
2019年8月(4)
2019年7月(4)
更多
最新评论

  1. Re:nacos配置中心使用
    @可少 看自己喜欢用什么呗…
    –白露非霜
  2. Re:nacos配置中心使用
    nacos的前端配置管理功能就是个半成品
    –可少
  3. Re:mysql索引数据结构
    @五十块钱行不行 是不是图灵学院的诸葛老师…
    –学习路中。。
  4. Re:面试问题—JAVA程序CPU占用过高怎么定位

    –娄思毅
  5. Re:Swagger结合mustache模板生成后台接口代码、以及前后台建模代码
    有些人私信我,这里有个项目可以直接运行的,里面有Test直接运行就可以了,,可以生成controller文件,service的接口,还有对应的实体bean的文件 链接: 提取码:04wc…
    –白露非霜
    阅读排行榜
  6. mysql索引数据结构(14946)
  7. 搭建一个简单的Eureka程序(5821)
  8. Redis集群搭建及选举原理(4410)
  9. Swagger结合mustache模板生成后台接口代码、以及前后台建模代码(3168)
  10. VMware安装虚拟机及网络配置(3159)
    评论排行榜
  11. 算法—贪心算法和动态规划(3)
  12. mysql索引数据结构(3)
  13. Swagger结合mustache模板生成后台接口代码、以及前后台建模代码(3)
  14. nacos配置中心使用(2)
  15. Elasticsearch基础入门(2)
    推荐排行榜
  16. Synchronized加锁、锁升级和java对象内存结构(3)
  17. 大数据(1)—大数据及HDFS简述(3)
  18. jvm(1)—java内存结构(3)
  19. 算法—贪心算法和动态规划(2)
  20. 数据结构—栈及四则运算实现(2)
    Copyright © 2020 白露非霜
    Powered by .NET 5.0.1-servicing.20575.16 on Kubernetes
    访问量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值