【系统架构】系统架构设计之数据同步策略
文章目录
- 一、介绍
- 1.1、分布式系统中的数据同步定义
- 1.2、为何数据同步如此关键
- 1.3、数据同步策略简介
- 二、为什么需要数据同步
- 2.1、提高系统可用性
- 2.2、备份与灾难恢复
- 2.3、提高性能
- 2.4、考虑地理位置(如使用CDN)
- 三、同步备份
- 3.1、定义和概述
- 3.2、工作原理
- 3.3、优点和缺点
- 四、异步备份
- 4.1、定义和概述
- 4.2、工作原理
- 4.3、优缺点
- 五、半同步备份
- 5.1、定义和概述
- 5.2、工作原理
- 5.3、优缺点
- 六、选择合适的备份策略
- 6.1、需要考虑的因素
- 6.2、策略比较
- 七、结论
- 7.1、关键点总结
- 7.2、对系统设计的影响
一、介绍
1.1、分布式系统中的数据同步定义
数据同步犹如合唱团里的B角歌手。设想你正在观看音乐会,突然,主唱失声。如果有B角歌手,那么音乐会仍能继续。在计算机领域,数据同步就是对数据进行备份。若系统的某个部分出现问题,其它部分还能继续运行。这就像一个保险,确保信息始终可获取,不论出现何种意外。
1.2、为何数据同步如此关键
试想一下,你手机中那张最珍爱的照片。再想象,如果它永远消失了。那种感觉很难受,对吧?这就是我们常常在多处保存宝贵记忆的原因。同样,各种企业和组织也要确保他们的关键数据得到保护。数据同步犹如多处备份你的珍贵照片,它确保数据始终安全并且随时可用。不论是顾客订单、医疗记录还是学生成绩,数据同步保证重要信息不会遗失。
1.3、数据同步策略简介
保存照片有多种方式,比如在手机、电脑或者云上。在计算机系统里,数据同步也有各种方法,这些被称为数据同步策略。有的方法速度快但可能有丢失数据的风险,有的则较慢但更为稳妥。选择合适的策略就如同为特定任务挑选合适的工具,根据实际需求和所看重的因素来决定。正确地选择数据同步策略对于系统设计至关重要。本文将探讨三大主要策略:同步、异步和半同步备份,详细介绍它们的操作原理、优势以及使用场景。
二、为什么需要数据同步
2.1、提高系统可用性
试想你正在看你最爱的电视剧,突然屏幕一片空白。心情会很差,对吗?在计算机世界里,数据的可用性就像是这部电视剧,你希望它始终在那里。如果系统的一部分出现问题,数据同步确保其他部分能够继续工作。这就像电视上有多个备选频道播放同一部剧。一个频道出了问题,你可以换另一个。
2.2、备份与灾难恢复
你可以把数据同步想象成是一艘船上的救生艇。当出现重大事故时,它可以挽救局势。在IT领域,各种意外都可能发生,如停电、硬件损坏或自然灾害。数据同步好比时刻待命的救生艇。当事故发生,可以依赖数据的备份来快速恢复服务。
2.3、提高性能
你是否曾在商店排队等待很久?如果有更多的服务窗口或收银台,整体效率会更高,对吧?数据同步的原理也是如此。通过在不同地方存储数据的备份,可以更快地响应用户请求,类似于增开服务窗口,使得服务变得更加高效。
2.4、考虑地理位置(如使用CDN)
如果你在上海,但要从深圳的服务器那里请求数据,响应自然会慢一些。但如果数据在上海的服务器上有备份,那么访问就迅速得多。数据同步使数据更接近用户的物理位置,减少了访问延迟,这在为全球用户提供服务时非常重要。这好比在每个城市都有分店,确保每位顾客都能得到快速的服务。
三、同步备份
3.1、定义和概述
同步备份就好比一队消防员共同作战。当发生火灾时,他们会同时出动,确保一切都在控制之下才撤离。在计算机术语中,同步备份意味着当某个地方的数据更新后,其他所有地方的数据也会立即得到更新。系统的所有部分协同工作,确保每一个数据从节点都是一致的。这是保持所有数据完美同步的方式。
3.2、工作原理
主节点操作:想象一下一艘船的船长正在发号施令。队长(或主节点)负责,当需要做某事时,他们确保每个人都知道。在同步备份中,主节点就像船长一样,指挥着数据如何更新。它是启动这一过程并确保一切顺利进行的人。
从节点操作:船上的船员就像同步备份中的从节点。他们听从船长的命令,确保一切顺利。当主节点要求更新数据时,从节点会立即执行。他们一起工作,确保数据的每个从节点都完全相同。
确认过程:一旦船员遵循了船长的命令,他们就会向船长报告,让船长知道工作已经完成。在同步备份中,从节点会向主节点发送确认信息。就像竖起大拇指,表示“一切都好!” 这可确保一切同步并且过程完整。
3.3、优点和缺点
容错:同步备份就像汽车里有一个备胎。如果出现问题,您可以随时进行备份。由于所有数据从节点都是相同的,因此如果其中一部分发生故障,其他部分可以接管。这是确保系统始终可靠并为任何情况做好准备的一种方法。
潜在的阻塞问题:但是,如果你每次开应急灯都要去检查每一个电池是否工作正常,这无疑会造成不必要的延迟。在同步备份中,为了确保每处数据都完全同步,有时会等待所有节点的确认,这可能会造成一些延迟。这种方式更安全,但可能牺牲了一些效率。
四、异步备份
4.1、定义和概述
异步备份有点像我们通过快递发送一个包裹。我们把包裹交给快递公司,但并不能实时地知道包裹是否已经到达接收方。在数据库领域,异步备份是指在主数据库中更新数据后,这些更新会被发送到从数据库,但主数据库不会立即等待从数据库的确认。这样做可以提高数据处理的速度,但同时也增加了数据不一致的风险。
4.2、工作原理
对客户端的即时响应:在异步备份中,当系统收到你的请求后,它会立即告诉你"已接收",然后让你继续你的其他操作。它不会让你等待所有操作都完成,这完全是为了提高速度和方便性。
对从节点的异步传播:当你放下包裹后,由快递公司来负责送达。你相信它最终会到达目的地。在异步备份中,配送信息更新会发送到系统的其他部分(也就是从节点),这些从节点会在合适的时候进行同步。这就像发送配送信息给大家,你发送后相信每个人都会收到信息。
4.3、优缺点
最大化吞吐量:异步备份就像快速运行的流水线。它确保所有操作都能快速进行,不需要停下来检查每一个小细节。这对于需要同时处理大量请求的系统来说是非常理想方案的。目标是尽可能快地完成任务,即使这意味着要冒一些风险。
数据丢失的可能性:但如果你的快递在配送过程中丢失了怎么办?在异步备份中,存在一些更新可能会丢失或延迟的风险。因此,异步备份虽然快速,但在某些极端情况下,可能会出现数据不一致的情况。
五、半同步备份
5.1、定义和概述
半同步备份就像接力赛跑。一个跑者将接力棒传递给下一个跑者,并且两者都要确保接力棒安全地交接过去后,第一个跑者才会停下。在计算机领域中,半同步备份结合了我们之前提到的两种方法。它确保部分更新在继续进行之前是安全的,但不是全部更新。这是一种平衡的方式,就像走钢丝一样。它旨在兼顾两种方法的优势。
5.2、工作原理
同步备份到一部分从节点:想象一下,你把一个秘密告诉了几个亲密的朋友,并请他们转告给其他人。在你离开之前,你要确保他们完全明白了。在半同步备份中,一部分从节点会立即得到更新,并且系统会确认它们是正确的。这就像有一个安全网,但不是一个完整的安全网。
异步备份到其他从节点:告诉亲密的朋友秘密后,你相信他们会告诉其他人。你不会检查他们是否真的这样做了。在半同步备份中,剩余的更新会在不进行二次检查的情况下发送出去。这就像播撒种子,相信雨水会浇灌它们。你尽了自己的责任,然后放手。
5.3、优缺点
确保数据持久性:半同步备份就像用一些强大的支柱和一些较弱的支柱建造一座桥。强大的支柱确保桥不会倒塌,而较弱的支柱则增加了一些灵活性。这种方法确保了最重要的部分是安全的,同时不会减慢整个过程。这是一种谨慎的方式。
对吞吐量的边界影响:但如果你想让桥非常坚固,或者非常灵活呢?半同步备份可能对这两者都不完美。它就像是一场谈判中的妥协。每个人都能得到一些东西,但没有人能得到所有东西。它可能会稍微减慢速度,或者可能不如你希望的那么安全。这是一种平衡的方法,这意味着需要做一些权衡。
六、选择合适的备份策略
6.1、需要考虑的因素
选择正确的备份策略就像为特殊场合选择合适的服装一样。您必须考虑天气、事件类型以及您感到舒适的环境。在计算机世界中,您需要考虑数据的重要性、访问数据的速度以及安全性等因素你需要。这是为了找到适合您具体情况的产品。
- 数据的关键性:某些数据极为重要,你希望它们始终安全,就如同家中的珍贵物品。而有些数据的重要性较低,比如临时文件。确定数据的重要性有助于你选择合适的备份策略。
- 一致性需求:在数据库中,保持数据一致性意味着确保所有数据的从节点都是最新和准确的。高一致性需求可能会指引你选择同步备份,而较低的一致性需求可能更适合异步备份。
- 系统吞吐量:吞吐量反映了系统在单位时间内能处理的数据量。高吞吐量需求可能会让你倾向于选择异步备份,因为它通常更快。
6.2、策略比较
同步备份、异步备份和半同步备份都有其优点和缺点。
- 同步备份就像一双坚固的徒步鞋,安全但有时可能较慢。
- 异步备份就像跑鞋,速度快但可能不那么保护性。
- 半同步备份就像休闲运动鞋,两者兼备。
理解这些差异有助于你为旅程选择合适的鞋子。
七、结论
7.1、关键点总结
选择合适的备份策略就像规划一次成功的旅行。你需要知道你的目的地,途中需要的东西,以及如何处理意外的突发情况。同步备份、异步备份和半同步备份,每种方式都有其独特的优点和缺点,就像不同类型的交通工具。理解它们有助于你为旅程选择合适的方式。
7.2、对系统设计的影响
你在备份策略上的选择会产生重大影响,就像为建筑选择正确的基础一样。如果选择得当,一切都会稳固并且运行顺畅。如果选择错误,你可能在未来遇到问题。这是一个需要深思熟虑和充分了解的决策。这关乎建设一个持久且能很好地发挥其功能的系统。
相关文章:

