深入浅出讲解MSE Nacos 2.0新特性

简介: 随着云原生时代的到来,微服务已经成为应用架构的主流,Nacos也凭借简单易用、稳定可靠、性能卓越的核心竞争力成为国内微服务领域首选的注册中心和配置中心;Nacos2.0更是把性能做到极致,让业务快速发展的用户再也不用担心性能问题;同时阿里云MSE也提供Nacos2.0托管服务,一键开通享受阿里十年沉淀微服务所有能力!

作者|风卿

前言

MSE从2020年1月发布Nacos1.1.3版本引擎,支持在公有云环境全托管的方式使用Nacos作为注册中心。2020年7月发布Nacos1.2.1版本支持元配置数据管理,支持微服务应用在运行时动态修改配置信息和路由规则等。随着用户的深入使用,Nacos1.X版本的性能问题也渐渐暴露出来。通过对1.X版本的内核改造,Nacos2.0专业版性能提升10倍,基本能满足用户对微服务场景的性能要求。

除了性能的提升,专业版具有更高的SLA保障,并且在配置数据上具有更高的安全性,同时通过MCP协议与Istio生态打通,作为Istio的注册中心。

MSE Nacos1.X基础版架构

整体1.X架构可以粗略分为五层,分别是接入层、通信层、功能层、同步层和持久化层。

  • 用户通过接入层访问Nacos,比如SDK、SCA、Dubbo、Console,Nacos也提供了HTTP协议的open API访问方式。
  • 通信层包含HTTP和UDP,Nacos主要通过HTTP进行通信,少部分服务推送功能会用到UDP。
  • 功能层目前有Naming和Config两大部分,分别提供服务发现和配置管理能力。
  • 同步层包含AP模式的Distro协议(服务注册)和CP模式的Raft协议(服务元信息),以及配置通知的Notify同步方式
  • Nacos的数据持久化有用到Mysql、Derby和本地文件,配置数据、用户信息、权限数据存储在Mysql或者Derby中,持久化的服务数据则存放在本地文件

MSE Nacos1.X基础版架构问题

目前1.X的架构存在几个问题:

  • 每个服务实例都通过心跳续约,在Dubbo场景每个接口对应一个服务,当Dubbo的应用接口数较多时需要心跳续约TPS会很高。
  • 心跳续约感知时延长,需要达到续约超时时间才能删除实例,一般需要15S,时效性较差
  • 通过UDP推送变更数据不可靠,需要客户端定时进行数据全量对账保证数据的正确性,大量无效查询,整体服务的QPS很高
  • 通信方式基于HTTP短链接的方式,Nacos侧释放连接会进入TIME_WAIT状态,当QPS较高时会有连接耗尽导致报错的风险,当然这里通过SDK引入HTTP连接池能缓解,但不能根治
  • 配置的长轮询方式会导致相关数据进入JVM Old区申请和释放内存,引起频繁的CMS GC

MSE Nacos2.0专业版架构及新模型

1.X架构的问题核心点在于连接模型上,2.0架构升级为长连接模型,在通信层通过gRPC和RSocket实现长连接数据传输和推送能力,在连接层新增加请求处理器、流控和负载均衡等功能

2.0架构解决的问题:

  • 应用POD按照长连接维度进行心跳续约,不需要按照实例级,大大降低重复请求
  • 长连接断开时可以快速感知到,不用等待续约超时时长就可以移除实例
  • NIO流式推送机制相对于UDP更可靠,并且可以降低应用对账数据频率
  • 没有连接反复创建的开销,大幅降低TIME_WAIT连接多问题
  • 长连接也解决了配置模块长轮询CMS GC问题

2.0架构带来的问题:

  • 相对于Tomcat HTTP短连接模型,长连接模型需要自己管理连接状态,增加了复杂性
  • 长连接gRPC基于HTTP2.0 Stream,相对于HTTP的open API可观测性和易用性降低了

2.0架构整体来说降低了资源开销,提高了系统吞吐量,在性能上有大幅提升,但同时也增加了复杂度

MSE Nacos2.0专业版性能

Nacos分为服务发现模块和配置管理模块,这里先对服务发现场景进行性能测试。

使用200台施压机,每个施压机模拟500个客户端,每个客户端注册5个服务,订阅5个服务,最高可以提供10W个长连接、50W个服务实例和订阅者压测场景

