当前位置: 首页 > 科技观察

Nacos2.0SpringBootStarter来了!

时间:2023-03-15 23:17:24 科技观察

本文转载自微信公众号《程序猿DD》,作者勇跃。转载本文请联系程序员DD公众号。随着Nacos2.0的成熟和稳定,Nacos-spring-boot发布了0.1.10和0.2.10两个核心版本,全面支持Nacos2.0,支持自动识别配置类型注入能力,修复数据一致性在高并发场景下性问题。Nacos-spring-boot老用户可以通过如下方式替换相关maven依赖快速升级。com.alibaba.bootnacos-config-spring-boot-starter0.2.10本文将介绍新版本增强能力,并以一个生产环境配置管理项目构建过程为例,介绍新版本NacosSpringBoot0的部署。性能改进。Nacos-spring-boot新版本特性新发布的0.1.10版本和0.2.10版本主要特性增强包括以下几个部分:全面兼容Nacos2系统,进化到长连接时代在Nacos1系统,订阅和真实-配置中心的时间推送功能主要通过长时间轮训来实现。long-roundtraining虽然是HTTP短连接系统中广泛使用的动态刷新方案,但不可避免地存在延迟过大等缺陷;在生产实践中暴露了一些问题,如下两个链接所示:https://github.com/alibaba/nacos/issues/6345https://github.com/alibaba/nacos/issues/2674Nacos2系统重构将整个配置中心的订阅和推送功能整合到一个基于gRPC的长连接方案中。保证配置刷新实时推送;到目前为止,已经经历了很多生产环境的考验。自动识别配置文件类型使用新版Nacos-spring-boot后,即使用户没有设置配置类型,nacos-spring-boot也会自动识别配置文件类型(json/yaml/properties)并给定一个默认值。这种机制大大降低了业务方由于文件类型不匹配导致配置处理错误的风险。下图展示了新版Nacos-spring-boot项目在一次配置文件刷新过程中的工作机制。@NacosValue注解完全支持Spel表达式。Spel表达式的全称是“SpringExpressionLanguage”,是Spring自带的动态字符串构造方法(表达式)。用户可以方便的使用Spel表达式定义NacosValue,与Spring函数完美结合,减少SpringBoot玩家的工作量。修复高并发场景下的一致性问题。在使用Nacos-spring-boot项目进行大规模压测过程中,部分阿里云内部同学遇到配置读取错误:在大流量中频繁修改某些dataIds的配置时,客户端可能会拉取旧版本的配置数据,导致客户端配置数据重复。新版Nacos-spring-boot通过添加智能锁和升级Nacos-spring依赖修复潜在的线程安全风险。ProductionDemo——客户端部署Springboot老手可以通过以下方式升级到新版本的Nacos-spring-boot。在Maven项目的pom.xml文件中添加(或升级)如下依赖,获取Startercom.alibaba.bootnacos-config-spring-boot-starter0.2.10注意:使用时请根据自定义构建的SpringBoot版本选择对应的nacos-config-spring-boot-starter版本:nacos-config-spring-boot-starterVersion0.2.10对应SpringBoot2.x版本,version0.1.10对应SpringBoot1.x版本。在application.properties文件中配置连接信息nacos.config.server-addr=${nacos_server_address}:8848注意:${nacos_server_address}是一个占位符,表示Nacos服务器的地址,如何获取它的详细地址会在后面稍后会给出信息方案。使用@NacosPropertySource加载dataId为example的配置源,并开启自动更新@SpringBootApplication@NacosPropertySource(dataId="com.alibaba.nacos.example.properties",autoRefreshed=true)publicclassNacosConfigApplication{publicstaticvoidmain(String[]args){弹簧应用程序。run(NacosConfigApplication.class,args);}}使用@NacosValue注解设置属性值。@Controller@RequestMapping("config")publicclassConfigController{@NacosValue(value="${connectTimeoutInMills:5000}",autoRefreshed=true)privateintconnectTimeoutInMills;@RequestMapping(value="/get",method=GET)@ResponseBodypublicintget(){returnconnectTimeoutInMills;}}ProductionDemo-服务器部署Nacos官方为SpringBoot玩家提供了两种服务器部署方式:自建开源Nacos和MSENacos专业版。自建开源Nacos用户若选择开源Nacos,可进行自主部署、自主运维、生产环境调优;另外,由于开源的Nacos协议是Apache2.0协议,用户甚至可以开发自定义功能。开源Nacos的安装步骤请参考https://github.com/alibaba/nacos。支持的环境包括Windows、MacBook、Linux等多种平台,可轻松在单机或集群中启动。MSENacos专业版MSENacos致力于提供高可用的一站式解决方案。与基础版和开源版相比,进行了大量的升级:自动升级过程可以完成基础版到专业版的升级,无需复杂的运维部署。平滑升级。提供企业级99.95%的高可用保障。支持长链接,性能比基础版提升10倍。拥有更完善的配置加解密体系,无需担心敏感配置信息丢失的风险。更完善的认证体系全面引入了阿里云RAM主子系统的权限控制。使用MSENacos专业版作为服务端,具体步骤可以分为以下几个步骤。1.首先访问MSE官网,https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0,登录。2.点击“立即购买”,“创建实例”。3、选择“专业版”,根据需要进行其他相应设置。然后点击立即购买。4.等待3分钟,即可在控制台看到新建的Nacos集群。5.复制对应的内网或公网地址,填入上面提到的${nacos_server_address}。(如果要使用内网访问,直接复制内网地址即可;如果要使用公网访问,需要点击进入,将访问终端加入宫网白名单)。6、点击进入对应实例的控制台,点击“配置列表”,“创建配置”。7、创建与客户端匹配的配置信息,注意下图中红框标注的项目(这里根据需要选择数据加密),最后点击“发布”。结果验证在本地启动客户端项目,运行以下命令:curllocalhost:8080/config/get如果返回如下信息,则说明SDK可以正常使用。3000在MSE控制台,修改示例配置com.alibaba.nacos.example.properties为如下内容并发布。connectTimeoutInMills=6000如果控制台打印出更新的配置内容,说明SDK自动配置更新功能正常;项目正式进入高性能配置中心时代。原文链接:https://mp.weixin.qq.com/s/cEB-PDcvskP4rbf-7W5fyA