阿里巴巴NACOS(4)- 主流微服务配置中心产品比较 Spring Cloud Config、阿里云ACM、Nacos

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 上一篇文章介绍了如何部署Nacos的生产集群环境,因为Nacos是开源的,代码透明、可以参与共建、有社区进行交流和学习,当然更重要的是开源产品的接入成本低,所以公司项目目前都采用Nacos作为服务配置和注册中心,之前也用过其他产品,比如Eureka、Consul、Spring Cloud Config等,这篇文章就分享一下 服务配置中心  一些主流产品的对比。

作者:阿里云 MVP郦强

1、主流微服务配置中心对比Spring Cloud Config、阿里云ACM、Nacos

说到配置,记得很早用SSH或SSM框架开发项目的时候都是xml的配置文件,内容很多,很容易写错,稍微有一个地方出错了,整个项目就启动不了,现在技术不断日新月异,更新换代很快,而且开源项目框架很多,层出不穷,目前一般都是用微服务的框架,项目基本都用注解方式了,当然除了项目的配置外,还有其他的一些配置文件,比如:开发(dev)、测试(test)、发布(pro)的配置、redis的配置、rabbitMQ的配置、定时任务配置、微服务的路由配置等等,所以用一款好的配置管理工具能事半功倍。

目前主流的一些配置管理中心有Spring Cloud Config Server、Zookeeper、阿里云ACM、Nacos等,这里介绍阿里云ACM,主要是阿里云MSE的微服务引擎支持的Nacos暂时还没有配置这块,所以这里做一个介绍。公司之前有个项目也用了ACM产品,还是不错的,如果后期MSE支持Nacos的配置中心,那我一定强烈推荐大家使用这个MSE产品了。

1)Spring Cloud Config Server

为服务端和客户端提供了分布式系统的外部配置支持,配置服务器为各应用的所有环境提供了一个中心化的外部配置。Spring Cloud 配置服务器默认采用 Git 来存储配置信息,其配置存储、版本管理、发布等功能都基于 Git 或其他外围系统来实现。

1.png

SpringCloud Config 配置git

支持Profile的方式隔离多个环境,通过在Git上配置多个Profile的配置文件,客户端启动时指定Profile就可以访问对应的配置文件。单独创建一个配置文件的项目,在config server的git中配置即可。

2.png

单独创建的配置文件项目,在Spring Cloud Config中指定

Spring Cloud Config原生不支持配置的实时推送,需要依赖Git的WebHook、Spring Cloud Bus和客户端/bus/refresh端点:

a)基于Git的WebHook,配置变更触发server端refresh

b)Server端接收到请求并发送给Spring Cloud Bus

c)Spring Cloud Bus接到消息并通知给客户端

d)客户端接收到通知,请求Server端获取最新配置

2)阿里云ACM(Application Configuration Management)

应用配置管理 ACM 是一款在分布式架构环境中对应用配置进行集中管理和推送的产品。利用 ACM,可以在微服务、DevOps、大数据等场景下极大减轻配置管理的工作量,并增强配置管理的服务能力。这个是官网的介绍,的确功能强大,公司之前的项目也用这个配置过。

应用配置管理 ACM(Application Configuration Management)前身为淘宝内部配置中心 Diamond,现已作为 Nacos 的配置中心模块开源。

关于ACM的使用场景,大家可以点击这个链接查看:https://help.aliyun.com/document_detail/59972.html?spm=a2c4g.11186623.6.546.5a623733KW3wIe 好处很多,我就结合公司的自身项目,说说两个应用场景:

a)微服务应用架构下的配置管理

使用微服务框架的人都知道,随着应用和机器数目的增多,配置管理的工作会变得很繁琐。单个应用下多个机器的配置分发,应用对应用的配置依赖,都将是很麻烦的事情。在传统架构的应用发布过程中,修改一个应用配置就需要将整个应用重新打包发布,整个过程非常繁琐,不仅增加了运维的工作量,而且容易出错。

使用了ACM配置管理中心后,新的配置发布并不依赖配置打包,在新版本的配置发布后,所有应用立即生效,动态更新,这个很方便,下面展示两张ACM的图
3.png

传统方式,配置更改需要重新打包

16628349-000e39ac4d141c1b.png

ACM配置方式,动态更新,无需重新打包

b)应用业务场景动态推送

这个场景也是经常要用到的,公司有个奶酪生活的项目,就是淘宝、京东、拼多多返利模式,这个项目运营经理经常要搞活动,展示运营页面,比如618,双十一,马上又要到双十二了,所以运营活动页面经常要变,层出不穷,吸引消费者来使用。如何让前端页面快速响应运营活动、降低开发成本、提高运营效率,也是 ACM 的使用场景之一。

通过在前端 Javascript 埋入 ACM 的配置内容(如三方库版本号,静态资源 URL 等),在运营活动发布时,运营人员可以通过运营工具修改 ACM 配置规则,直接让前端 Javascript 的展示生效。
4.png

动态推送网页配置信息,更新更加便捷

3)Nacos

Nacos是阿里开源的,Nacos 支持基于 DNS 和基于 RPC 的服务发现。在Spring Cloud中使用Nacos,只需要先下载 Nacos 并启动 Nacos server,Nacos只需要简单的配置就可以完成服务的注册发现。

Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

一句话概括就是Nacos = MSE + ACM。

另外配置中心还有Apollo,Zookeeper等,不过项目中实际没使用过,所以这里就不提了。

2、总结:

个人还是非常偏好Nacos的,一来开源,现在也有稳定的release版本了,二来支持多种语言,现在运维部署用的是k8s,Nacos对docker,k8s都支持很好,最好的一点,可以把之前Consul(公司前一个项目用的)上的配置通过Nacos Sync同步过来,而且迁移到Nacos上相当的方便。下一篇文章,我们将对主流微服务注册中心产品进行比较 Eureka、Consul、Nacos

本文参考链接:

1、https://help.aliyun.com/document_detail/59957.html?spm=a2c4g.11174283.6.545.48d7613624gxGu

首发于简书。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
23天前
|
NoSQL Java Nacos
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
SpringCloud集成Seata并使用Nacos做注册中心与配置中心
56 3
|
4天前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
9天前
|
应用服务中间件 Nacos 数据库
Nacos 1.2.1 集群搭建(三) Nginx 配置 集群
Nacos 1.2.1 集群搭建(三) Nginx 配置 集群
22 1
|
9天前
|
SQL 关系型数据库 MySQL
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
27 1
|
23天前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
148 15
|
22天前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
41 3
|
5天前
|
缓存 Cloud Native Java
【紧急救援】Nacos配置上线后失效?手把手教你如何轻松搞定命名空间修改难题!
【8月更文挑战第15天】Nacos是关键的云原生服务管理平台,用于动态服务发现与配置管理。但在使用其管理微服务配置时,可能会遇到命名空间内的配置更新后不生效的问题。本文探讨此问题并提供解决方案。首先需确认Nacos服务器运行正常及客户端正确连接。接着检查客户端缓存配置,可通过禁用缓存或缩短缓存间隔来即时更新配置。例如,在Spring Cloud Alibaba Nacos配置中心中启用自动刷新功能,并设置每5秒拉取新配置。同时,对于新增配置项,需重启客户端应用。还需检查Nacos服务器日志排除异常,并考虑升级Nacos版本解决兼容性问题。通过这些步骤,通常可有效解决配置不生效的难题。
16 0
|
5天前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
13 0
|
5天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
22 0
|
8天前
|
测试技术
Profile Config 多环境不同配置
Profile Config 多环境不同配置
14 0