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

这篇具有很好参考价值的文章主要介绍了分布式系统架构设计之分布式数据存储的扩展方式、主从复制以及分布式一致性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

三、水平扩展和垂直扩展

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

水平扩展

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

  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. 网络分区:可能导致节点之间无法达成一致,需要在一致性和可用性之间做出权衡

 文章来源地址https://www.toymoban.com/news/detail-773075.html

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

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

 

到了这里,关于分布式系统架构设计之分布式数据存储的扩展方式、主从复制以及分布式一致性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入浅出 -- 系统架构之分布式多形态的存储型集群

    在上阶段,我们简单聊了下集群的基本知识,以及快速过了一下逻辑处理型集群的内容,下面重点来看看存储型集群,毕竟这块才是重头戏,集群的形态在其中有着多种多样的变化。 逻辑处理型的应用,部署集群架构是为了解决单点故障、获得更高的吞吐量,集群内各节点之

    2024年04月10日
    浏览(41)
  • 软考高级系统架构设计师系列论文九十一:论分布式数据库的设计与实现

    软考高级系统架构设计师系列之:分布式存储技术

    2024年02月10日
    浏览(36)
  • 分布式系统架构设计之分布式缓存技术选型

    随着互联网业务的快速发展,分布式系统已经成为了解决大规模并发请求、高可用性、可扩展性等问题的重要手段。在分布式系统中,缓存作为提高系统性能的关键技术,能够显著降低数据库负载、减少网络延迟、提高数据访问速度。当面对大量并发请求时,如果每次都直接

    2024年02月03日
    浏览(42)
  • 分布式数据存储建设方法论——从HDFS架构优化与实践分析

    作者:禅与计算机程序设计艺术 随着互联网、云计算、大数据等新一代信息技术的出现和普及,数据量的激增、数据安全性的需求以及数据的分布式储存需求日益成为各大公司和组织面临的难题。传统的单体架构模式已经无法应付如此复杂的业务场景,因此,分布式数据存储

    2024年02月11日
    浏览(40)
  • 【分布式】分布式存储架构

    说到分布式存储,我们先来看一下传统的存储是怎么个样子。 传统的存储也称为集中式存储, 从概念上可以看出来是具有集中性的,也就是整个存储是集中在一个系统中的,但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备,比如下图中的 EMC 存储就需

    2024年02月10日
    浏览(36)
  • 分布式、服务化的ERP系统架构设计

    ERP 之痛        曾几何时,我混迹于电商、珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP)。作为一个ERP系统,系统主要功能模块无非是订单管理、商品管理、生产采购、仓库管理、物流管理、财务管理等等。作为一个管理系统,大家的一般开发习惯就是使用

    2024年02月11日
    浏览(31)
  • zookeeper分布式协调系统的架构设计与源码剖析

    目录 001_我们一般到底用ZooKeeper来干什么事儿? 002_有哪些开源的分布式系统中使用了ZooKeeper? 003_为什么我们在分布式系统架构中需要使用ZooKeeper集群? 004_ZooKeeper为了满足分布式系统的需求要有哪些特点 005_为了满足分布式系统的需求,ZooKeeper的架构设计有哪些特点? 006_

    2024年02月03日
    浏览(31)
  • 【软件开发】大规模分布式系统的容错架构设计

    假设有一个数据库,数据库里有一张特别大的表,里面有几十亿,甚至上百亿的数据。更进一步说,假设这一张表的数据量多达几十个 TB,甚至上百个 TB,那么如果用 MySQL 之类的数据库,单台数据库服务器上的磁盘可能都不够放这一张表的数据! 假如你手头有一个超大的数

    2024年02月04日
    浏览(32)
  • Elasticsearch 分布式架构剖析及扩展性优化

            Elasticsearch 是一个实时的分布式搜索分析引擎,简称 ES。一个集群由多个节点组成,节点的角色可以根据用户的使用场景自由配置,集群可以以节点为单位自由扩缩容,数据以索引、分片的形式散列在各个节点上。本文介绍 ES 分布式架构基础原理,剖析分布式元数

    2024年01月21日
    浏览(25)
  • 分布式系统与人工智能高可用性架构设计与实现

    作者:禅与计算机程序设计艺术 随着人工智能、云计算、容器技术等新兴技术的不断涌现和深入应用,越来越多的企业和组织都将重点放在自身的AI系统开发及管理之上,面临分布式环境下的AI系统的高可用性和可靠性问题,如何构建并实施一个可用的分布式AI系统架构,成为

    2024年02月06日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包