Nacos 2.x为什么新增了RPC的通信方式?

news2024/11/15 11:26:37

Nacos 2.X 在 1.X 的架构基础上,通信层通过 gRPC 和 Rsocket 实现了长连接 RPC 调用和推送能力。主要是为了改善 Nacos 在大规模集群环境下的性能和稳定性。

同时新增一个链接层,用来将不同类型 Request 请求,将来自不同客户端的不同类型请求,转化为相同语意的功能数据结构,复用业务处理逻辑。同时,将来的流量控制和负载均衡功能也会在链接层处理。

在Nacos的早期版本中,节点之间的通信采用了HTTP协议。在高并发、大规模集群环境下,由于HTTP的连接管理和请求响应的开销,会导致一些性能和稳定性方面的问题。

HTTP 短连接模型,每次客户端请求都会创建和销毁 TCP 连接,TCP 协议销毁的连接状态是 WAIT_TIME,完全释放还需要一定时间,当 TPS 和 QPS 较高时,服务器端和客户端可能有大量的 WAIT_TIME 状态连接,从而会导致 connect time out 错误或者 Cannot assign requested address 的问题。

配置模块使用 HTTP 短连接阻塞模型来模拟长连接通信,但是由于并非真实的长连接模型,因此每 30 秒需要进行一次请求和数据的上下文切换,每一次切换都会引起抖动从而导致服务端频繁 Gc。

在大规模集群环境下,维护大量的 HTTP 连接会给集群带来负担,路由方面的管理带来一定的复杂性。并且 HTTP 协议请求和响应的内容通常需要基于压缩和序列化处理,这也会带来一定的开销。

同时,1.0 版本中还存在以下几个问题:

通过心跳续约,当服务机器上升时,特别是类似 Dubbo 的接口级服务较多时,心跳及配置元数据的轮询数量众多,导致集群 TPS 很高,系统资源压力较大。

心跳续约需要达到超时的时间大会终止续约并通知消费,默认认为 15s,时延较长,时效性差。若改短超时时间,当网络抖动时,会频繁触发变更消息,对客户端和服务端带来巨大损耗。

为了解决这些问题,Nacos 2.x 引入了 gRPC 的通信方式

Nacos 2 版本下的服务发现,客户端通过 gRPC,发送注册服务或订阅服务的请求。服务端使用 Client 对象来记录该客户端使用的 RPC 连接发布了哪些服务,并将这些 Client 进行服务间同步。由于实际的使用习惯是服务到客户端的实时,即服务下有哪些客户端连接。

配置管理之前用Http1.1的Keep Alive模式30s发一个心跳模拟长链接,协议难以理解,内存消耗大,推送性能弱,因此2.0通过gRPC彻底解决这些问题,内存消耗大量降低。

  • 客户端不再需要定时发送实例心跳,只需要有一个维持连接可用 keepalive 消息即可。重复 TPS 可以大幅降低。
  • TCP 连接断开可以被快感知到,提升反应速度。
  • 长连接避免频繁连接开销,可以大幅缓解 TIME_WAIT 问题。
  • 真实的长连接,解决配置模块 GC 问题。
  • 更细粒度的同步内容,减少服务节点间的通信压力。

