分布式系统架构设计之分布式数据存储的扩展方式、主从复制以及分布式一致性

a7e61a75377e47f8b183379776849f2b.jpeg

三、水平扩展和垂直扩展

在分布式系统中,数据存储的扩展是为了适应业务的增长和提高系统的性能。分为水平扩展和垂直扩展两种方式,这两种方式在架构设计和应用场景上有着不同的优势和局限性。

水平扩展

水平扩展是通过增加节点或服务器的数量来扩大整个系统的容量和性能。在数据存储领域,水平扩展通常表现为将数据分不到多个节点或副本上,每个节点负责存储一部分数据,先来看看水平扩展的一些关键特性:

  1. 数据分片:将数据按照某种规则分成多个片段,每个片段分配给不同的节点。这样可以降低单个节点的负载,提高系统整体的读写性能。
  2. 分布式存储系统:采用分布式数据库或存储系统,使得数据可以水平分布在不同的节点上,提高了系统的可扩展性。
  3. 负载均衡:通过负载均衡算法确保每个节点的负载均衡相对均衡,避免单一节点成为瓶颈。
  4. 弹性伸缩:可根据业务需求动态添加或移除节点,实现系统的弹性伸缩。

使用水平扩展之后,我们可以:

  • 提高系统的横向扩展性,适应大规模数据和高并发访问
  • 易于实现和操作,可以通过添加节点来线性扩展性能

但是以下挑战在使用水平扩展的时候需要关注:

  • 一些复杂业务场景难以进行水平分割,导致某些节点负载过重,比如具有强烈一致性需求的场景
  • 数据一致性和事务处理相对复杂度很高

垂直扩展

垂直扩展是通过提升单个节点或服务器的性能来提高整个系统的容量和性能。在数据存储方面,垂直扩展通常表现为增加节点的硬件资源,例如更大的内存、更强大的 CPU、更快的存储设备等。看看水平扩展的一些关键特性:

  1. 单节点资源增加:通过升级节点的硬件配置,增加处理能力、内容容量和存储速度。
  2. 数据库垂直分区:将不同的数据或表分布到不同的节点上,使每个节点专注于处理特定类型的数据。
  3. 缓存和索引优化:通过更高效的缓存机制和索引设计来提高单节点的读取性能。
  4. 数据库垂直划分:将数据库按照业务功能垂直划分,每个数据库负责不同的业务模块。

使用垂直扩展的优势:

  1. 针对一些单一业务模块压力较大的场景,提高了单节点的性能
  2. 相对简单,不涉及数据的分片和迁移

但是:

  1. 成本较高,硬件升级和维护可能导致较大的投入
  2. 不易应对业务的爆炸性增长,存在一定的性能瓶颈

在实际应用场景中,水平扩展和垂直扩展经常是组合使用,根据具体的业务场景和需求来综合考虑,选择何种扩展方式,需要架构师根据系统的特点、业务需求、性能要求和预算等多个方面来进行全面评估。

四、主从复制和分布式一致性

主从复制

主从复制是一种数据复制模型,其中一个数据节点的变更操作会被异步地复制到其他节点中,一般只主节点的变更操作到从节点上。这种模型通常用于提高系统的可用性、读取性能以及数据备份场景。

主从复制一般包括以下步骤:

  1. 主节点写入:所有应用的写入操作先发生在主节点上,对主节点的库表进行写入。
  2. 异步复制:主节点写入数据之后,将变更操作记录成日志,并将这些日志异步地传播到从节点,比如 MySQL 的 binlog。
  3. 从节点应用:从节点接收到日志推送后,将主节点的变更操作应用用本地数据,使得从节点的数据与主节点数据保持一致。

使用主动复制,可以:

  1. 提高读取性能:从节点可以专门处理读取请求,分担主节点的读取压力,提高整体读取性能,这也就是平时说的读写分离的实现模式
  2. 容灾备份:从节点在主节点发生故障时,可以转变成为主节点,提供容灾备份能力,保障系统在故障场景下的可用性
  3. 数据分发:从节点还可以设计成位于不同的地理位置,实现数据在多个地点的分发,一般异地多活和国际化场景多采用此种模式

但采用主从复制之后,也存在以下挑战:

  1. 数据延迟:由于异步复制的特性,从节点的数据可能存在一定的延迟,不过使用云原生技术时,有云原生产品来保障,该挑战基本上可以避免解决
  2. 写入压力:所有写入操作都在主节点,可能会造成主节点的写入压力过大,所以对于主节点的运维精力要投入更多

分布式一致性

分布式一致性是指在分布式系统中,各个节点对共享状态的变更达成一致的过程。保持一致性是分布式系统中的核心挑战,因为各个节点质检的通信可能存在延迟、故障、网络分区等问题。

CAP 原理

前面章节部分已经详细解释了 CAP 原理,这里不再赘述,知识点再次提醒:

  1. 一致性:所有节点看到的数据是一致的
  2. 可用性:每个非故障节点都能读写
  3. 分区容忍性:系统在遇到网络分区的情况下依旧可以保持一致性和可用性