服务发现压测主要压变更态和稳定态两种场景:

  • 变更态:施压机施压阶段会大量连接Nacos注册和订阅服务,这个阶段服务端的压力相对会比较大,需要看整体注册和订阅是否最终完全成功。
  • 稳定态:当施压机请求都成功之后就会进入稳定状态,客户端和服务端之间只需要维持长连接心跳即可,这个阶段服务端的压力会比较小。如果在变更态服务端的压力过大会发生请求超时、连接断开等问题,不能进入稳定态

服务发现也会在MSE上对低版本做升级,对比升级前后的性能变化曲线,这样的性能对比更直观

配置管理模块在实际使用中是写少读多的场景,主要瓶颈点在单台机器性能上,压测场景主要基于单台机器的读性能和连接支撑数
使用200台施压机,每台施压机可以模拟200个客户端,每个客户端订阅200个配置,发起配置订阅和读配置请求

在服务发现场景对比基础版和专业版在2C4G、4C8G和8C16G规格下的性能数据情况。

这里最大的TPS和实例数都是服务能保证高可用稳定运行的数据,大概会是最大值的一半或者三分之二,也就是说挂一台机器也可以正常运行。

稳定运行时支持规模提升7倍,实际上最大支持规模提升7-10倍

还有一个场景是对3节点2C4G MSE Nacos升级前后的对比,主要分为三个阶段:

  • 第一个阶段客户端使用1.X版本,MSE Nacos使用基础版,实例数从0->6000->10000,最后到14000最大值无法继续增大,Server CPU达到80-90%,客户端不断报错,接着降低实例数到6000
  • 第二阶段升级MSE Nacos基础版到专业版,实例数到达14000无法继续增大,性能压测性能曲线差异不大
  • 第三阶段在保持实例数为14000的状态下,分批升级客户端到2.0版本,CPU指标曲线不断下降至20%左右,并且整体处于稳定态无报错

从升级前后的性能曲线感受MSE Nacos2.0专业版性能有提升较大。最后整体的压测情况,相较于基础版,专业版服务发现性能提升10倍,配置管理提升7倍

MSE Nacos平滑升级专业版

对于新用户可以直接创建专业版实例,老用户则可以通过MSE"实例变更"一键升级。MSE会在后台对POD升级,由于V1V2数据结构不一样,在一开始的时候Nacos数据默认是双写的,在升级过程中数据会从V1同步到V2,升级完成后数据会从V2同步V1,最后MSE会关闭双写逻辑,整体流程都是自动。

SLB的服务端口最后也会增加GRPC 9848端口,此时应用SDK可以从1.X版本升级到2.0版本,整体客户端服务端升级到2.0架构

版本之间的兼容性情况,整体的兼容原则是高版本的服务端兼容低版本客户端,但是高版本客户端不一定能访问低版本服务端:

  • 1.X客户端可以访问基础版,也可以访问专业版
  • 2.0客户端可以访问专业版,但是不能访问基础版

Nacos配置安全管理

上一期岛风同学讲解了配置权限控制,整体MSE Nacos通过阿里云RAM主子账号体系来做权限控制,这期我主要讲一下Nacos的配置加密功能。

用户在使用配置数据时可能会将用户信息、数据库密码等敏感信息存放到Nacos中,而Nacos存储配置数据都是明文传输、明文存储的,在数据库内容泄漏或者传输层抓包时会导致敏感配置数据项泄漏,整体安全风险非常高。

常用的HTTPS协议能解决传输安全,但解决不了存储安全,这里直接在客户端进行加密,这样在传输和存储的过程中数据都是加密的。

这里使用第三方加密系统(如阿里云KMS)加强加密的安全性,为了加密速度快使用对称加密(AES算法),由于密钥要随着密文传输,同时对密钥进行加密,整体采用二级加密的方式。

SDK在发布数据时会先从KMS中拿到密钥和加密后的密钥,然后使用密钥对数据进行加密,接着将加密数据和加密后的密钥传输到Nacos存储。SDK会从Nacos获取加密数据和加密后的密钥,然后通过加密后的密钥从KMS获取明文密钥,接着通过明文密钥对加密数据进行解密获取明文数据,解决了整体传输和存储中的数据安全问题。