当然,缺点也是存在的。那就是 RPC 协议的可观性不如 HTTP。即使 gRPC 基于 HTTP2.0 Stream 实现,仍然不如直接使用 HTTP 协议来的直观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2134230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM面试真题总结(九)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 描述CMS垃圾收集的工作过程 CMS(Concurrent Mark Swee…

代码随想录训练营 Day60打卡 图论part10 SPFA算法 Bellman-Ford 之判断负权回路 Bellman-Ford 之单源有限最短路

代码随想录训练营 Day60打卡 图论part10 一、Bellman_ford 队列优化算法(又名SPFA) 例题:卡码94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过…

Monster Sound FX Pack 2 怪物恶魔野兽声效包

这是受最新电影和游戏启发而创作的一系列超凡怪兽音效中的第二卷。Monster Sound FX Pack 2 包含精心设计的声音,充满个性,为听众带来新的体验。这些声音经过专业设计,是严肃的声音设计师和游戏开发者的必备品! 发现声音非常适合龙、野兽、外星人、兽人、地精、巨人、巨魔、…

【Qt笔记】QScrollArea控件详解

目录 引言 一、QScrollArea 的基本概念 二、QScrollArea 的主要属性 2.1 设置内容大小是否随滚动区域变化 2.2 设置水平与垂直滚动条 2.3 设置视口外边距 三、QScrollArea 的常用方法 3.1 设置显示小部件 3.2 返回当前设置的小部件 3.3 设置内部小部件是否可以填充…

基于51单片机的16X16点阵显示屏proteus仿真

地址: https://pan.baidu.com/s/1JQ225NSKweqf1Zlad_f1Mw 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

ZW3D二次开发_UI_非模板表单_设置表单显示位置

1.ZW3D弹出非模板表单时可以设置弹出位置(居中、左下角、右上角等) 2.假设已创建好非模板表单 3.在Form属性中添加form_pos属性 4.输入值 base,CTR,0.0 ,如下图 也可以设置为其他值显示在不同的位置,如下 5.重新编译,…

宏电5G工业互联网解决方案荣获第七届“绽放杯”5G应用征集大赛5G应用融合产品专题赛优秀奖。

近日,“宏电5G工业互联网解决方案赋能传统企业数字化转型升级”项目荣获第七届“绽放杯”5G应用征集大赛5G应用融合产品专题赛优秀奖。 “绽放杯”由中国信息通信研究院及三大运营商共同主办,是国内最具影响力的全国性5G应用赛事,本次“绽放…

大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

《深入理解 Java 中的多线程基础(篇一)》

多线程基础 概述 现代操作系统(Windows,macOS,Linux)都可以执行多任务。多任务就是同时运行多个任务。 例如:播放音乐的同时,浏览器可以进行文件下载,同时可以进行QQ消息的收发。 CPU执行代码…

发展与监管协同发力 人工智能算法领域已形成良好生态

发展与监管协同发力 人工智能算法领域已形成良好生态 近日,全国组织机构统一社会信用代码数据服务中心对国家网信办公示的人工智能领域备案信息进行了详尽的分析,揭示了我国人工智能产业的蓬勃景象。据统计,我国人工智能领域的备案主体遍布各…

uni-app生命周期(三)

文章目录 一、uni-app的生命周期二、应用生命周期三、页面的生命周期函数1.简介2.页面加载时序介绍3.页面加载常见问题4.页面加载顺序4.部分生命周期介绍 四、组件的生命周期函数 一、uni-app的生命周期 应用生命周期(整个App的生命周期) 在app.vue里面…

认知杂谈61《天呐!“稳住,别浪” 竟藏着改变人生的惊天秘密,不看后悔一辈子!》

内容摘要: 生活要耐心,记住 “稳住,别浪”。遇难关别慌,如考教资、学平面设计等,一步步来。保护名声与人脉,多交靠谱朋友。越乱越要静,困难时冷静分析。培养耐心,认识天性、明确预算…

多个系统运维压力大?统一运维管理为IT轻松解忧

企业基于网络安全管理需要,采用防火墙、网闸、云桌面等多种方式进行网络隔离,网络隔离后,数据仍需在不同网络区域间流转,此时便产生了网间数据摆渡需求。为了业务有序正常开展,同时保证严密的网络隔离架构不受破坏&…

云曦2024秋季学期开学考复现

Web 学习高数 资料:命令执行中关于PHP正则表达式的一些绕过方法_正则表达式中过滤的怎么绕过-CSDN博客 记 [CISCN 2019 初赛]Love Math三种解法-CSDN博客 WEB攻防-RCE代码&命令执行&过滤绕过&异或无字符&无回显方案&黑白盒挖掘_代码执行 异…

Snowflake 如何通过 Apache Iceberg 和 Polaris 为大数据的未来提供动力

Snowflake 的使命是让每个组织都成为数据驱动型组织。凭借围绕 Apache Iceberg 的最新创新和 Polaris 的推出,这家数据云公司使开发人员、工程师和架构师能够比以往任何时候都更快、更轻松地利用大数据获得变革性的业务见解。 将开放标准引入数据云 Snowflake 战略的核心是采…

提升RAG系统的回答质量:高质量文档解析终极干货

为什么RAG系统重点解析PDF? 在RAG系统中,PDF文档成为重点解析对象的原因与其在企业中的广泛应用以及其自身的优势密切相关。 PDF文档在企业中的普遍使用 行业标准格式:PDF(可移植文档格式)是各行业用来分发和保存数…

抓机遇,创发展︱2025 第十二届广州国际汽车零部件加工技术及汽车模具展览会,零部件国产浪潮不可阻挡

抓机遇,创发展︱2025 第十二届广州国际汽车零部件加工技术及汽车模具展览会,零部件国产浪潮不可阻挡 汽车零部件行业是汽车工业发展的基础,是支撑汽车工业持续稳步发展前提条件。随着经济全球化和市场一体化进程的推进,汽车零部件…

【devops】devops-git之git分支与标签使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

Python画笔案例-047 绘制雪花

1、绘制雪花 通过 python 的turtle 库绘制 雪花,如下图: 2、实现代码 绘制 雪花,以下为实现代码: """雪花.py """ import turtledef draw_branch(d):for _ in range(2):turtle.fd(d)turtle.lt(45)…

实时分析都靠它→揭秘YashanDB列式存储引擎的技术实现

01 概述 YashanDB列式存储引擎,又称为LSC(Large-scale Storage Columnar Table)。其通过自研的CBO优化器、向量化执行、原生列存格式等技术,达到业界领先的查询分析能力。 YashanDB LSC是专为海量数据的实时分析场景而设计,致力…