开发者学堂课程【深入浅出讲解 MSE Nacos 2.0新特性:深入浅出讲解 MSE Nacos 2.0 新特性】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/962/detail/14883
深入浅出讲解 MSE Nacos 2.0 新特性
Nacos2.0 性能对比:
版本 |
规格 |
节点数 |
场景:每秒处理服务注册的请求数(TPS) |
最大支撑实例数 |
最大支撑连接数 |
基础版 |
2 Core 4 GiB |
3 |
2000 |
6000 |
无 |
5 |
2300 |
10000 |
|||
4 Core 8 GiB |
3 |
6000 |
11500 |
||
8 Core 16 GiB |
3 |
11200 |
18000 |
||
5 |
16800 |
30000 |
|||
专业版 |
2 Core 4 GiB |
3 |
6000 |
42000 |
8000 |
4 Core 8 GiB |
3 |
12000 |
72000 |
16000 |
|
8 Core 16 GiB |
3 |
22000 |
110000 |
24000 |
此表的最大实例数和TPS都是能够保证服务能够稳定运行的数据,在基础版3节点4GIB的情况下,最大实例数为6000,则在实测时最大值能达到10000+,如果挂掉一台机器,整个两级联系不能稳定进行。整体专业版对比基础版,规模大概提升了十倍,最大值情况大概提升了7-10倍左右。
2.Nacos2.0 性能一升级前后 CPU 性能曲线:
第一阶段使用客户端1.X版本,属于基础版本,整体实例数从0增加至6000最后增加至10000,最后值增加至14000无法继续增大。CPU使用率达到80%-90%会报错,降低实例数到6000。
第二阶段将mse基础版升级到专业版,实例数增加至14000无法继续增加,此时性能压测曲线与之前无较大差异,因为服务端依旧使用1.X版本。
第三阶段将客户端分批升级到2.0版本,保持实例数在14000的状态下,此时CPU的指标曲线不断下降到百分之20左右,整体服务状态处于稳定态无报错的情况。
从上图可看出,在升级前后,基础版和专业版性能差别较大,在14000左右的规模下,基础版已经压满客户端存在报错,升级后,在14000实例下,CPU保持在20%以上,出于稳定状态无抖动。
3. Nacos2.0 性能一配置管理
配置管理通常情况下出于读多少写的情况,相对简单。主要为单服务器独的请求及连接数。
l 压单台
l 配置读写
l SDK连接数
4.Nacos2.0 性能一结论
服务发现:Nacos2.0相较于1.X提升约10倍
配置管理:提升约7倍
四、Nacos 平滑升级专业版
1.如何升级:
对于新用户,可以直接创建专业版实例。老用户可以通过对低版本的Nacos实例进行实例变更一键升级。MSE可以在后台被迫升级,但由于NacosV1V2版本数据结构不同,开始Nacos结构默认双写,在升级过程中,数据从V1同步至V2版本。升级完成后,数据从V2同步至V1,最后MSE会关闭双写逻辑。MSE会在后台自动完成。
随后mse的端口会增加9848(GRPC)端口。当Nacos 完全升级到2.0版本之后,应用SDK从1.X升级2.0版本。应用升级完成后,应用端和摄入端运行于2.0架构以下。
2.版本间的渐入情况:
整体原则为高版本的服务端键入低版本的客户端,但高版本的客户端不一定能访问低版本的服务端。因此1.X客户端可以访问基础版及专业版。由于1.X不支持GRPC协议,因此Nacos2.0客户端不能访问基础版只能访问专业版。
五、Nacos 配置安全管理
1、Nacos 配置加解密一数据安全
用户在使用配置数据时,可能会将用户信息、数据库密码等敏感信息存放在Nacos中,而Nacos存储配置数据为明文传输明文存储,当数据库内容泄露或者传输过程中被抓包时导致敏感配置向数据泄露,安全风险非常高,常用的http协议可以解决传输中安全问题,但解决不了存储安全问题。解决方式为直接在客户端对数据进行加密,在传输存储过程中为加密数据。
2、Nacos 配置加解密一加密算法
为了对整体加密算法和流程的安全性引入第三方的加密系统。阿里云使用KMS加强整体加密的安全性。为了整体加密效率,使用对称加密算法。由于对称加密在传输密文的过程中同时传输密钥,因此对密钥加密,整体采用二级加密方式。
当SDK发布数据时,首先从KMS得到密钥及加密密钥,同时使用密钥进行数据加密,并将加密数据及加密密钥存储至nacos。另一侧SDK从nacos中得到储存的加密数据及密钥,通过得到的密钥访问KMS 从而获得明文密钥,使用明文密钥对加密数据解密,获得明文数据。此过程解决nacos数据存储、传输的数据安全问题。
整体Nacos为了键入之前明文数据的逻辑并且不是所有全部需要加密,只有少量的敏感数据需要加密。Nacos只对固定的前缀的数据进行加密,即带有前缀cipher-kms-aes-256-、cipher-kms-aes-128-的算法。开源侧可用SDK SPI插件实现。可自行扩展。
在使用加密数据时可以使用SDK以及MSE控制台加解密,首先访问KMS对数据加密存储。数据解密后明文展示,过程与明文存储过程基本一致。
使用SDK进行加密功能时,要求SDK版本在1.4.2以上,同时引入MSE内部实现nacos-client加解密插件。在初始化SDK时授权KMS 加解密权限,因为SDK首先访问KMS的权限。
引入加解密插件:
com.alibaba.nacos
nacos-client
1.4.2
com.alibaba.nacos
nacos-client-mse-extension
1.0.1
SDK加解密:
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("keyIa”,“alias/acs/mse”);
properties.put(“regionrd”“en-hangzhou”);
ConfigService configService=NacosFactory.createConfigService(properties);