为了兼容老逻辑,并且只有敏感数据需要加密,Nacos只对固定前缀DataId的数据进行加密,并且在开源侧通过SPI插件化实现,让用户自己能扩展

用户可以通过SDK和MSE控制台对敏感数据进行加解密,整体SDK和MSE控制台都会先访问KMS再加密存储配置数据,然后解密之后再展示明文,使用流程和之前明文存储一致

用户使用SDK接入开启加解密功能需要SDK在1.4.2版本及以上,同时需要引入MSE内部实现的nacos-client-mse-extension加解密插件。

   com.alibaba.nacos

   nacos-client

   1.4.2

   com.alibaba.nacos

   nacos-client-mse-extension

   1.0.1

初始化SDK时需要填入子账号AK/SK,并授权KMS加解密权限,具体细节可以参考创建和使用配置加密

 Properties properties = new Properties();

 properties.put("serverAddr", "mse-xxxxxx-p.nacos-ans.mse.aliyuncs.com");

 properties.put("accessKey", "xxxxxxxxxxxxxx");

 properties.put("secretKey", "xxxxxxxxxxxxxx");

 properties.put("keyId", "alias/acs/mse");

 properties.put("regionId", "cn-hangzhou");

 ConfigService configService = NacosFactory.createConfigService(properties);

 String content = configService.getConfig("cipher-kms-aes-256-dataid", "group", 6000);

总结

MSE Nacos2.0专业版相较于基础版在性能、可用性和安全性上都有较大提升,基础版建议用于测试环境,对于生产环境建议使用专业版。对于用户身份、密码等配置敏感信息建议都开启权限控制能力并且加密保存加强数据安全。

原文链接
本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

交换机是如何对数据包打标签去标签的_条形码软件如何在标签纸上套打可变条码...

在制作商品标签时,通常会遇到标签纸上已经有部分内容,需要我再添加打印一些对应的信息(如下图),那么这种情况下,如何比较简单的在合适位置上打印可变条码呢,下面我们就来详细看一下在中琅条形码软件中套打可变条码的操…

学不动也要学!ViewPager2 新特性

作者 | tech-bus.丹卿来源 | 程序员八十前 言浏览Android开发者官网的时候,发现Google竟然曾经悄悄推出过一个新的控件:ViewPager2;从名字上看就知道是ViewPager的升级版本,看了下推出这个控件的时间,早在2019年2月7号Google就已经发布了&…

方舟手游服务器受人无限物资,方舟生存进化BUG无限刷物资方法 | 手游网游页游攻略大全...

