文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于NodeJS从零构建线上自动化打包工作流

2024-11-30 11:23

关注

什么是数据复制?

数据复制是指将数据复制到一个或多个数据容器以确保可用性的过程。复制的数据通常存储在不同的数据库实例中,即使一个实例发生故障,我们也可以从其他实例获取数据。

一种流行数据复制的实现架构是主从架构。

推荐博主开源的 H5 商城项目waynboot-mall,这是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城前台和服务端接口。实现了商城所需的首页展示、商品分类、商品详情、商品 sku、分词搜索、购物车、结算下单、支付宝/微信支付、收单评论以及完善的后台管理等一系列功能。技术上基于最新得 Springboot3.0、jdk17,整合了 MySql、Redis、RabbitMQ、ElasticSearch 等常用中间件。分模块设计、简洁易维护,欢迎大家点个 star、关注博主。

github 地址:https://github.com/wayn111/waynboot-mall

主从架构

为了理解这个架构,我们举一个例子。

你能注意到这里有什么问题吗?

我们的数据库存在单点故障。如果它崩溃了,我们的整个系统就会停止工作。

为了避免这种单点故障,我们可以使用另一个数据库(最好是不同的数据库实例)来存储原始数据的副本(一般我们成为从库)。现在如果原始数据库(主库)崩溃,我们可以将请求转到从库。

但是我们如何保持从库与主库同步呢?这有两种方法。

同步复制数据

异步复制数据

这里我们的一般定义是收到写请求的主库数据库是 master)。从库被称为 slaves。

主从架构

如上图我们的主站也就是 Server2 维护事务日志。他会更新从站中(Server1)的数据,它发送命令,然后从站以相同的顺序执行这些命令。

如果服务器向从站发送写入请求会发生什么?

有两种方法可以处理这种情况

主主架构的问题

网络故障可能会导致主主架构中的数据不一致。

让我们用一个例子来理解这一点,假设我们有两个数据库实例 A 和 B。

现在用户发送以下请求,

由于存在通信故障,A 和 B 无法同步,它们具有不同的数据值,因此不一致。

这个问题被称为裂脑问题。

解决裂脑问题

解决裂脑问题

我们可以通过添加第三个节点(数据库实例)来解决裂脑问题。

这里我们假设一个节点崩溃以及其他两个节点之间的路由器崩溃的可能性极小。

让我们考虑三个数据库实例 A、B 和 C。

这称为分布式共识。多个节点就特定值达成一致。在这种情况下,A、B 和 C 在最终状态上达成一致。

最后

感谢您的阅读,希望本文能对你理解分布式架构中的数据复制有所帮助。

来源:waynblog内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