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

数据持久化
在之前的教程中,我们对于Nacos服务端自身并没有做过什么特殊的配置,一切均以默认的单机模式运行,完成了上述所有功能的学习。但是,Nacos的单机运行模式仅适用于学习与测试环境,对于高可用要求的生产环境显然是不适合的。那么,我们是否可以启动多个单机模式的Nacos,然后客户端指定多个Nacos节点就可以实现高可用?答案是否定的。

在搭建Nacos之前,我们需要先修改Nacos的数据持久化配置为MySql存储。默认情况系,Nacos使用嵌入式数据库实现数据的存储。所以如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中存储的方式来支持集群化部署,目前只要支持MySql的存储。

配置Nacos的MySql存储只需要以下三步:

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

第二步:初始化MySql数据库,数据库初始化文件:nacos-mysql.sql,该文件在Nacos解压后文件中的conf 文件夹中,执行完成后可以看到如下图所示的表结构:

Spring Cloud Alibaba基础教程:Nacos的数据持久化_第1张图片
注:因为用的客户端工具不一致,所以看到的视图效果不一致。看好表是否创建好就好了~

第三步:修改conf/application.properties文件,增加支持MySql数据源配置(目前支持MySql),添加数据源的url、用户名和密码。配置如下:

Spring Cloud Alibaba基础教程:Nacos的数据持久化_第2张图片
大家在配置的时候根据自己本地MySql的端口,用户名还有密码去配置。
Spring Cloud Alibaba基础教程:Nacos的数据持久化_第3张图片
到这里,Nacos数据存储到MySql的配置就完成了,可以尝试继续使用单机模式启动Nacos。然后再根据之前学习的Nacos配置中心的用法来做一些操作,配合MySql工具就可以看到数据已经写入到数据库了。

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

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

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

注:本文摘自程序猿DD-翟永超老师,我是亲手打字学习了解。

你可能感兴趣的:(SpringCloud)