作家
登录

大规模分布式存储-分布式剪枝系统

作者: 来源: 2017-10-27 12:23:38 阅读 我要评论

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!


在分布式键值体系中,半构造化数据被封装成由<key,value,timestamp>键值对构成的对象,个中key为独一标示符;value为属性值,可认为任何类型,如文字、图片,也可认为空;timestamp为时光戳,可以供给数据的多版本支撑。分布式键值体系以键值对存储,它的构造不固定,每一元组可以有不一样的字段,可根据须要增长键值对,大年夜而不局限于固定的构造,实用面更大年夜,可扩大性更好。

分布式键值体系支撑针对单个<key,value,timestamp>键值对的增、删、查、改操作,可以运行在PC办事器集群上,并实现集群按需扩大,大年夜而处理大年夜范围数据,并经由过程数捷报份保障容错性,避免了瓜分数据带来的复杂性和成本。

总体来说,分布式键值体系大年夜存储数据构造的角度看,分布式键值体系与传统的哈希表比较类似,不合的是,分布式键值体系支撑将数据分布到集群中的多个存储节点。分布式键值体系可以设备数据的备份数量,可以将一份数据的所有副本存储到不合的节点上,当有节点产生异常无法正常供给办事时,其余的节点会持续供给办事。

下面,我们来看看业界主流的分布式键值体系的架构模式。

Amazon Dynamo

Dynamo是AWS上最基本的分布式存储应用之一,也是AWS最早推出的云办事之一,它构建在AWS的S3基本之上,采取去中间节点化的P2P方法,采取这种模式的,还有Facebook推出的Cassandra。

1、数据分布

Dynamo应用了改进的一致性哈希算法:每个物理节点根据其机能的差别分派多个token,每个token对应一个“虚拟节点”。所有节点每隔固准时光(比如1s)经由过程Gossip协定的方法大年夜其他节点中随便率性选择一个与之通信的节点。如不雅连接成功,两边交换各自保存的集群信息。

Gossip协定用于P2P体系中自治的节点调和半数个集群的熟悉,比如集群的节点状况、负载情况。因为种子节点的存在,新节点参加可以做得比较简单:新节点参加时起首与种子节点交换集群信息,大年夜而懂得全部集群。

2、一致性与复制

一般来说,大年夜机械K+i宕机开端到被认定为永远掉效的时光不会太长,积聚的写操作也不会太多,可以应用Merkle树对机械的数据文件进行快速同步。Dynamo惹人向量时钟(Vector lock)的技巧手段来测验测验解决冲突,这个策略依附集群内节点之间的时钟同步算法,但不克不及完全包管精确性。Dynamo只包管最终一致性,如不雅多个节点之间的更新次序不一致,客户端可能攫取不到期望的结不雅。

3、容错

Tair存储引擎有一个抽象层,只要知足存储引擎须要的接口,就可以很便利地调换Tair底层的存储引擎。

核心计心境制就是:数据回传+Merkle树同步+攫取修复

图1 Dynamo 写入和攫取流程

Dynamo在数据读写中采取了一种称为弱quorum (Sloppy quorum)的机制,涉及三个参数W、R、N,见个中W代表一次成功的写操作至少须要写入的副本数,R代表一次成功读操作需由办事器返回给用户的最小副本数,N是每个数据存储的副本数。Dynamo请求R+W〉N,知足这个请求,包管用户攫取数据时,始终可以获得一个最新的数据版本。

针对临时故障,一旦某个节点出现问题,则将这个节点值传送给“同组”中的下一?正常节点,并在这个数据副本的元数据中记录掉效的节点地位,便于数据回传;然后,由这个节点上一个临时空间进行存储和处理数据,同时该节点还对掉效的节点进行监测,一旦掉效的节点从新可用,则将本身所保存的最新数据回传给它,然后删除本身开辟的临时空间数据。

针对永远性故障,Dynamo必须检査和保持数据的同步 ,Dynamo采取一种称为反熵协定的手段来包管数据的同步。为了削减数据同步检估中须要传输的数据量,加快检测速度,Dynamo应用了Merkle哈希树技巧,每个虚拟节点保存三颗Merkle树,即每个键值区间建立一个Merkle树。Dynamo中Merkle哈希树的叶子节点是存储每个数据分区内所稀有据对应的哈希值,父节点是其所有子节点的哈希值。

4、负载均衡

采取改进的一致性Hash+虚拟节点模式。

在传统的一致性哈希算法上,办事节点跟哈希环上的点是一一对应的。这里会存在一个问题,就是每一个节点的负载最后是不平均的,而我们也无法进行调剂。Dynamo经由过程一个办事节点可以有多个哈希环上的虚拟节点的办法,使得每一个办事节点的负载都是平均的。并且假如发清楚明了某一个节点的负载过高,少分派虚拟节点给它便可以降低该办事节点的负载,大年夜而实现了主动地负载均衡。

分布式文件体系存储目标以非构造化数据为主,但在实际应用中,存在大年夜量的构造化和半构造化的数据存储需求。分布式键值体系是一种有别于我们所熟悉的分布式数据库体系的,用于存储关系简单的半构造化数据的存储应用。

5、读写流程

因为采取了去中间化的模式,是以,须要采取较复杂的模式来控制并发,Dynamo应用Paxos协定结合Gossip来进行并发处理。具体处理模式如图1所示。

Dynamo采取去中间节点的P2P设计,增长了体系可扩大性,但同时带来了一致性问题,影响上层应用。一致性问题使得异常情况下的测试变得加倍艰苦,因为Dynamo只包管最根本的最终一致性,多客户端并发操作的时刻很难猜测操作结不雅,也很难猜测不一致的时光窗口,影响测试用例设计。

因为去中间化模式所导致的复杂性和不肯定性。今朝主流的分布式系同一般都带有中间节点,如许可以或许简化设计,并且中间节点只保护少量元数据,一般不会成为机能瓶颈。


  推荐阅读

  突破存储跨中心双活方案设计阶段难点之五:双中心间通讯不可控

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 链路质量包含光衰、颤抖和带康>>>详细阅读


本文标题:大规模分布式存储-分布式剪枝系统

地址:http://www.17bianji.com/lsqh/38278.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)