Nacos架构与原理 - 通信通道

简介: Nacos架构与原理 - 通信通道

Nacos 长链接


⼀、现状背景


Nacos 1.x 版本 Config/Naming 模块各自的推送通道都是按照自己的设计模型来实现的。


b47c1d09adbd43969db01701650b8850.png


配置和服务器模块的数据推送通道不统⼀,http 短连接性能压力巨大,未来Nacos 需要构建能够同时支持配置以及服务的长链接通道,以标准的通信模型重构推送通道


二、场景分析


1. 配置


配置对连接的场景诉求分析

6967d53e041f43b99dd2b91f89ed9d85.png


SDK 和 Server 之间


客户端 SDK 需要感知服务节点列表,并按照某种策略选择其中⼀个节点进行连接;底层连接

断开时,需要进行切换 Server 进行重连。


客户端基于当前可用的长链接进行配置的查询,发布,删除,监听,取消监听等配置领域的 R

PC 语意接口通信。


感知配置变更消息,需要将配置变更消息通知推送当前监听的客户端;网络不稳定时,客户端

接收失败,需要支持重推,并告警。


感知客户端连接断开事件,将连接注销,并且清空连接对应的上下文,比如监听信息上下文清

理。



Server 之间通信

   单个 Server 需要获取到集群的所有 Server 间的列表,并且为每⼀个 Server 创建独立的长链接;连接断开时,需要进行重连,服务端列表发生变更时,需要创建新节点的长链接,销毁下线的节点长链接。


   Server 间需要进行数据同步,包括配置变更信息同步,当前连接数信息,系统负载信息同步,负载调节信息同步等。



2. 服务


SDK 和 Server 之间


客户端 SDK 需要感知服务节点列表,并按照某种策略选择其中⼀个节点进行连接;底层连接断开时,需要切换 Server 进行重连


客户端基于当前可用的长链接进行配置的查询,注册,注销,订阅,取消订阅等服务发现领域的 RPC 语意接口通信

感知服务变更,有服务数据发生变更,服务端需要推送新数据到客户端;需要有推送 ack,方便服务端进行 metrics 和重推判定等


感知客户端连接断开事件,将连接注销,并且清空连接对应的上下文,比如该客户端连接注册的服务和订阅的服务




Server 之间通信
  • 服务端之间需要通过长连接感知对端存活状态,需要通过长连接汇报服务状态(同步 RPC 能力)
  • 服务端之间进行 AP Distro 数据同步,需要异步 RPC 带 ack 能力



三、长链接核心诉求



1. 功能性诉求

客户端

 连接生命周期实时感知能力,包括连接建立,连接断开事件。

 客户端调用服务端支持同步阻塞,异步 Future,异步 CallBack 三种模式。

 底层连接自动切换能力。

 响应服务端连接重置消息进行连接切换。

选址/服务发现。



服务端

 连接生命周期实时感知能力,包括连接建立,连接断开事件。

 服务端往客户端主动进行数据推送,需要客户端进行 Ack 返回以支持可靠推送,并且需要进行失败重试。

 服务端主动推送负载调节能力。


2. 性能要求

能够支持百万级的长链接规模及请求量和推送量,并且要保证足够稳定。


3. 负载均衡

常见的负载均衡策略:随机,hash,轮询,权重,最小连接数,最快响应速度等


短连接和长链接负载均衡的异同:在短连接中,因为连接快速建立销毁,“随机,hash,轮询,权重”四种方式大致能够保持整体是均衡的,服务端重启也不会影响整体均衡,其中“最小连接数,最快响应速度”是有状态的算法,因为数据延时容易造成堆积效应;长连接因为建立连接后,如果没有异常情况出现,连接会⼀直保持,断连后需要重新选择⼀个新的服务节点,当出现服务节点发布重启后,最终连接会出现不均衡的情况出现,“随机,轮询,权重”的策略在客户端重连切换时可以使用,“最小连接数,最快响应速度”和短连接⼀样也会出现数据延时造成堆积效应。


长连接和短连接的⼀个主要差别在于在整体连接稳定时,服务端需要⼀个 rebalance 的机制,将集群视角的连接数重新洗牌分配,趋向另外⼀种稳态


客户端随机+服务端柔性调整: 核心的策略是客户端+服务端双向调节策略,客户端随机选择+服务端运行时柔性调整。


0d4396af8dde425490c6449e39e9d429.png


客户端随机

客户端在启动时获取服务列表,按照随机规则进行节点选择,逻辑比较简单,整体能够保持随机。


服务端柔性调

