前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud Alibaba之服务发现组件 - Nacos的数据持久化(八)

Spring Cloud Alibaba之服务发现组件 - Nacos的数据持久化(八)

作者头像
用户1212940
发布2022-04-13 16:56:26
2500
发布2022-04-13 16:56:26
举报
文章被收录于专栏:LambdaLambda

通过之前的几篇有关Nacos的文章,对于Nacos分别作为服务注册中心以及配置中心时,与Spring Cloud体系结合的基础使用方法已经讲解完毕了。下面我们就要从生产部署角度,介绍Nacos的相关内容。这里具体说说Nacos的数据存储以及生产配置的推荐。

数据持久化

在之前的教程中,我们对于Nacos服务端自身并没有做过什么特殊的配置,一切均以默认的单机模式运行,完成了上述的所有功能学习。但是,Nacos的单机运行模式仅适用于开发和测试环境,对于有高可用要求的生产环境就不太合适了。

有人说我们可不可以直接通过启动多个单机模式Nacos服务的方式,来实现多个节点Nacos的高可用吗?答案是不可以!

那我们应该如何才能实现Nacos的高可用集群搭建?

在搭建Nacos集群之前,我们需要知道,默认情况下,Nacos使用内嵌的cmdb数据库完成数据的存储。所以,如果启动多个默认配置的Nacos节点,数据存储是存在不一致问题的。为了解决这个问题,Nacos采用了集中式存储方式来支持集权化部署,目前只支持MySQL的存储。

配置Nacos的MySQL存储只需要下面三步:

第一步:安装数据库,这里选择的版本:5.7.x

具体安装步骤这里就不在说明

第二步:初始化MySQL数据库,初始化文件可以从Nacos工程包下 conf 目录获取:

11464886-49e3a3ceea3f9a93.png
11464886-49e3a3ceea3f9a93.png

执行完毕后可以看到如下图所示的表结构:

11464886-8cf3649d9a4c03f6.png
11464886-8cf3649d9a4c03f6.png

第三步:修改Nacos工程包下 ** conf/application.properties**文件,增加支持MySQL数据源的配置:

代码语言:javascript
复制
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

这样,Nacos数据存储到MySQL的配置就完成了,可以尝试继续使用单机模式启动Nacos。看配置是否生效。

思考

关于Nacos数据的持久化实现,与其他的中间件的相比,在实现上并没有采用分布式算法来解决一致性问题,而是采用常规的集中化存储来实现。由于采用单一数据源的方式,直接解决分布式一致性问题,所以从学习角度上来说,Nacos的实现原理会更容易理解和接受。但是,从部署的复杂度和硬件投入成本来说,与consul、zookeeper这些通过算法方式实现分布式一致性问题的中间件相比,就略显不足了。

同时,在引入MySQL的存储时,由于多了一个中间件存在,整个Nacos系统的整体可用性一定会有所下降的。所以为了弥补可用性的下降,在生产上MySQL的高可用部署也是必须的(成本再次提高)。不论如何提高,可用性都很难达到100%,所以这种方式,不论如何提升存储的可用性,理论上对Nacos集群的自身可用性都会产生微小的影响。

不过上面的思考都是从理论上,粗略讨论的,并没有经过详细的成本评估与可用性计算。所以,对于实际应用场景,可能这些成本的增加和可用性的降低并没有那么大的影响。


下一章节,我们将通过MySQL数据库完成对Nacos管理用户进行自定义。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据持久化
  • 思考
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档