发布时间:2015-10-23壳是铁房子必须的材料,今天小编为大家带来一天1000壳的方法,不过高收益伴随着高风险,大家一定要小心,来看这篇熔岩洞生存攻略以及刷壳方法把. 右下角坐标(75 85 ...标签:游戏攻略 游戏秘籍 方舟生存进化发布时间:2016-04-…

闲鱼如何保障交易链路质量

简介: 闲鱼交易质量自动化 背景 闲鱼作为一款垂直交易社区APP,拥有复杂多样的业务场景:涉及c2c、回收寄卖、租房租赁、见面交易、验货担保等,复杂多变的交易模式。比如验货流程:涉及39个状态机节点横跨10应用系统涉及…

DevOps发布策略简介

简介: DevOps追求更短的迭代周期、更高频的发布。但发布的次数越多,引入故障的可能性就越大。更多的故障将会降低服务的可用性,进而影响到客户体验。所以,为了保证服务质量,守好发布这个最后一道关,阿里逐步…

存储引擎 boltdb 的设计奥秘?

作者 | 奇伢来源 | 奇伢云存储etcd 的存储etcd v3 是使用的持久化存储来存储它的 kv 数据,etcd 存储的是非常核心的元数据信息,所以最重要的是稳定。使用的是 boltdb 。下面说道说道这个 boltdb 。boltdb 是什么?boltdb 是一个非常出名的存储…

提升你的职场竞争力——“低代码开发师”来了!

简介: 最近,钉钉发布了低代码开发师能力图谱,引发业界的广泛关注 。现在低代码开发师(初级)认证已经启动。 最近,钉钉发布了低代码开发师能力图谱,引发业界的广泛关注 。 所谓的低代码开发其实…

mapreduce复制连接的代码_我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?...

《饮食男女》开头说:“人生不能像做菜,把所有的料都准备好了才下锅。”但做大数据挖掘不一样,MapReduce 不同于人生,一定要把准备工作做好了,才能顺利运行后面的步骤。如果你的 HiveQL 代码没毛病,却一运行…

数字化转型的路上,手握一张地图,但路还得自己走

简介: 本文作者来自于中国人寿保险股份有限公司研发中心,对企业数字化转型、云原生实践有比较资深的经验。以下内容整理自作者对最新出版的《阿里云云原生架构实践》的读后感。 作者|肖晟 ​ 本文作者来自于中国人寿保险股份有限公司研发中…

tp 数据库查询排序_怎么进行数据库分库分表?

一,数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对…

流利说统一可观察性平台实践

简介: 流利说利用日志服务SLS构建统一可观察性平台最佳实践 在线教育行业现状 随着 90 年代互联网的引入,在线教育产品也依托于互联网诞生。随着互联网技术的发展,在线教育产品也开 始了出现新的模式。在线教育从最初单纯的文字形式&#xf…

“CSDN 2021年度IT技术影响力之星评选”正式开启报名!

2021年,数字化转型正磅礴兴起,大批传统企业正在拥抱数字化,云计算、大数据、AI、5G应用能力正在变成企业的核心竞争力;核心技术正在崛起,在操作系统、数据库,依靠开源的力量,众多开发者背后的行…

java log4j logback jcl_Java 日志二三事

前言Java 拥有功能和性能都非常强大的日志库,但另一方面,Java 日志库依赖看起来丰富的让人眼花缭乱。相信大家或多或少都有这样的疑问,Log4j,SLF4J,Logback,Log4j2 这些日志框架我该如何选择?它…

一文了解EPaxos核心协议流程

简介: EPaxos(Egalitarian Paxos)作为工业界备受瞩目的下一代分布式一致性算法,具有广阔的应用前景。但纵观业内,至今仍未出现一个EPaxos的工程实现,甚至都没看到一篇能把EPaxos讲得通俗一点的文章。EPaxos…

低代码发展系列专访之五:低代码的最大价值点是“技术平民化”吗?

话题:低代码专访编辑 | LLBin前言:2019年开始,低代码爆火。有人认为它是第四代编程语言,有人认为它是开发模式的颠覆,也有人认为是企业管理模式的变革……有很多声音,社区讨论很热烈。CSDN随后展开低代码平…

梦幻跨服购买需要登录服务器未响应,梦幻西游8月4日定期维护公告:跨服购买限制放宽...

核心提示:法宝”系统新增“多套法宝切换”功能。亲爱的玩家朋友:为保证服务器的运行稳定和服务质量,《梦幻西游2》所有服务器将于2015年8月4日上午8:00停机,进行每周例行的维护工作。预计维护时间为上午8:00~9:45。如果…

深度技术揭秘 | 大促狂欢背后,如何有效评估并规划数据库计算资源?

简介: 经过“双11”、“618”这类互联网促销活动的验证,越来越多的互联网公司采用不定期营销活动来刺激消费,达到提升营收能力的目标。然而,在每一次业务狂欢的背后,如何科学地为促销活动准备相应的计算资源就变成了困…

学画画软件app推荐_今日推荐:拍照摄影APP之稀缺软件篇

你也许热衷拍摄或喜欢摄影,那么日常的拍摄主要的工具离不开手机,好的拍照摄影APP当然也必不可少。一个好的拍照软件更加重要,有时候市面上常用的拍照软件不能满足你特殊的拍摄手法,经常需要重新编辑或修改才能达到效果&#xff0c…

干货|一文读懂阿里云数据库Autoscaling是如何工作的

简介: 阿里云数据库实现了其特有的Autosaling能力,该能力由数据库内核、管控及DAS(数据库自治服务)团队共同构建,内核及管控团队提供了数据库Autoscaling的基础能力,DAS则负责性能数据的监测、Scaling决策算…

jq动态渲染后获取不到元素高度_浏览器的渲染机制

面试肯定会问到这个吧~So:再一次的屡屡浏览器的渲染机制~在渲染一开始会先从网络层获取请求文档(HTML、XML)的内容,然后再进行以下基本流程3.1 解析HTML 》 DOM树从HTML文本解析到HTML语法树,再解析到文档对象树&#…