分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)》的相关信息,《分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)》的详细说明。
笨笨网美国主机,w ww.2 b p .n e t

1、 Amazon Dynamo

Dynamo 以很简单的键值方式存储数据,不支持复杂的查询。Dynamo 中存储的是数据值的原始形式,不解析数据的具体内容。Dynamo 主要用于 Amazon 的购物车及 S3 云存储服务。在实现过程中解决了如下问题:

问题

采用的技术

数据分布

改进的哈希算法

复制协议

复制写协议(NRW参数可调)

数据冲突的解决

向量时钟

临时故障处理

数据回传机制

永久故障处理

Merkle哈希树

成员资格及错误检测

基于Gossip的成员资格和错误检测协议

Dynamo 采用一致性哈希将数据分布到多个存储节点中,概括来说:给系统中的每个节点分配一个随机 token ,这些 token 构成一个哈希环。执行数据存放操作时,先计算主键的哈希值,然后存放到顺时针方向的第一个大于或者等于该哈希值的 token 所在的节点。一致性哈希的有点在于节点加入 / 删除只会影响到在哈希环相邻的节点,而对其他节点没影响。

A 、 Dynamo 架构

考虑到节点的异构性,不同节点的处理能力差别很大, Dynamo 使用了改进的一致性哈希算法:每个物理节点根据其性能的差异分配多个 token ,每个 token 对应一个虚拟节点,每个虚拟节点的处理能力基本相当,并随机分布在哈希空间中。存储时,数据按照哈希值落到某个虚拟节点负责的区域,然后被存储到该虚拟节点所对应的物理节点。

如下图,某 Dynamo 集群中原有 3 个节点,每个节点分配 3 个 token 。存放数据时,首先计算主键的哈希值,并根据哈希值将数据存放到对应 token 所在的节点。假设增加节点 4 ,节点 token 分配情况发生变化,这就实现了自动负载均衡。

分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)


为了找到数据所属的节点,要求每个节点维护一定的集群信息用于定位。Dynamo 系统中每个节点维护整个集群的信息,客户端也缓存整个集群的信息,因此,绝大部分请求能够一次定位到目标节点。

B 、 Gossip 协议

由于机器或者人为的因素,系统中的节点成员加入或者删除经常发生,为了保证每个节点缓存的都是 Dynamo 集群中最新的成员信息,所有节点每隔固定时间(比如 1s )通过 Gossip 协议的方式从其他节点中任意选择一个与之通信的节点。如果连接成功,双方交换各自保存的集群信息。

Gossip 协议用于 P2P 系统中自治的节点协调对整个集群的认识,比如集群的节点状态、负载情况。我们先看看两个节点 A 和 B 是如何交换对世界的认识的。

( 1 ) A 告诉 B 其管理的所有节点的版本(包括 Down 状态和 Up 状态的节点);

( 2 ) B 告诉 A 哪些版本它比较旧了,哪些版本它有最新的,然后把最新的那些节点发给 A (处于 Down 状态的节点由于版本没有发生更新所以不会被关注);

( 3 ) A 将 B 中比较旧的节点发送给 B ,同时将 B 发送来的最新节点信息做本地更新;

( 4 ) B 收到 A 发来的最新节点信息后,对本地缓存的比较旧的节点做更新。

由于种子节点的存在,新节点加入可以做得比较简单。新节点加入时首先与种子节点交换集群信息,从而对集群有了认识。DHT ( Distributed Hash Table ,也称为一致性哈希表)环中原有的其他节点也会定期和种子节点交换集群信息,从而发现新节点的加入。

集群不断变化,可能随时有机器下线,因此,每个节点还需要定期通过 Gossip 协议同其他节点交换集群信息。如果发现某个节点很长时间状态都没有更新,比如距离上次更新的时间间隔超过一定的阈值,则认为该节点已经下线了。

2、 Taobao Tiar

Tair 是一个分布式的 key/value 系统。

Tair 有四种引擎:mdb, rdb, kdb 和 ldb 。分别基于四种开源的 key/value 数据库:memcached, Redis, Kyoto Cabinet 和 leveldb 。Tair 可以让你更方便地使用这些 KV 数据库。比如 Redis 没有提供 sharding 操作,如果有多个 Redis Server ,你需要自己写代码实现 sharding , Tair 帮你封装了这些。

Tair 有以下优点:

( 1 )统一的 API 。无论底层使用何种引擎,上层的 API 是一样的。

( 2 ) Tair 将集群操作封装起来,解放了开发者。淘宝内部在使用 Tair 时,一般都是双机房双集群容错,利用 invalid server 保证两个集群间的一致性,这些对于开发者都是透明的。

笨笨网美国主机,w ww.2 b p .n e t
提醒:《分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)》最后刷新时间 2025-03-21 11:13:48,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《分布式存储框架有哪些(实用性好的分布式存储框架推荐)(13/15)》该内容的真实性请自行鉴别。