哈希表(hash table)是一种快速查找场景下常用的数据结构,本文对其主要问题及其高级应对方法进行有限的总结和讨论:

  1. 负载不够均衡,此时会有哈希冲突(collision)出现,导致哈希表性能下降

  2. 负载高时,若不进行空间扩展则性能下降,若进行空间扩展,扩展行为的(瞬间)代价通常较高

Anna 是 Berkeley 大学研究的一种 Key-Value 存储 [1]。其开创性的使用 lattice 的方式允许用户自定义冲突解决方式,进而可以自定义一致性级别,在特定场景下极大的提升系统性能。Anna 使用了 Actor 模型而非传统的共享内存模型构建系统,使得系统可以以几乎一致的方式处理单机/分布式场景下的通信和协调,并且充分发挥硬件提供的并发能力。论文中没有详细叙述实现这两者的具体细节,由于这两者的实现方式都有一定难度,期待接下来的研究能够披露出进一步的细节。

Raft 是一种分布式共识算法,用于解决在异步通信网络中存在节点失效且本地存储可靠的情况下多个分布式节点达成一致的问题。在已经提出 Paxos 算法用于解决这一问题的情况下继续提出 Raft 算法,主要是为了解决 Paxos 理解困难的问题。Paxos 算法更偏向于理论研究,对于实现的很多细节虽然略有提及,但是并没有进行深入的讲解和讨论,因此对于算法的实现和优化而言还有很多困难。

Paxos 是一种分布式共识算法,用于解决在异步通信网络中存在节点失效且本地存储可靠的情况下多个分布式节点达成一致的问题。文中的算法只解决了决议一条法案(decree)的情况。如果需要决议多条法案,可以将该算法执行多次,每次分别对应一条法案。可以想象,有可能存在一些步骤在多次决议时无需重复执行,因此在多次决议法案的情况下,该算法可以进一步优化,但没有在本文中进行具体展开。

如题所述,该论文讲述了一种构建高可用 Key-Value 存储的方案,高可用主要是针对于写请求,存储的环境是可信环境,存储的对象的大小一般不超过 1MB。实现方法类似于 Chord + MVRs(multi-valued registers),但是另有不少针对性能的优化。Dynamo 提供 observable causal consistency。根据 论文笔记:[PODC 2015] Limitations of Highly-Available Eventually-Consistent Data Stores,这已经是这一类系统所能提供的最高一致性了。[3]

阅读全文 »
0%