超高性能键值存储数据库 Anna

BSD
C/C++
Linux
2018-03-15
局长

Anna 是伯克利 RISE 实验室推出的键值存储数据库,也是一个具备惊人的存取速度、超强的伸缩性和优秀的一致性的 KVS。

Anna 的性能和伸缩性主要归功于它的完全无协调机制,节点工作进程有 90% 的工作负载是在处理请求,而其他大部分系统(如 Masstree 和英特尔的 TBB)只有不到 10% 的时间在处理请求,它们其余的 90% 时间花在了等待协调上。不仅如此,其他系统因为使用了共享内存,还会出现处理器缓存击穿问题。

Anna 不仅速度快,在一致性方面也达到了很高的水准。多年前,他们发布的事务协议 HATs 就已表明,无协调的分布式一致性和事务隔离性存在很大的提升空间,包括级联一致性和读提交事务级别。Anna 将 Bloom 的单格子组合设计模式移植到了 C++ 中,是第一个实现了上述所有级别一致性的系统。当然,也是因为设计上的简洁,才能达到如此快的速度。

Anna 架构

上图是 Anna 单节点的架构图。Anna 服务器由一系列独立的线程组成,每个线程运行无协调的 actor。每个线程对应一个 CPU 核心,线程数量不超过 CPU 的总核数。客户端代理负责将远程请求分发给 actor,每个 actor 都有一个私有的哈希表,这些哈希表存放在共享内存中。线程间的变更通过内存广播进行交换,而服务器间的变更则通过 protobuf 进行交换。

参考:https://mp.weixin.qq.com/s/3WmGpZkEuSz-ox_2CPCsqg  
论文原文:http://db.cs.berkeley.edu/jmh/papers/anna_ieee18.pdf

加载中

评论(12)

晕dows
晕dows
这种名字是搞笑么,和某个单词读音那么相近"anal",都不考虑外语读音的么?还是说故意的
冰迪
冰迪
作者说的不专业,性能测试有待完善.从报表看性能,Anna使用了32块CPU才达到80W处理量,然而Redis只需要10块CPU就稳定达到80W,再排除Redis其它因素,按Redis实际工作能力算6W/秒,大概14块CPU就能100%稳定提供80W(14*6)处理能力.假如使用32块CPU的话.Redis应该稳定在192W处理量.
7
76
Anna是c++版本的,其实c++版本的 Cassandra比java版的 也要快10倍。所以,Anna的性能应该和ScyllaDB差不多。所以呢,说是最快的分布KVS那也未必。另外最快的单服务器kvs是不是aerospike?反正性能这玩意看应用场景。
zmyer
zmyer
源码在哪里
阿毛的故事
跟redis比有哪有优缺点?
青萍之末
青萍之末
Chenggang Wu was the fearless leader and key developer on Anna; Jose Faleiro and I were involved in the design. Props to Chenggang! =============华人?
kiki1000
kiki1000
great!!!!
fwen0
fwen0
在哪儿呢
中国扛把子
中国扛把子
在哪里可以下载anna数据库
netkiller-
netkiller-
一直没有想明白 伯克利DB为什么卖给Oracle

暂无资讯

暂无问答

Anna

Anna 使用了一个核心对应一个线程的无共享线程架构,通过避免线程间的协调来实现闪电般的速度。Anna还使用晶格组合来实现多样的无协调一致性级别。第一个版本的Anna吊打现有的内存KV存储系统...

01/14 00:40
12
0
Lemon-sized luxury boxes

Anna continues to sort out the order of Imperial Lemons for Mr Lime. He gives her a call, this time to discuss business. He wants some luxury boxes to put the lemons in and Anna...

2018/09/10 00:15
9
0
The big day

Presentation time! It's a big day for Anna as she presents Tip Top Trading's new Imperial Lemon to Mr Lime at Citrus Ventures. This is her chance to make a big impression on her...

2018/09/03 07:47
9
0
EnglishAtWork

Anna's checking up on some orders today. As a result of some embarrassing mistakes in deliveries, Tip Top Trading's big boss in America has ordered a re-check of every order thi...

2018/08/26 23:55
16
0
strtok和strtok_r

原型:char *strtok(char *s, char *delim); 功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NUL...

2013/11/27 16:06
20
0
strtok()和strtok_r()

下面的说明摘自于最新的Linux内核2.6.29,说明了strtok()这个函数已经不再使用,由速度更快的strsep()代替 /* * linux/lib/string.c * * Copyright (C) 1991, 1992 Linus Torvalds */ /* ...

2013/01/30 14:51
217
0
[转载]Erlang语言与分布式编程引言

Erlang最初应用于电信领域,但是现在也远不限于此。Facebook(也许中国人不大熟悉)用它重写了超大型聊天系统,Amazon用它开发了SimpleDB云存储系统,Yahoo!用它开发了Deliciou2.0,类似的成...

2016/07/27 19:01
267
0
Erlang基本语法汇总

一、Erlang语法:变量、模式匹配 -------------------------------------- 1.elr命令:工具栏toolbar:start(). 2.%。。。注释 3.变量首字母大写,单一赋值 4.模式匹配 5.原子:hello, 'an at...

2015/06/11 09:55
938
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部