专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
今天看啥  ›  专栏  ›  芋道源码

学会 Nacos 的 长轮询 定时机制,有妙用!

芋道源码  · 公众号  · Java  · 2024-10-05 18:04

主要观点总结

本文主要介绍了Nacos配置中心的长轮询定时机制的应用,包括客户端和服务端的长轮询定时机制以及源码结构图的小结。

关键观点总结

关键观点1: 客户端的长轮询定时机制

客户端通过NacosPropertySourceLocator.locate()初始化ConfigService对象,在NacosConfigService的构造方法中创建executor线程池和executorService线程池。ClientWorker.checkConfigInfo()使用executor线程池检查配置是否发生变化,ClientWorker.checkLocalConfig()检查本地配置,ClientWorker.checkUpdateDataIds()检查服务端对应的配置是否发生变更。LongPollingRunnable.run()运行长轮询定时线程。

关键观点2: 服务端的长轮询定时机制

服务端通过ConfigController.listener()接收请求,LongPollingService.addLongPollingClient()处理长轮询的核心逻辑。ClientLongPolling.run()实现长轮询定时机制,将ClientLongPolling实例添加到allSubs队列中,并在29.5秒后启动定时任务。当配置变更时,发布LocalDataChangeEvent事件,通过Subscriber.onEvent()监听事件并执行DataChangeTask任务。

关键观点3: 源码结构图小结

客户端和服务端的长轮询定时机制涉及到多个类和方法的协同工作,包括NacosFactory、ConfigFactory、ClientWorker、LongPollingService、ClientLongPolling等。同时,服务端还涉及到配置变更的事件监听,包括LocalDataChangeEvent事件、Subscriber的onEvent方法以及DataChangeTask任务。


文章预览

👉 这是一个或许对你有用 的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 「 芋道快速开发平台 」 知识星球。 下面是星球提供的部分资料:   《项目实战(视频)》 :从书中学,往事上 “练 ” 《互联网高频面试题》 :面朝简历学习,春暖花开 《架构 x 系统设计》 :摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》 :系统学习,互联网主流技术栈 《必读 Java 源码专栏》 :知其然,知其所以然 👉 这是一个或许对你有用的开源项目 国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。 功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能: Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览