1.Nacos服务端源码分析(四): 拉取服务信息
2.Nacos 配置中心源码 | 京东物流技术团队
3.Nacos 源码环境搭建
4.Nacos 注册服务源码分析
5.Nacos源码分析-集群间临时实例数据的码整一致性同步
6.Nacos 服务注册源码分析
Nacos服务端源码分析(四): 拉取服务信息
本文深入解析Nacos服务端源码,特别关注服务信息的码整主动拉取机制。主动拉取服务信息的码整URL为:/alibaba/nacos/releases/tag/2.1.1。解压源码后,码整使用IDEA打开项目。码整若在com.alibaba.nacos.consistency.entity类处遇到报红错误,码整影视站源码通过编译整个项目解决此问题。码整
解决报红后,码整使用终端在nacos-2.1.1目录下执行编译操作。码整
定位至console项目中的码整Nacos启动类,并配置VM options参数,码整设置为单机模式启动。码整
成功启动后,码整控制台应显示项目启动成功的码整信息。
执行命令请求.alibaba.nacos.Nacos,码整爱乐乐源码以及如何通过IDEA进行启动和调试。要深入了解Nacos的源码,可以参考nacos.io和github.com/alibaba/nacos...的文档。
nacosåç
nacosç®åæ¯éæå°spring cloud alibabaéå»çï¼ä¹å°±æ¯å¨spring cloudçæ åä¹ä¸å®ç°äºä¸äºä¸è¥¿ï¼spring cloudèªå·±æ¯æä¸ä¸ªæ¥å£ï¼å«åServiceRegistryï¼ä¹å°±æ¯æå¡æ³¨åä¸å¿çæ¦å¿µï¼nacosä¸æä¸ä¸ªå®çå®ç°ç±»NacosServiceRegistryï¼å®ç°äºregisterãderegisterãcloseãsetStatusãgetStatusä¹ç±»çæ¹æ³ã
èªå¨è£ é æ¯ä¸ä¸ªspring bootçä¸ä¸ªæ¦å¿µï¼èªå¨è£ é çææï¼å ¶å®å°±æ¯è¯´ç³»ç»å¯å¨çæ¶åï¼èªå¨è£ é æºå¶ä¼è¿è¡ï¼å®ç°ä¸äºç³»ç»çåå§åï¼èªå¨è¿è¡ï¼ä¹å°±æ¯ç³»ç»å¯å¨æ¶èªå¨å»è°ç¨NacosServiceRegistryçregisteræ¹æ³å»è¿è¡æå¡æ³¨åãèä¸é¤äºæ³¨åä¹å¤ï¼è¿ä¼éè¿schedule线ç¨æ± å»æ交ä¸ä¸ªå®æ¶è°åº¦ä»»å¡ï¼æºç å¦ä¸ï¼
this.exeutorService.schedule(new BeatReactor.BeatTask(beatInfo), beatInfo.getPeriod(), TimeUnit.MILLISECONDS)ï¼è¿å°±æ¯ä¸ä¸ªå¿è·³æºå¶ï¼å®æ¶åéå¿è·³ç»nacos serverã
ç¶åä¼è®¿é®nacos serverçopen apiï¼å ¶å®å°±æ¯httpæ¥å£ï¼ä»æä¸ä¸ªæ¥å£ï¼http://...:/nacos/v1/ns/instance?serviceName=xx&ip=xx&port=xxï¼è¿ä¹ä¸ä¸ªä¸è¥¿ï¼ä¹æ²¡ä»ä¹ç¹å«çï¼è¿éå°±æ¯è®¿é®æ³¨åæ¥å£ç½¢äº
nacos serveré£éæ¯åºäºä¸ä¸ªConcurrentHashMapä½ä¸ºæ³¨å表æ¥æ¾æå¡ä¿¡æ¯çï¼ç´æ¥ä¼æé ä¸ä¸ªServiceæ¾å°mapéï¼ç¶å对Serviceå»addInstanceæ·»å ä¸ä¸ªå®ä¾ï¼æ¬è´¨éé¢å°±æ¯å¨ç»´æ¤ä¿¡æ¯ï¼åæ¶è¿ä¼å»ºç«å®æ¶æ£æ¥å®ä¾å¿è·³çæºå¶ãæåè¿ä¼åºäºä¸è´æ§åè®®ï¼æ¯å¦è¯´raftåè®®ï¼å»æ注ååæ¥ç»å ¶ä»èç¹ã
æå¡åç°çæ¬è´¨å ¶å®ä¹æ¯nacos serverä¸çä¸ä¸ªhttpæ¥å£ï¼å°±æ¯ï¼http://...:/nacos/v1/ns/instance/list?serviceName=xxï¼å°±è¿ä¹ä¸ä¸ªæ¥å£ï¼ç¶åå°±ä¼å¯å¨å®æ¶ä»»å¡ï¼æ¯ésæåä¸æ¬¡ææ°çå®ä¾å表ï¼ç¶åæå¡ç«¯è¿ä¼çå¬ä»æå¡çç¶æï¼æå¼å¸¸å°±ä¼åºäºUDPåè®®ååéç¥å®¢æ·ç«¯è¿æ¬¡æå¡å¼å¸¸åå¨ã
手撕Nacos源码剖析,建议收藏
Nacos源码剖析 深入学习Nacos,解析源码,重点关注以下两点: 源码环境搭建从官方项目克隆Nacos源码,庆余年源码检出1.4.1版本,导入IDEA。
在本地MySQL中创建nacos-config数据库,执行resources/META-INF/nacos-db.sql脚本创建表。
修改console模块下的application.properties文件,配置相关参数。
启动console模块的源码换会员启动类,非集群模式启动Nacos服务端。
访问本地Nacos服务:http://localhost:/nacos。
Nacos客户端功能 Nacos客户端集成在应用服务内,通过依赖引入实现服务注册、发现、下线及订阅功能。客户端核心功能包括服务注册、se软源码服务发现、服务下线与服务订阅。
客户端与服务端交互,主要聚焦服务注册、服务下线、服务发现与服务订阅。
服务注册注册服务时,客户端执行定时任务设置心跳监测,同时向服务端注册服务。
服务注册中,远程请求通过NacosRestTemplate封装,调用callServer()执行。
服务发现通过NamingService.getAllInstances()方法实现服务发现。
获取服务信息首先从缓存查找,若无数据,则向Nacos服务端请求更新。
服务下线服务下线操作简化,主要取消心跳检测与服务下线接口请求。
服务订阅客户端创建线程池,封装监听器,监听指定服务实例信息变化。
通过NamingService.subscribe()方法实现服务订阅,注册监听器,接收实例信息更新。