DHT与分布式一致性

在分布式系统中,必须得想办法保持各个节点的状态和数据是一致的,否则就会乱了套。在传统的数据库系统,是通过事务(其实就是交易的意思)机制来实现的,具体实现方法是加锁,包括数据集、记录或字段的列级锁,而且是由主节点统一控制的。在同一台机器里,加锁、写入数据、解锁的时间是比较短的,能够尽可能减少数据的并发访问冲突。

但是,在分布式系统里,由于网络延迟的存在,锁的维护会比较麻烦,而且容易出现持有锁的节点失效的问题,如果锁的节点出问题,那么所有的锁也就失效了,从而导致数据混乱。因此,需要建立新的分布式锁的机制。

分布式锁包括两个方面,即数据一致性和交易(事务,即修改)过程一致性。

第一个方面是如何能够确认数据是一致的,一般通过DHT(分布式哈希表)来实现,只要任何一项数据更新,都会触发整个DHT发生改变,通过MT(Merkle Tree)数据结构来实现,可以高效地检测到数据的变化。

第二个方面是如果数据改变了,如何将数据进行同步,从而动态地保持一致,由于网络延迟导致中间会出现不一致的时间段,所以也包括如何对不一致的状态进行处理。分布式的数据同步包括采用的通讯传输协议、数据握手协议、事务表示和锁的状态的考虑。

在局域网上,etcdzookeepper 是使用较为广泛的分布式锁支持软件,为分布式系统提供集群状态的一致性维护和加锁机制。区块链软件主要实现了广域分布式的数据存储和交易过程的一致性,可以运行在广域网上。

比特币(Bitcoin)、以太坊(Ethereum)、分布式账本(HyperLedger)是目前较为广泛的广域分布式区块链架构平台。其中,提供了基础数据的存储、数据的加密交易及其一致性机制。但是,目前还存在很多缺陷:存储并非完全分布式而是复制模式,会有数据量过大后同步慢、存储困难的情况;数据交易(更改记录)是通过工作量(计算量)证明等机制实现,并不能完全防止恶意更改的可能;数据出现过不一致的情况,不得不通过硬分叉的方式来解决;一致性协议性能不高,尚难以满足大规模高频交易的需要。

IPFS是采用DHT存储机制和BT/P2P传输机制的网络协议,可以在全球范围内统一管理一个超大的文件系统。每一个文件的改变都会触发整个DHT的变化和重构,从而对文件提供唯一的永久标识。利用该标识,可以在任何一个节点上缓存文件,供任何一个节点访问,从而提供全球级别的分布式存储体系。不过,由于目前应用规模尚小,这一巨大的DHT的变更是否真能满足全球规模级别的文档统一存储还有待时间的检验;由于是无中心的架构,对于信息查找的支持还是一个难点;目前的标识所用的HashCode不便于搜索(需要点对点分享),IPNS域名的支持性能比较低;缺少版本管理的机制和工具。

由上面可以看出,分布式一致性目前虽然取得了很大的进步,但仍然存在巨大的挑战。而且,数据的一致性并不是最终目的,让使用者获得一致的信息和对信息进行管理、利用才是目的,分布式机制还有很长的路要走。

转载于:https://my.oschina.net/u/2306127/blog/2046123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值