架构师·2018 年 4 月刊
InfoQ
InfoQ 编辑部
8324 人已学习
限活动获得
架构师·2018 年 4 月刊
15
15
1.0x
00:00/00:00
登录|注册

伯克利推出世界最快的KVS数据库Anna:秒杀Redis和Cassandra

题外话:RISE 实验室的前身是赫赫有名的伯克利 AMP 实验室,该实验室曾开发出了一大批大获成功的分布式技术,这些技术对高性能计算产生了深远的影响,包括 Spark、Mesos、Tachyon 等。如今,原 AMP 实验室博士生,同时也是 Spark 和 Mesos 核心作者之一的 Matei 已经转身去了斯坦福,并于去年年底推出了以普及机器学习实践为目的的开源项目 DAWN(详见 AI 前线报道 ),而 RISE 实验室也在没多久后推出了志在取代 Spark 的新型分布式执行框架 Ray(详见 AI 前线报道)。
过去几年,RISE 实验室把研究重点放在如何设计一个无需协调的分布式系统上。他们提出了 CALM 基础理论( http://db.cs.berkeley.edu/papers/sigrec10-declimperative.pdf ),设计出了新编程语言 Bloom( http://bloom-lang.net/ ),开发出了跨平台程序分析框架 Blazes( https://arxiv.org/pdf/1309.3324.pdf ),发布了事务协议 HATs( http://www.vldb.org/pvldb/vol8/p185-bailis.pdf )。但在推出 Anna 之前,他们还未就这些理论、语言、框架或协议在多核环境下或云环境中能够提供怎样的性能有过任何测试或评估。
而 Anna 的推出正好印证了他们之前的研究成果。Anna 的论文显示,在单个 AWS 实例上,Anna 的速度是 Redis 的 10 倍。而在一个标准的交互式基准测试中,也以 10 倍的速度打败了 Cassandra。为了获得更多的比较结果,他们还拿 Anna 与其他主流的键值系统进行了性能对比:比 Masstree 快 700 倍,比英特尔的“无锁”TBB 哈希表快 800 倍。当然,Anna 并没有提供类似其他键值系统那样的线性一致性。不过,Anna 使用了本地缓存存放私有状态,仍然提供了极佳的无协调一致性,比“hogwild”风格的 C++ 哈希表要快上 126 倍。而且一旦到了云端,Anna 更是独领风骚,其他的系统无法真正提供线性伸缩,但 Anna 却可以。
Anna 的性能和伸缩性主要归功于它的完全无协调机制,节点工作进程有 90% 的工作负载是在处理请求,而其他大部分系统(如 Masstree 和英特尔的 TBB)只有不到 10% 的时间在处理请求,它们其余的 90% 时间花在了等待协调上。不仅如此,其他系统因为使用了共享内存,还会出现处理器缓存击穿问题。
Anna 不仅速度快,在一致性方面也达到了很高的水准。多年前,他们发布的事务协议 HATs 就已表明,无协调的分布式一致性和事务隔离性存在很大的提升空间,包括级联一致性和读提交事务级别。Anna 将 Bloom 的单格子组合设计模式移植到了 C++ 中,是第一个实现了上述所有级别一致性的系统。当然,也是因为设计上的简洁,才能达到如此快的速度。
RISE 的研究员们在设计 Anna 的过程中学到了很多,它们已经远远超出了一个键值数据库的范畴,可以被应用在任何一个分布式系统上。他们正基于 Anna 开发一个新的扩展系统,叫作 Bedrock。Bedrock 运行在云端,提供了无需人工干预、低成本的键值存储方案,而且是开源的。

Anna 架构简析

图 1:Anna 架构
上图是 Anna 单节点的架构图。Anna 服务器由一系列独立的线程组成,每个线程运行无协调的 actor。每个线程对应一个 CPU 核心,线程数量不超过 CPU 的总核数。客户端代理负责将远程请求分发给 actor,每个 actor 都有一个私有的哈希表,这些哈希表存放在共享内存中。线程间的变更通过内存广播进行交换,而服务器间的变更则通过 protobuf 进行交换。
这种线程和 CPU 核心一对一的模型避免了上下文切换开销。actor 之间不共享键值状态,通过一致性哈希对键空间进行分区,并使用多主复制机制在 actor 之间复制数据分区,而且复制系数是可配置的。actor 基于时间戳将键的更新通知给其他 actor 副本,每个 actor 有自己的私有状态,这个状态保存在一个叫作“格子”的数据结构中,确保在消息发生延迟、重排或重复时仍然能够保证一致性。

Anna 性能评测

下面就 Anna 的无协调 actor 模型在多核 CPU 上的并行能力、多服务器伸缩能力进行评测,并将它与其他流行的键值数据库进行对比。

无协调 actor 模型的伸缩性

在无协调 actor 模型中,每个 actor 对应一个线程,对任何一个共享状态都有自己的一份私有拷贝,并通过异步广播将更新通知给其他 actor。在多核服务器上,这种模型比传统的共享内存模型的性能要高出一个数量级。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

伯克利大学的RISE实验室推出了全新的KVS数据库Anna,以惊人的速度秒杀了Redis和Cassandra。Anna采用无协调的分布式系统设计,在单个AWS实例上比Redis快10倍,在交互式基准测试中也以10倍速度击败了Cassandra。此外,Anna还与其他主流键值系统进行了性能对比,比Masstree快700倍,比英特尔的TBB哈希表快800倍。Anna的性能和伸缩性得益于完全无协调的机制,使得节点工作进程有90%的工作负载用于处理请求,远高于其他系统的10%。Anna还提供了极佳的无协调一致性,比C++哈希表要快上126倍。Anna的架构采用了无协调的actor模型,避免了上下文切换开销,同时通过一致性哈希对键空间进行分区,并使用多主复制机制在actor之间复制数据分区。总体而言,Anna的推出证实了RISE实验室之前的研究成果,展现了其在分布式系统设计领域的领先地位。通过对比实验,RISE研究员证实了Anna在多核环境下的伸缩性,以及与Redis和Cassandra的性能优势。在高并发情况下,Anna通过复制热键的方式在性能方面吊打Redis集群,而在低并发情况下,Anna可以与Redis集群达到相似的性能。此外,与Cassandra相比,Anna在每个节点使用4个线程时就可以打败Cassandra,当把所有的线程都用上时,Anna比Cassandra的性能高出10倍以上。这些结果表明Anna在性能和伸缩性方面的优势,为分布式系统设计领域带来了新的突破。

登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 龍狻猊
    什么时候才可以应用呢?
    2018-10-12
  • 空白宇宙
    不错
    2018-06-27
  • 施挺
    学习了
    2018-06-08
收起评论
大纲
固定大纲
Anna 架构简析
Anna 性能评测
无协调 actor 模型的伸缩性
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部