Nacos 2.X核心架构源码剖析
概述
- 注册中心并发处理,1.4.x 写时复制,2.1.0 读写分离;
- nacos 一般使用 AP 架构,即临时实例,1.4.x 为 http 请求,2.1.0 优化为 gRPC 协议;
- 源码中使用了大量的事件通知机制和异步定时线程池;
- 源码中添加了对应的注释,后期再画流程图;
源码仓库:https://gitee.com/firechou/source-nacos-2.1.0.git
客户端启动
客户端 pom.xml 引入 client:
<spring-cloud-alibaba.version>2.2.8.RELEASE</spring-cloud-alibaba.version>
通过 spi 机制注入:
注册 NacosAutoServiceRegistration 对象:
NacosAutoServiceRegistration 对象实现了ApplicationListener 类,需要实现里面的 onApplicationEvent 方法,调用 this.start() 》 this.register() 》 this.serviceRegistry.register(this.getRegistration()) (即 NacosServiceRegistry#register,上图注入的 bean),再调用 namingService.registerInstance(serviceId, group, instance),最终调用源码中 client 包的 NacosNamingService#registerInstance(String, String, Instance) 方法,到此可以跟着下载的源码包继续分析了。
com.alibaba.cloud.nacos.registry.NacosServiceRegistry#register 所在位置:
源码如下图所示:
Nacos 中 gRPC
临时实例 AP 架构通过 gRPC 通讯;
相关文章:
Nacos 2.X核心架构源码剖析
概述 注册中心并发处理,1.4.x 写时复制,2.1.0 读写分离;nacos 一般使用 AP 架构,即临时实例,1.4.x 为 http 请求,2.1.0 优化为 gRPC 协议;源码中使用了大量的事件通知机制和异步定时线程池&…...
C语言--每日选择题--Day31
第一题 1. 下面程序 i 的值为() int main() {int i 10;int j 0;if (j 0)i; elsei--; return 0; } A:11 B:9 答案及解析 B if语句中的条件判断为赋值语句的时候,因为赋值语句的返回值是右操作数; …...
chrome vue devTools安装
安装好后如下图所示: 一:下载vue devTools 下载链接https://download.csdn.net/download/weixin_44659458/13192207?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-download-2%7Edefault%7ECTRLIST%7EPaid-1-13192207…...
Spring Security 6.x 系列(7)—— 源码分析之Builder设计模式
一、Builder设计模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者,把他们放到一起看看他们的共同特点: 查看AuthenticationManagerBuilder的继承结构图: 查看HttpSecurity的继承结构图: 查看W…...
PyQt6 中自定义浮点型滑块类
介绍: 在PyQt6中,滑块(Slider)是常用的用户界面元素之一,用于选择数值范围。然而,有时候我们可能需要使用浮点数值,而标准的滑块仅支持整数。为了解决这个问题,我们可以创建一个自定…...
笔记,B+树
B树面对的场景,是一个有10亿行的表,希望某一列是有序的。这么大的数据量,内存里放不下,需要放在硬盘里。结果,原本运行于内存的二叉树,就升级为B树了。 在二叉树中,每个节点存储着一个数字&…...
代码随想录刷题题Day2
刷题的第二天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day2 任务 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵 II 1 有序数组的平方(重点:双指针…...
【JAVA面向对象编程】--- 探索子类如何继承父类
🌈个人主页: Aileen_0v0🔥学习专栏: Java学习系列专栏 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 继承 继承的普通成员方法调用 及 普通成员变量修改 构造方法的调用 子类构造方法 继承 package Inherit;class Animal …...
从浏览器控制台发送get,post请求
---------------------get请求--------------------------- fetch(url, { method: get, }) .then(response > response.json()) .then(data > { // 获取到响应的数据后的处理逻辑 console.log(data); }) .catch(error > { // 请求发生错误的处理逻…...
海外问卷调查怎么批量做?可以用指纹浏览器吗?
海外问卷调查通常是指产品与品牌上线时,基于消费者、市场调查而组织的问卷调查,包括个人、企业或其他组织,以获取关于市场、消费者行为、产品需求、社会趋势等方面的见解。 通常,研究人员或组织会设计一份问卷,通过在线…...
HarmonyOS 位置服务开发指南
位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动,都离不开定位用户终端设备的位置。 当用户处于这些丰富的使用场景中时,系统的位置能力…...
ThinkPHP6学生选课管理系统
有需要请加文章底部Q哦 可远程调试 ThinkPHP6学生选课管理系统 一 介绍 此学生选课管理系统基于ThinkPHP6框架开发,数据库mysql8,前端bootstrap。系统角色分为学生,教师和管理员。学生登录后可进行选课,教师登录后可查看选课情况…...
uniapp如何与原生应用进行混合开发?
目录 前言 1.集成Uniapp 2.与原生应用进行通信 3.实现原生功能 4.使用原生UI组件 结论: 前言 随着移动应用市场的不断发展,使用原生开发的应用已经不能满足用户的需求,而混合开发成为了越来越流行的选择。其中,Uniapp作为一种跨平台的开…...
Csharp(C#)无标题栏窗体拖动代码
C#(C Sharp)是一种现代、通用的编程语言,由微软公司在2000年推出。C#是一种对象导向的编程语言,它兼具C语言的高效性和Visual Basic语言的易学性。C#主要应用于Windows桌面应用程序、Windows服务、Web应用程序、游戏开发等领域。C…...
李宏毅2020机器学习课程笔记(二)- 深度学习
相关专题: 李宏毅2020机器学习资料汇总 本系列笔记: 李宏毅2020机器学习课程笔记(一)- 分类与回归李宏毅2020机器学习课程笔记(二)- 深度学习李宏毅2020机器学习课程笔记(三)- CNN、半监督、RNN文章目录 3. Deep LearningBrief Introduction of Deep Learning(P12)Ba…...
解决电脑蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,回到系统还原点
解决电脑蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,回到系统还原点 1,蓝屏显示问题1.1,蓝屏1,清楚显示1.2,蓝屏2,模糊显示 2,排除故障问题3,解决蓝屏的有效方法 1&a…...
connectivity_plus 安卓build的时候报错
报错信息 当前版本:connectivity_plus 5.0.2 Flutter 3.13.6 Dart 3.1.3 A problem occurred configuring project :connectivity_plus. > Failed to create Jar file /Users/wangxiangyu/.gradle/caches/jars-8/fef84f4f98be9f93b0b593ccb1e3e207/lint-model-…...
系统部署安装-Centos7-Kafka
文章目录 安装离线安装下载安装 安装 离线安装 下载 可以前往kafka的官网进行下载 https://kafka.apache.org/downloads安装 1.创建安装目录 mdkir /opt/software/kafka mkdir /opt/kafka 2.解压 sudo tar -xzf kafka_2.12-3.6.0.tgz -C /opt/kafka --strip-components…...
94.STM32外部中断
目录 1.什么是 NVIC? 2.NVIC寄存器 3.中断优先级 4.NVIC的配置 设置中断分组编辑 配置某一个中断的优先级 5.什么是EXTI 6.EXTI和NVIC之间的关系 7.SYSCFG 的介绍 1.什么是 NVIC? NVIC是一种中断控制器,主要用于处理 ARM Cort…...
【Linux】快速上手自动化构建工具make/makefile
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是make / makefile 2…...
Unity UGUI Mask与3D对象Stencil裁剪失效的根因解析
1. 这不是“Stencil失效”,而是 Unity 渲染管线里一场被忽略的层级静默冲突 你有没有试过在 UGUI ScrollView 里放一个带 Mask 的滚动区域,再把一个 3D 模型(比如一个带透明材质的粒子特效、或者一个半透的 UI 面板)叠在它上面&am…...
可控硅调光原理与舞台照明系统设计实战:以LTH16-08为例
1. 项目概述:舞台照明系统与可控硅的深度绑定在舞台、演播厅、剧场这些光影变幻的现场,每一束光的明暗、每一次色彩的渐变,背后都有一套精密、可靠且响应迅速的调光系统在支撑。从业十多年,我调试过无数灯光设备,深知其…...
嵌入式开发框架ASF架构解析与设计实践:从硬件抽象到模块化应用
1. 项目概述:为什么我们需要深入理解ASF?如果你是一位长期在嵌入式领域,特别是基于Atmel(现在叫Microchip)AVR和SAM系列MCU进行开发的工程师,你大概率听说过或者直接使用过Atmel Software Framework&#x…...
Office Custom UI Editor终极指南:30秒打造专属Office工作界面
Office Custom UI Editor终极指南:30秒打造专属Office工作界面 【免费下载链接】office-custom-ui-editor Standalone tool to edit custom UI part of Office open document file format 项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor …...
GEO学习能帮我提高AI搜索排名吗?
先直接回答这个问题:GEO不叫"排名",但效果比排名更直接。如果你理解了这句话,你就理解了GEO和SEO的本质区别。AI搜索没有"排名",只有"引用"传统SEO优化的目标是在搜索结果页面占据靠前位置——第几…...
软件工程方法论与敏捷开发
软件工程方法论与敏捷开发 1. 技术分析 1.1 软件工程概述 软件工程是系统化的软件开发方法: 软件工程要素过程: 开发流程方法: 技术手段工具: 辅助工具核心目标:高质量软件按时交付可控成本1.2 软件开发方法论 方法论分类传统方法: 瀑布模型敏捷方法: Scrum、Kanban…...
后端架构:事件驱动架构设计与实现
后端架构:事件驱动架构设计与实现 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊事件驱动架构这个重要话题。作为一个全栈开发者,事件驱动架构已经成为现代后端系统的重要设计模式。今天就来分享一下事件驱动架构的设…...
GoogleTranslate_IPFinder高级功能详解:自定义IP段扫描与在线同步服务
GoogleTranslate_IPFinder高级功能详解:自定义IP段扫描与在线同步服务 【免费下载链接】GoogleTranslate_IPFinder 谷歌翻译API服务器的IP扫描、测速工具。 项目地址: https://gitcode.com/gh_mirrors/go/GoogleTranslate_IPFinder GoogleTranslate_IPFinder…...
企业AI项目紧急叫停!DeepSeek许可证新增限制条款(2024.06.18生效)及72小时补救路径
更多请点击: https://kaifayun.com 第一章:DeepSeek许可证紧急变更事件全景速览 2024年7月12日,DeepSeek官方突然宣布对其开源模型系列(包括DeepSeek-V2、DeepSeek-Coder、DeepSeek-MoE等)的许可证进行紧急修订&#…...
2026营销策划岗位学数据分析能提升职场能力吗
一、数据分析在营销策划中的核心价值数据驱动决策取代经验主义,精准定位用户需求与行为模式 实时监测市场趋势与竞品动态,优化营销策略的敏捷性 量化评估活动效果,提升ROI与资源分配效率二、2026年营销策划岗位的数据分析技能需求基础能力&am…...