一致性类型

  1. 强一致性:所有节点在同一时间看到的数据状态是相同的
  2. 弱一致性:允许节点在不同时间看到不同的数据状态,但最终会一致
  3. 最终一致性:最终所有节点都会达到一致状态,但是在中间阶段可能存在不一致

分布式协议

  1. 两阶段提交(2PC):保证事务的一致性,但可能存在阻塞和单点故障
  2. 三阶段提交(3PC):解决了 2PC 的一些问题,但依旧存在不足
  3. Paxos 和 Raft:分布式共识协议,用于解决分布式一致性问题

挑战

  1. 性能开销:一致性协议会带来额外的通信和计算开销
  2. 网络分区:可能导致节点之间无法达成一致,需要在一致性和可用性之间做出权衡

 

在分布式一致性中还有一个特别经典的内容,那就是分布式事务,这里不对分布式事务进行介绍,后面会有专门的章节来详细讲解分布式事务。

3e54fc6bfac9433da4eef327442048b7.jpeg

 

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

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

相关文章

【NLP论文】03 基于 jiagu 的情感分析

本篇是NLP论文系列的最后一篇,主要介绍如何计算情感分析结果,并将其融入到XX评价体系和物流关键词词库,之前我已经写了两篇关于情感分析的文章,分别是 SnowNLP 和 Cemotion 技术,最终我才用了 jiagu 来写我的论文&…

【MyBatis】操作数据库——入门

文章目录 为什么要学习MyBatis什么是MyBatisMyBatis 入门创建带有MyBatis框架的SpringBoot项目数据准备在配置文件中配置数据库相关信息实现持久层代码单元测试 为什么要学习MyBatis 前面我们肯定多多少少学过 sql 语言,sql 语言是一种操作数据库的一类语言&#x…

域名转移:将腾讯云转移至阿里云

当时注册域名时,腾讯域云相对便宜,但目前阿里云在业界更加成熟,因此将自己申请的域名由阿里云转移至阿里云,并记录转移过程。 一、域名转出 进入腾讯云,登陆后选择控制台,选择我的资源–域名注册–全部域名…

HarmonyOS4.0系统性深入开发11通过message事件刷新卡片内容

通过message事件刷新卡片内容 在卡片页面中可以通过postCardAction接口触发message事件拉起FormExtensionAbility,然后由FormExtensionAbility刷新卡片内容,下面是这种刷新方式的简单示例。 在卡片页面通过注册Button的onClick点击事件回调,…

按行依次处理数据的文件操作(C语言版)

按行依次处理数据的文件操作(C语言版) 这段代码的目的是处理多个文件,为每个文件创建一个新文件,将以 ‘r’ 开头的行添加 “./” 前缀,并将修改后的内容写入新文件。在main函数中,通过调用process函数,逐个处理了一系…

计算机网络——应用层与网络安全(六)

前言: 前几章我们已经对TCP/IP协议的下四层已经有了一个简单的认识与了解,下面让我们对它的最顶层,应用层进行一个简单的学习与认识,由于计算机网络多样的连接形式、不均匀的终端分布,以及网络的开放性和互联性等特征&…

使用ASP.NET MiniAPI 调试未匹配请求路径

本文将介绍如何在使用ASP.NET MiniAPI时调试未匹配到的请求路径。我们将详细讨论使用MapFallback方法、中间件等工具来解决此类问题。 1. 引言 ASP.NET MiniAPI是一个轻量级的Web API框架,它可以让我们快速地构建和部署RESTful服务。然而,在开发过程中如…

学习华为企业无线网络,有这篇文章就够了。

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! •以有线电缆或光纤作为传输介质的有线局域网应用广泛,但有线传输介质的铺设成本高,位置固定,移动性差。随着人们对…

固定本机在局域网中的 IP 地址

说明:以将 IP 地址固定为 192.168.1.107 为例 Step1、打开终端,输入以下命令查看网络信息: ipconfig -all 记住子网掩码、默认网关、DNS 服务器(首选和备用)信息,后面要用: Step2、进入 “控制…

分割数组的最大差值 - 华为OD统一考试

分割数组的最大差值 - 华为OD统一考试 OD统一考试 分值: 100分 题解: Java / Python / C 题目描述 给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组)&#xf…

小波理论与应用:理解小波

1 简介 来自源的信号通常处于时域。例如正弦信号、生物医学信号等。任何时域信号都可以使用数学变换进行处理或变换到频域(谱域)。傅里叶变换是一种流行或著名的变换,它将时域信号转换为频域信号,而不失一般性。 在绘制时域信号…

web:[BJDCTF2020]The mystery of ip(ssti模板注入、Smarty 模板引擎)

题目 进入页面显示如下 点击flag页面得到ip 点击hint页面 在hint.php的源代码页面中发现 由题目可以知道要从ip入手 这里尝试抓包加上X-Forwarded-For请求头修改为127.0.0.1 因为直接将127.0.0.1输出到页面,可以猜测是ssti模板注入 可以继续验证 这里发现输入什么…