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

前情回顾:

  • 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》
  • 《Spring Cloud Alibaba基础教程:支持的几种服务消费方式》
  • 《Spring Cloud Alibaba基础教程:使用Nacos作为配置中心》
  • 《Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解》
  • 《Spring Cloud Alibaba基础教程:Nacos配置的多环境管理》
  • 《Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置》

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

数据持久化

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

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

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

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

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

第三步:修改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工具就可以看到数据已经写入到数据库中了。下一篇,我们将继续

深入思考

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

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

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

参考资料

  • Nacos官方文档

代码示例

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

  • Github:https://github.com/dyc87112/SpringCloud-Learning/
  • Gitee:https://gitee.com/didispace/SpringCloud-Learning/

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

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

  • Spring Boot基础教程
  • 【新版】Spring Cloud从入门到精通

money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点我跳过的科研天坑,进坑就是半年白干

文 | 白鹡鸰 and 小轶 祝大家新年快乐!去年白鹡鸰花了两个月,刷了八千篇Arxiv,结果发现很多论文存在一些比较“基本”的常见问题:研究问题和问题假设存在严重的漏洞,或者缺少充分的相关工作调研,导致所谓的…

LeetCode 553. 最优除法(数学)

1. 题目 给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果&#…

论文浅尝 - ACL2022 | 子图检索增强的知识图谱问答方法

转载公众号 | 学术头条作者:张静(中国人民大学),张晓康(中国人民大学),于济凡(清华大学),唐建(魁北克人工智能研究所),唐杰…

Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置

前情回顾: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程:支持的几种服务消费方式》《Spring Cloud Alibaba基础教程:使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程&a…

2202年了,“小样本”还值得卷吗?

文 | Severus从一个应用实验引发的思考。大家好,我是Severus,一个在某厂做中文自然语言理解的老程序员。这个主题,源自于我之前在公司内做的一次技术分享。承接上一篇文章(格局打开,带你解锁 prompt 的花式用法&#x…

LeetCode 1023. 驼峰式匹配(暴力匹配)

1. 题目 如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。) 给定待查询列表 queries,和模式串 pattern&#x…

图谱实战 | 谈元鹏:电力领域知识图谱技术进展与应用实践

转载公众号 | DataFunTalk 分享嘉宾:谈元鹏 中国电力科学研究院编辑整理:monk 国家管网出品平台:DataFunTalk导读:知识图谱相关技术在开发和应用过程中,通常需要跟行业或者业务领域进行高度融合。但是在行业知识图谱构…

Spring Cloud Alibaba基础教程:Nacos配置的多环境管理

前情回顾: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程:支持的几种服务消费方式》《Spring Cloud Alibaba基础教程:使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程&a…

LeetCode 423. 从英文中重建数字(找规律)

1. 题目 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。 输入字符串的长度小于…

朱松纯:AI 需由“心”驱动,实现“心”与“理”的动态平衡

朱松纯北京通用人工智能研究院院长北京大学讲席教授清华大学基础科学讲席教授引言1.1 人生轨道:跃迁与升华人生一世所追求的,用世俗的语言来讲,无非三个层次:第一就是活着, 这对应于马斯洛七层需求理论(hi…

Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解

前情回顾: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)》《Spring Cloud Alibaba基础教程:使…

LeetCode 881. 救生艇(贪心,双指针)

1. 题目 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 示例 1: 输入:peopl…

【报名开启】CCKS 2022教科书示意图问答任务

赛题背景示意图是一种高度抽象的知识表达载体,常由矩形、圆形等几何形状和箭头、折线等逻辑符号组成,广泛被应用于教科书、百科、知识博客等教育场景。在上述场景中,学习者常通过视觉问答的形式来判断对知识点的掌握情况,即&#…

以4%参数量比肩GPT-3!Deepmind 发布检索型 LM,或将成为 LM 发展新趋势!?

文 | ZenMoore编 | 小轶GPT3 一声枪响,给 NLP 带来了大模型风潮。这么长时间过来,无论是中文还是英文,模型越做越大。当然,这确实是符合逻辑的,因为如果以人脑为向导的话,那么多神经元,不得不需…

Spring Cloud Alibaba基础教程:使用Nacos作为配置中心

通过本教程的前两篇: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)》 我们已经学会了,如何利…

LeetCode 1020. 飞地的数量(图的BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给出一个二维数组 A,每个单元格为 0(代表海)或 1(代表陆地)。 移动是指在陆地上从一个地方走到另一个地方(朝四个方向之一)或离开网格的边界。 …

论文浅尝 | ISEEQ: 利用动态元信息检索和知识图谱的资讯搜索式问题生成器

笔记整理:侯哲衡,东南大学硕士,研究方向为知识图谱问答、自然语言生成。动机对话资讯搜索是在智能问答中一个新兴研究领域。对话资讯搜索旨在根据通过用户查询自动询问资讯搜索式问题(information-seeking questions,I…

浅谈点击信号对搜索的影响

文 | bytecoder源 | 知乎背景过去一周,我们探讨了搜索系统最核心的指标以及如何通过实验的方式来判断策略的好坏。但是影响一个实验的好坏除去策略本身的影响之外,还会受到一些反直觉的因素的影响;之前在做搜索,尤其是搜索系统成熟…

Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)

通过《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》一文的学习,我们已经学会如何使用Nacos来实现服务的注册与发现,同时也介绍如何通过LoadBalancerClient接口来获取某个服务的具体实例,并根据实例信息来发起服务…

CCKS 2022 | 如何通过“说一句话”精准获取数据?恒生发布金融NL2SQL评测任务

某投资者登录券商理财APP,想要查找最近两年上市的公司,并按照最新的市值进行排序。然而他很难直接找到结果,需要经过层层筛选才能大致找到相关结果。有没有更简便的方式来查找数据?如果说一句话或者打一小段文字后,就能…