consul 数据持久化_一起学习Nacos的数据持久化
程序员DD
读完需要
6分钟
速读仅需2分钟
前情回顾:
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
Spring Cloud Alibaba基础教程:支持的几种服务消费方式
Spring Cloud Alibaba基础教程:使用Nacos作为配置中心
Nacos配置的多环境管理
Nacos配置的多文件加载与共享配置怎么玩?
通过之前几篇关于Nacos的博文,对于Nacos分别作为服务注册中心以及配置中心时,与Spring Cloud体系结合的基础使用方法已经介绍完毕了。下面我们再用几篇博文从生产部署的角度,介绍Nacos的相关内容。本文我们将具体说说Nacos的数据存储以及生产配置的推荐。
1
数据持久化
在之前的教程中,我们对于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工具就可以看到数据已经写入到数据库中了。下一篇,我们将继续
2
深入思考
关于Nacos数据的持久化实现,与其他的中间件相比,在实现上并没有采用分布式算法来解决一致性问题,而是采用了比较常规的集中化存储来实现。由于采用单一数据源的方式,直接解决了分布式一致性问题,所以从学习成本的角度上来说,Nacos的实现原理会更容易被理解和接受。但是,从部署的负责度和硬件投入成本上来说,与etcd、consul、zookeeper这些通过算法方式解决一致性问题的中间件相比,就显得不足了。
同时,在引入MySQL的存储时,由于多了一个中间件的存在,整个Nacos系统的整体可用性一定是会所有下降的。所以为了弥补可用性的下降,在生产上MySQL的高可用部署也是必须的,成本再次提高。不论如何提高,可用性都难以达到100%,所以这种方式,不论如何提升存储的可用性,理论上都会对Nacos集群的自身可用性造成微小的下降。
以上思考主要从理论上,粗略讨论的,并没有经过详细的成本评估与可用性计算。所以,对于实际应用场景下,可能这些成本的增加和可用性的降低并没有那么多大的影响。同时,Spring Cloud Alibaba下使用的各开源组件都有对应的商业产品,在没有足够运维人力的团队下,使用对应的商业产品可能从各方面都会更加划算。
3
参考资料
Nacos官方文档
4
代码示例
本文介绍内容的客户端代码,示例读者可以通过查看下面仓库中的alibaba-nacos-config-client
项目:
Github:https://github.com/dyc87112/SpringCloud-Learning/
Gitee:https://gitee.com/didispace/SpringCloud-Learning/
如果您对这些感兴趣,欢迎star、follow、收藏、转发给予支持!
5
以下专题教程也许您会有兴趣
Spring Boot基础教程
【新版】Spring Cloud从入门到精通
推荐: Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
上一篇:JDBC ResultSet指南
关注公众号
点击原文
consul 数据持久化_一起学习Nacos的数据持久化相关推荐
- gan 总结 数据增强_深度学习中的数据增强(下)
言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 编辑 | 言有三 今天带来深度学习中的数据增强方法的下篇.我们将从以下几个方向入手.1,介绍一下什么是无监督的数据增强方法.2,简单 ...
- 快速数据库框架_快速学习新的数据科学概念的框架
快速数据库框架 重点 (Top highlight) 数据科学 (Data Science) Success in data science and software engineering depe ...
- 深度学习数据更换背景_开始学习数据科学的最佳方法是了解其背景
深度学习数据更换背景 数据科学教育 (DATA SCIENCE EDUCATION) 目录 (Table of Contents) The Importance of Context Knowledg ...
- 深度学习数据自动编码器_如何学习数据科学编码
深度学习数据自动编码器 意见 (Opinion) When I first wanted to learn programming, I coded along to a 4 hour long Yo ...
- 机器学习数据范例_深度学习的未来可以分解为这三种学习范例
机器学习数据范例 Deep learning is a vast field, centered around an algorithm whose shape is determined by mi ...
- keras时间序列数据预测_使用Keras的时间序列数据中的异常检测
keras时间序列数据预测 Anomaly Detection in time series data provides e-commerce companies, finances the insi ...
- 基于plotly数据可视化_如何使用Plotly进行数据可视化
基于plotly数据可视化 The amount of data in the world is growing every second. From sending a text to clicki ...
- 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多
数据多重共线性 Multicollinearity is likely far down on a mental list of things to check for, if it is on a ...
- 什么事数据科学_如果您想进入数据科学,则必须知道的7件事
什么事数据科学 No way. No freaking way to enter data science any time soon-That is exactly what I thought a ...
最新文章
- 自动驾驶中的车道线跟踪技术
- Linux信号列表(sigint sigtstp
- (非原)如何让.net开发的Winform程序快速释放内存
- 台式电脑如何截屏_买台式电脑如何避免成为被宰羔羊(一)
- 一个老程序员对数据库的一点纠结
- 权限管理系统之软件注册模块
- asp.net 生成图形验证码(字母和数字混合)
- emu8086打印等腰三角形
- 系统封装 如何加载PE到Easyboot进行合盘
- 【一】机器学习在网络空间安全研究中的应用
- html中实现雪花飞舞,经典散文里雪花飞舞
- 访问一个网页的全过程详解
- 2021年 遥感图像目标检测SOTA模型及排行榜
- CAD的DXF解析中LWPOLYLINE多线段凸度的相关概念和弧度转换
- DirectShow SDK笔记【关于DirectShow(2)】
- Spark 学习入门教程
- 怎么把图片分散对齐PHP,Word技巧系列封面如何快速对齐
- 华为2288 v5服务器安装centos7.9教程
- Excel如何给数字拼接加双引号或者加单引号加逗号
- 产品经理如何来优化CSDN手机短信验证的功能
热门文章
- Ubuntu无法使用快捷键ctrl + alt + T打开命令行终端或唤醒终端窗口的解决办法
- 《Essential C++》笔记之传指针(pass by pointer)分析
- html转义 在线,HTML转义工具 [Javascript版]
- hashmap 允许key重复吗_HashTable和HashMap的区别详解
- java操作oracle数据_Java连接Oracle数据库操作
- java shell排序_八大排序算法——希尔(shell)排序
- java+map申明_Java中两种HashMap申明方式区别?
- html语言1002html语言,HTML基础和标签介绍
- php rpoplpush,Redis Rpoplpush 命令
- git rebase branch内部调整 调整commit顺序