分布式存储

先有分布式还是先有大数据呢?这是个值得思考的问题。因为大数据所以才会数据分布式存储,因为单机无法存储,所以需要分布式存储嘛。但是,另一方面,我们的数据产生天然就是分布式的,只不过我们一般的思路是集中存储,便于管理。

分布式存储的一般思路,就是将大数据切片,按照某种策略存储在多个节点之间,这种策略要确保数据的分布是均匀的,以保证节点负载的均匀;同时数据的分布也要有一定的稳定性,不能因为节点的变动产生较大规模的数据迁移现象。同时数据分散后要具备可靠性,采用冗余机制,保证数据不会异常丢失。最后,数据的分布式存储,需要保证数据获取的方便性,以及拆开之后还能聚合起来。

总之,分布式存储需要解决的问题:数据分布的稳定性,数据节点的异构性,数据的可用性和可靠性。

  • 数据分布的稳定性:当节点故障时,不会存在大规模的数据迁移,这意味着我们需要良好的数据分布算法。
  • 数据节点的异构性:数据节点性能不一,我们的数据分布算法应该考虑数据分布节点的偏向;
  • 数据的可用性和可靠性:意味着我们数据的存储应该具备一定的容错能力,比如副本机制、持久化机制。

1,数据分区机制

数据分布的稳定,依赖于我们的数据分区策略,几种常见的数据分区算法:

  • 基于范围的分区:比如按照年龄范围,地区范围;
  • 基于列表的分区:比如按照国家、省市分区;
  • 基于循环的分区:比如 mod 一个循环值;
  • 基于散列的分区:最常见最常用的分区,比如 hash;
  • 基于组合的分区:上述方式的组合。

基于散列的分区,是大型分布式系统中最为常见的分区策略,所以这里我们主要讨论该算法的几种实现形式:

1,普通哈希,比如按照数据的某一字段进行哈希,然后分区;但存在着节点变动,数据大范围迁移的 rehash 现象;

2,一致性哈希,即按照顺时针顺序将数据存储到 hash 环中,当节点变动时,只需迁移相邻节点的数据即可。有个细节就是,一致性 hash 做数据查询时需要在节点内维护一个索引表,以定位节点内部数据的实际存储位置。但是这种方式,会导致部分节点承担较多的数据存储任务,节点的数据负载较高。

3,带有限负载的一致性 hash,即每个节点有固定的存储上限,当达到上限时会继续顺时针遍历下一个节点,存储数据;但是这种方式也没有考虑到节点异构带来的存储性能差异;

4,带虚拟头节点的一致性 hash,虚拟节点时按照节点性能差异分配的虚拟节点,也即节点性能好的,虚拟节点数量就会更多,数据就会尽可能地存储在该节点内。性能较为稳定。

2,数据复制机制

分布式场景下,如何实现数据复制的一致性?下面来看看几种数据复制策略:

同步复制:客户端在向主节点写入消息,然后主节点再向其它从节点同步完成,才会向客户端返回操作成功消息。这样的机制保证了数据的强一致性,但如果从节点较多,同步复制的时延较长,势必会影响可用性。在某些金融场合,交易场合适用。比如我们的 mysql 的主备集群方案,包括我们的 kafka 集群的副本的 ack 机制都是采用了类似的思想。

异步复制:客户端在向主节点写入消息,主节点立马返回操作成功的信息,然后再将数据异步复制到其他从节点。可以看到,这种机制保证了可用性,但牺牲了一致性,会出现客户端在主节点和从节点查询数据不一致的情况。该方案适用于对数据要求不高的情况,我们的 mysql 主备模式默认就是采用此方案。还有我们的 redis 集群,也是采用了这种方案保证了高性能。

半同步复制:即平衡了上面两种方式,兼顾了一致性和可用性。半同步复制包括两种,一种是收到一个从节点的响应即认为同步成功,一种是半数从节点响应后即认为成功。此种方案涉及到同步后数据不一致问题,即我们的数据同步因该以哪个节点为准的问题。一种思路是,以 leader 节点的数据为准,根据索引记录匹配,将从节点数据开始不一致的位置之后的数据,强行同步与 leader 一致。

我们的 mysql 集群方案,可以通过配置支持三种复制方式。

参考链接:

极客时间《分布式原理与算法解析》

