- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式系统之数据分片
分布式系统 (尤其是分布式存储系统)需要解决的两个最主要的问题,即数据分片和数
据冗余,下面这个图片(来源)形象生动的解释了其概念和区别:
其中数据即A、B属于数据分片,原始数据被拆分成两个正交子集分布在两个节点上。
而数据集 C 属于数据冗余,同一份完整的数据在两个节点都有存储。当然,在实际的分布
式系统中,数据分片和数据冗余一般都是共存的。
本文主要讨论数据分片的三个问题:
(1)如何做数据分片,即如何将数据映射到节点
(2)数据分片的特征值,即按照数据中的哪一个属性(字段)来分片
(3)数据分片的元数据的管理,如何保证元数据服务器的高性能、高可用,如果是一
组服务器,如何保证强一致性。
所谓分布式系统,就是利用多个独立的计算机来解决单个节点(计算机)无法处理的
存储、计算问题,这是非常典型的分而治之的思想。每个节点只负责原问题(即整个系统
需要完成的任务)的一个子集,那么原问题如何拆分到多个节点?在分布式存储系统中,任
务的拆分即数据分片。
何为数据分片(segment,fragment, shard, partition),就是按照一定的规则,将
数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上 。注意,
这里提到,数据分片需要按照一定的规则,不同的分布式应用有不同的规则,但都遵循同样
的原则:按照最主要、最频繁使用的访问方式来分片。
三种数据分片方式
首先介绍三种分片方式:hash 方式,一致性hash(consistent hash),按照数据范围(range
based)。对于任何方式,都需要思考以下几个问题:
1.具体如何划分原始数据集?
2.当原问题的规模变大的时候,能否通过增加节点来动态适应?
3.当某个节点故障的时候,能否将该节点上的任务均衡的分摊到其他节点?
4.对于可修改的数据(比如数据库数据),如果某节点数据量变大,能否以及如何将部
分数据迁移到其他负载较小的节点,及达到动态均衡的效果?
5.元数据的管理(即数据与物理节点的对应关系)规模?元数据更新的频率以及复杂
度?
为了后面分析不同的数据分片方式,假设有三个物理节点,编号为N0, N1, N2;有
以下几条记录:
R0: {id: 95, name: aa, tag:older}
R1: {id: 302, name: bb,}
R2: {id: 759, name: aa,}
R3: {id: 607, name: dd, age: 18}
R4: {id: 904, name: ff,}
R5: {id: 246, name: gg,}
R6: {id: 148, name: ff,}
R7: {id: 533, name: kk,}
has 方式:
哈希表(散列表)是最为常见的数据结构,根据记录(或者对象)的关键值将记录映
射到表中的一个槽(slot ),便于快速访问。绝大多数编程语言都有对 has 表的支持,如
python 中的dict, C++ 中的map,Java 中的Hashtable,Lua 中的table 等等。在哈希表中,
最为简单的散列函数是 mod N (N 为表的大小)。即首先将关键值计算出hash 值(这里是
一个整型),通过对N 取余,余数即在表中的位置。
数据分片的hash 方式也是这个思想,即按照数据的某一特征(key)来计算哈希值,并
将哈希值与系统中的节点建立映射关系,从而将哈希值不同的数据分布到不同的节点上。
我们选择id 作为数据分片的key,那么各个节点负责的数据如下:
由此可以看到,按照has 方式做数据分片,映射关系非常简单;需要管理的元数据也
非常之少,只需要记录节点的数目以及has 方式就行了。
但hash 方式的缺点也非常明显:当加入或者删除一个节点的时候,大量的数据需要移
动。比如在这里增加一个节点N3,因此has 方式变为了mod 4,数据的迁移如下:
在这种方式下,是不满足单调性(Monotonicity)的:如果已经有一些内容通过哈希分
派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内
容可以被映射
您可能关注的文档
最近下载
- 劳动清单(课件)五年级劳动教育通用版.pptx VIP
- 下一站江湖代码.xlsx VIP
- 检治具的检测报告.xls VIP
- 2025-2026部编人教版小学语文3三年级上册(全册)教案【新教材】.doc
- 小学四年级劳动教育课件(劳动清单)PPT.pptx VIP
- 金蝶云星辰·点三电商OMS集成方案9.3.pptx VIP
- [防城港]2024年广西防城港市公安局招聘辅警57人笔试上岸历年典型考题与考点剖析附带答案详解.docx VIP
- 汽车运输危险货物规则(JT617).pdf VIP
- 整体道口大修施工组织设计解析.doc
- 14.4 旅游安全管理制度(政策与法律法规 第6版).pptx-原创力文档.pptx VIP
文档评论(0)