Spring Cloud Alibaba基础教程:Nacos的数据持久化

前情回顾:html

经过以前几篇关于Nacos的博文,对于Nacos分别做为服务注册中心以及配置中心时,与Spring Cloud体系结合的基础使用方法已经介绍完毕了。下面咱们再用几篇博文从生产部署的角度,介绍Nacos的相关内容。本文咱们将具体说说Nacos的数据存储以及生产配置的推荐。mysql

数据持久化

在以前的教程中,咱们对于Nacos服务端自身并无作过什么特殊的配置,一切均以默认的单机模式运行,完成了上述全部功能的学习。可是,Nacos的单机运行模式仅适用于学习与测试环境,对于有高可用要求的生产环境显然是不合适的。那么,咱们是否能够直接启动多个单机模式的Nacos,而后客户端指定多个Nacos节点就能够实现高可用吗?答案是否认的。git

在搭建Nacos集群以前,咱们须要先修改Nacos的数据持久化配置为MySQL存储。默认状况下,Nacos使用嵌入式数据库实现数据的存储。因此,若是启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只要支持MySQL的存储。github

配置Nacos的MySQL存储只须要下面三步:算法

第一步:安装数据库,版本要求:5.6.5+spring

第二步:初始化MySQL数据库,数据库初始化文件:nacos-mysql.sql,该文件能够在Nacos程序包下的conf目录下得到。执行完成后能够获得以下图所示的表结构:sql

第三步:修改conf/application.properties文件,增长支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码。配置样例以下:数据库

spring.datasource.platform=mysql

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

到这里,Nacos数据存储到MySQL的配置就完成了,能够尝试继续用单机模式启动Nacos。而后再根据以前学习的Nacos配置中心的用法来作一些操做,配合MySQL工具就能够看到数据已经写入到数据库中了。下一篇,咱们将继续app

深刻思考

关于Nacos数据的持久化实现,与其余的中间件相比,在实现上并无采用分布式算法来解决一致性问题,而是采用了比较常规的集中化存储来实现。因为采用单一数据源的方式,直接解决了分布式一致性问题,因此从学习成本的角度上来讲,Nacos的实现原理会更容易被理解和接受。可是,从部署的负责度和硬件投入成本上来讲,与etcd、consul、zookeeper这些经过算法方式解决一致性问题的中间件相比,就显得不足了。运维

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

以上思考主要从理论上,粗略讨论的,并无通过详细的成本评估与可用性计算。因此,对于实际应用场景下,可能这些成本的增长和可用性的下降并无那么多大的影响。同时,Spring Cloud Alibaba下使用的各开源组件都有对应的商业产品,在没有足够运维人力的团队下,使用对应的商业产品可能从各方面都会更加划算。

参考资料

代码示例

本文介绍内容的客户端代码,示例读者能够经过查看下面仓库中的alibaba-nacos-config-client项目:

若是您对这些感兴趣,欢迎star、follow、收藏、转发给予支持!

如下专题教程也许您会有兴趣

相关文章
相关标签/搜索