【分布式理论】(二)分布式存储相关推荐

  1. 分布式理论 二阶段提交 2PC 3PC 端到端一致性 分布式事务

    一.临界知识对我们学习的巨大帮助 临界知识这个概念,是我上个月读<好好学习:个人知识管理精进指南>这本书学到的概念,真的有被启发到,现在觉得它对于我们深刻了解世界有着非常大的作用. 所谓临 ...

  2. 分布式理论(一) - CAP定理

    前言 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性)这三个基本需求,最 ...

  3. 分布式理论:CAP、BASE | 分布式存储与一致性哈希

    文章目录 分布式理论 CAP定理 BASE理论 分布式存储与一致性哈希 简单哈希 一致性哈希 虚拟节点 分布式理论 CAP定理 一致性(Consistency): 在分布式系统中的所有数据副本,在同一 ...

  4. 大话分布式理论之二——共识算法与一致性的区别

    [系列目录] 大话分布式理论之二--共识算法与一致性的区别 大话分布式理论之一--从单体到SOA再到微服务 文章目录 共识算法 拜占庭将军问题 分布式理论中的将军们 共识算法-Paxos/Raft等 ...

  5. 分布式理论(一)CAP 理论

    分布式理论(一) CAP理论 一.CAP理论前言 CAP原则又称为CAP理论,主要思想是在任何一个分布式系统中都无法同时满足CAP. C(Consistency):表示一致性,所有的节点同一时间看到的 ...

  6. 分布式理论和分布式一致性协议

    分布式理论 关键词 分布式,各副本中的数据是一致 强一致性/弱一致性(最终一致性) cap定理(P分区容错性:允许节点挂掉:对于分布式系统,是必须的) 互联网:AP (得能访问,偶尔没有一致性能接受) ...

  7. 分布式理论(五)—— 一致性算法 Paxos

    分布式理论(五)-- 一致性算法 Paxos 前言 Paxos 算法如同我们标题大图:世界上只有一种一致性算法,就是 Paxos.出自一位 google 大神之口. 同时,Paxos 也是出名的晦涩难 ...

  8. 分布式技术与实战第一课 分布式理论与一致性算法

    开篇词:搭建分布式知识体系,挑战高薪 Offer 你好,我是邴越,在一线互联网公司从事分布式开发工作多年,一直关注分布式理论和新技术的发展. 互联网发展到今天,用户数量越来越多,产生的数据规模也越来越 ...

  9. 分布式事务二 基础理论

    分布式事务二 基础理论 前言: 书接上文<分布式事务一 分布式事务基础概念>,我们了解到了分布式事务的基础概念.与本地事务不同的是,分布式系统之所以叫分布式,是因为提供服务的各个节点分布在 ...

  10. 分布式事务二——解决思路

    文章目录 一.分布式事务的思路 1.1 CAP定理 1.1.1 Partition tolerance 1.1.2 Consistency 1.1.3 Availability 1.1.4 Consi ...

最新文章

  1. Javascript进阶:匿名函数详解
  2. (收藏)Html相关网址
  3. Centos7 Minimal 安装后 初始化配置
  4. hdoj-2028-Lowest common multiple plus
  5. 浅谈ORB-SLAM3
  6. 【Kafka】使用confluent本地安装和使用kafka
  7. 已有数据表的Mysql字符编码修改
  8. win2003安装邮箱服务器,windows2003邮件服务器
  9. Docker 的出现
  10. (转)json+flexgrid+jbox组合运用页面刷新jsp
  11. SGU 320 The Influence of the Mafia(BFS)
  12. STM32相关手册使用记录
  13. 关于小学计算机论文题目,经典小学计算机课论文选题 小学计算机课论文题目怎样定...
  14. Excel常用电子表格公式大全1-1
  15. ngrinder启动项目时报错Error creating bean with name ‘emf‘ defined in org.ngrinder.infra.config.DatabaseConf
  16. 三国志战略版:Daniel_兵无常势分析
  17. 为什么黑客几乎不用鼠标?
  18. 吴军:Google 中日韩文搜索算法的主要设计者,因《浪潮之巅》享誉业界 | CNCC 2018...
  19. 不能编程、烧钱、没用?潘建伟直播回应“九章”量子计算争议
  20. 基于MATLAB的说话人识别系统

热门文章

  1. RC充电时间的计算--示例
  2. Android设计模式—代理模式★
  3. 部份AirPods Pro出现声音问题 Apple宣布召回计划
  4. [激光器原理与应用-3]:激光器的国外品牌
  5. DIY电脑硬件之显卡的选择
  6. 用老友记学习英语的方法
  7. MATLAB实现TCP/IP通信
  8. BSV 智能合约 2.0 (2)
  9. Linux下使用cfdisk工具格式化U盘/SD卡的方法
  10. Linux硬件信息查看命令