【系统架构】系统架构设计之数据同步策略
文章目录 一、介绍1.1、分布式系统中的数据同步定义1.2、为何数据同步如此关键1.3、数据同步策略简介 二、为什么需要数据同步2.1、提高系统可用性2.2、备份与灾难恢复2.3、提高性能2.4、考虑地理位置(如使用CDN) 三、同步备份3.1、定义和概述3.2、工作原…...
Linux内核学习笔记——ACPI命名空间
所有定义块都加载到单个命名空间中。命名空间 是由名称和路径标识的对象层次结构。 以下命名约定适用于 ACPI 中的对象名称 命名空间: 所有名称的长度均为 32 位。 名称的第一个字节必须是“A”-“Z”、“_”之一。 名称的每个剩余字节必须是“A”-“Z”、“0”之…...
使用 OpenCV Python 实现自动图像注释工具的详细步骤--附完整源码
注释是深度学习项目中最关键的部分。它是模型学习效果的决定因素。然而,这是非常乏味且耗时的。一种解决方案是使用自动图像注释工具,这大大缩短了时间。 本文是pyOpenAnnotate系列的一部分,其中包括以下内容。 1、使用 OpenCV 进行图像注释的路线图。 2、pyOpenAnnotate工…...

RunnerGo中WebSocket、Dubbo、TCP/IP三种协议接口测试详解
大家好,RunnerGo作为一款一站式测试平台不断为用户提供更好的使用体验,最近得知RunnerGo新增对,WebSocket、Dubbo、TCP/IP,三种协议API的测试支持,本篇文章跟大家分享一下使用方法。 WebSocket协议 WebSocket 是一种…...