(当前实现版本) 人工管控方案


   集群视角的系统负载控制台,提供连接数,负载等视图(扩展新增连接数,负载,CPU 等信息,集群间 report 同步),实现人工调节每个 Server 节点的连接数,人工触发 reblance,人工削峰填谷。


   提供集群视角的负载控制台:展示 总节点数量,总长链接数量,平均数量,系统负载信息。


   每个节点的地址,长链接数量,与平均数量的差值,正负值。


   对高于平均值的节点进行数量调控,设置数量上限(临时和持久化),并可指定服务节点进行切换。


 (未来终态版本)自动化管控方案


   基于每个 server 间连接数及负载自动计算节点合理连接数,自动触发 reblance,自动削峰填谷。实现周期较长,比较依赖算法准确性。



4. 连接⽣命周期


心跳保活机制

bb6a6b656a664578b09ff0388cf657ab.png


我们需要什么


 低成本快速感知:客户端需要在服务端不可用时尽快地切换到新的服务节点,降低不可用时间,并且能够感知底层连接切换事件,重置上下文;服务端需要在客户端断开连接时剔除客户端连接对应的上下文,包括配置监听,服务订阅上下文,并且处理客户端连接对应的实例上下线。


   客户端正常重启:客户端主动关闭连接,服务端实时感知

   服务端正常重启 : 服务端主动关闭连接,客户端实时感知


 防抖:

   网络短暂不可用: 客户端需要能接受短暂网络抖动,需要⼀定重试机制,防止集群抖动,超过阈值后需要自动切换 server,但要防止请求风暴。


 断网演练:

   断网场景下,以合理的频率进行重试,断网结束时可以快速重连恢复。




5. 安全性

支持基础的鉴权,数据加密能力。



6. 低成本多语⾔实现

在客户端层面要尽可能多的支持多语言,至少要支持⼀个 Java 服务端连接通道,可以使用多个主流语言的客户端进行访问,并且要考虑各种语言实现的成本,双边交互上要考虑 thin sdk,降低多语言实现成本



长链接选型对比

b5272a5d26e149f68a28deeba40b4737.png




基于长链接的⼀致性模型


1. 配置⼀致性模型


sdk-server ⼀致性


7929402319aa41169e46f26b910c9876.png


server 间⼀致性


Server 间同步消息接收处理轻量级实现,重试失败时,监控告警。

断网:断网太久,重试任务队列爆满时,无剔除策略。


2. 服务⼀致性模型


sdk-server 间⼀致性


2c888ea943164516be86290a641e5493.png

server 间⼀致性


fe961db5e7fe447983ecaeee34ec7a49.png


核心模型组件设计


相关文章
|
4月前
|
人工智能 安全 Cloud Native
Nacos 3.0 架构升级,AI 时代更安全的 Registry
随着Nacos3.0的发布,定位由“更易于构建云原生应用的动态服务发现、配置管理和服务管理平台”升级至“ 一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台 ”。
|
3月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
885 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
1月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
|
4月前
|
存储 监控 算法
园区导航系统技术架构实现与原理解构
本文聚焦园区导航场景中室内外定位精度不足、车辆调度路径规划低效、数据孤岛难以支撑决策等技术痛点,从架构设计到技术原理,对该系统从定位到数据中台进行技术拆解。
206 0
园区导航系统技术架构实现与原理解构
|
6月前
|
存储 人工智能 自然语言处理
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
本文深入探讨了混合专家(MoE)架构在大型语言模型中的应用与技术原理。MoE通过稀疏激活机制,在保持模型高效性的同时实现参数规模的大幅扩展,已成为LLM发展的关键趋势。文章分析了MoE的核心组件,包括专家网络与路由机制,并对比了密集与稀疏MoE的特点。同时,详细介绍了Mixtral、Grok、DBRX和DeepSeek等代表性模型的技术特点及创新。MoE不仅解决了传统模型扩展成本高昂的问题,还展现出专业化与适应性强的优势,未来有望推动AI工具更广泛的应用。
3642 4
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
|
5月前
|
存储 消息中间件 canal
zk基础—2.架构原理和使用场景
ZooKeeper(ZK)是一个分布式协调服务,广泛应用于分布式系统中。它提供了分布式锁、元数据管理、Master选举及分布式协调等功能,适用于如Kafka、HDFS、Canal等开源分布式系统。ZK集群采用主从架构,具有顺序一致性、高性能、高可用和高并发等特点。其核心机制包括ZAB协议(保证数据一致性)、Watcher监听回调机制(实现通知功能)、以及基于临时顺序节点的分布式锁实现。ZK适合小规模集群部署,主要用于读多写少的场景。
|
5月前
|
人工智能 安全 Cloud Native
Nacos 3.0 架构全景解读,AI 时代服务注册中心的演进
Nacos 3.0 正式发布,定位升级为“一个易于构建 AI Agent 应用的动态服务发现、配置管理和 AI 智能体管理平台”。架构上强化了安全性,引入零信任机制,并支持 MCP 服务管理、AI Registry 等新特性,助力 AI 应用高效开发与运行。
|
6月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
224 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
6月前
|
Java 开发者 Spring
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
262 9