【Java 动态数据统计图】动态数据统计思路案例(动态,排序,数组)一(112)
需求:: 有一个List<Map<String.Object>>,存储了某年某月的数据, 数据是根据用户查询条件进行显示的;所以查询的数据是动态的;需按月份统计每个年月数据出现的次数,并且按照月份排序࿱…...
kafka踩坑
问题:项目中用到kafka作为消息中间件,因为现在是开发阶段,试了一次没问题之后就没在管,今天又要测试kafka相关功能,发现消息发送者能够正常发送消息,但是消费者怎么也就收不到数据。然后经过各种百度进行了…...

让你专注于工作的电脑桌面日程提醒软件
在现代职场中,上班族们常常在繁忙的工作中会遇到各种各样的事情干扰。比如,当我们专注于完成重要的报告时,却又有同事来询问问题;在准备去会议事项时,手机却突然收到了一系列的短信和通知。这些干扰不仅浪费了我们的时…...

62页智慧产业园区数字化综合解决方案PPT
导读:原文《62页智慧产业园区数字化综合解决方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以关注评论转发本文&#…...
苹果开发者账号注册方法简明指南
注册苹果开发者账号的方法 在2020年以前,注册苹果开发者账号后,就可以生成证书。 但2020年后,因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号,所以需要缴费才能创建ios证书了。 所以新政策出来后,…...

SQL-每日一题【1321. 餐馆营业额变化增长】
题目 表: Customer 你是餐馆的老板,现在你想分析一下可能的营业额变化增长(每天至少有一位顾客)。 计算以 7 天(某日期 该日期前的 6 天)为一个时间段的顾客消费平均值。average_amount 要 保留两位小数。 结果按 …...

PyCharm PyQt5 开发环境搭建
环境 python:3.6.x PyCharm:PyCharm 2019.3.5 (Community Edition) 安装PyQT5 pip install PyQt5 -i https://pypi.douban.com/simplepip install PyQt5-tools -i https://pypi.douban.com/simple配置PyCharm PyQtUIC Program :D:\Pytho…...

2023-08-17 Untiy进阶 C#知识补充8——C#中的日期与时间
文章目录 一、名词概念二、DateTime三、TimeSpan 一、名词概念 (一)格里高利历 格里高利历一般指公元,即公历纪年法。目前我们所说公历,就是格里高利历。 比如 2022 年就是从公元元年开始算起的两千二十二年。 …...

SPSS--如何使用分层分析以及分层分析案例分享
分层分析:将资料按某个或某些需要控制的变量的不同分类进行分层,然后再估计暴露因子与某结局变量之间关系的一种资料分析方法。 分层分析的最重要的用途是评估和控制混杂因子所致的混杂偏倚。通过按混杂因子分层,可使每层内的两个比较组在所控…...

时序数据库influxdb笔记
官方资料 https://docs.influxdata.com/influxdb/v2.7/install/?tLinux https://www.influxdata.com/influxdb/ 安装 1、linux平台下 1)下载 2)解压 3)添加账户( adduser influx) 4)设置目录权限 5…...

8月18日上课内容 Haproxy搭建Web群集
本章结构 课程大纲 Haproxy调度算法 常见的web集群调度器 目前常见的Web集群调度器分为软件和硬件软件 通常使用开源的LVS、Haproxy、Nginx 硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等 Haproxy应用分析 LVS在企业应用中…...

【高阶数据结构】红黑树详解
文章目录 前言1. 红黑树的概念及性质1.1 红黑树的概念1.2 红黑树的性质1.3 已经学了AVL树,为啥还要学红黑树 2. 红黑树结构的定义3. 插入(仅仅是插入过程)4. 插入结点之后根据情况进行相应调整4.1 cur为红,p为红,g为黑…...

树莓牌4B安装Centos8
准备工作 镜像:https://people.centos.org/pgreco/CentOS-Userland-8-stream-aarch64-RaspberryPI-Minimal-4/ 烧制工具:https://www.raspberrypi.com/software/ 初始化 将上述工具烧制好的SD卡插入树莓派,通电。通过网线将树莓派与电脑连…...

SQL Monitor Crack,PostgreSQL监控的传入复制图表
SQL Monitor Crack,PostgreSQL监控的传入复制图表 现在,您可以在从Estate页面导出的Microsoft Excel报告的摘要标题中看到UTC偏移量。 添加了PostgreSQL监控的传入复制图表。 Microsoft PowerShell API现在支持将使用New-SqlMonitorWindowsHost和New-SqlMonitorin…...
软件测试技术之单元测试—工程师 Style 的测试方法(3)
如何设计单元测试? 单元测试设计方法 单元测试用例,和普通测试用例的设计,没有太多不同,常见的就是等价类划分、边界值分析等。而测试用例的设计其实也是开发者应该掌握的基本技能。 等价类划分 把所有输入划分为若干分类&…...

Ubuntu中安装OpenSSL
文章目录 一、前期准备1.1 压缩包下载1.2 gcc, make等的安装二、安装配置 一、前期准备 1.1 压缩包下载 在安装openssl之前,我们需要下载对应的压缩包 https://www.openssl.org/source/openssl-3.0.1.tar.gz 此压缩包可以选择win上下载后解压再复制到本地虚拟机中…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...