超高性能键值存储数据库 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:世界最快的超级伸缩的KVS, 秒杀Redis

伯克利 这个大学在计算机学术界、工业界的地位举足轻重,其中的AMP实验室曾开发出了一大批大获成功、 对计算机行业产生深远影响的分布式计算技术,包括 Spark、Mesos、Tachyon 等。作为AMP的...

2018/08/16 15:36
36
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
38
0
DO YOU WANNA BUILD A SNOW MAN ?

Do you want to build a snowman? Come on, let’s go and play! I never see you anymore Come out the door It’s like you’ve gone away We used to be best buddies And now we’re no...

2018/05/12 10:14
7
0
java collection implode

With Java 8 you can do this without any third party library. If you want to join a Collection of Strings you can use the new String.join() method: List<String> list = Arrays.asL...

2019/02/22 16:17
10
0
C# 朗读文本工具(可将朗读后的声音保存到文件)

C# 朗读文本工具(可将朗读后的声音保存到文件)

2014/08/12 16:37
1K
0
【原创】打造属于前端的Uri解析器

今天和大家一起讨论一下如何打造一个属于前端的url参数解析器。如果你是一个Web开发工程师,如果你了解过后端开发语言,譬如:PHP,Java等,那么你对下面的代码应该不会陌生: $kw = $_GET[...

2015/02/12 12:26
357
0
python解析ini、conf、cfg文件

1.使用python自带的ConfigParser模块: #test.cfg文件内容: [sec_a] a_key1 = 20 a_key2 = 10 [sec_b] b_key1 = 121 b_key2 = b_value2 b_key3 = $r b_key4 = 127.0.0.1 读配置文件 # -* -...

2016/06/22 10:10
1.8K
0
对输入的字符串测试其是否为回文

如果一个字符串去掉除字母和数字之外的所有字符后,正读和逆读都一样,则这个字符串就是一个回文。例如:“did Anna say as Anna did?”就是回文。 编程:要求对输入的字符串测试其是否为回文...

2018/03/24 22:48
9
0
Codeforces Round #581 (Div. 2) C. Anna, Svyatoslav and Maps (Floyd 算法,最短路)

C. Anna, Svyatoslav and Maps time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output The main characters have been omitted to b...

2019/08/21 01:57
23
0
Python ConfigParser的使用 【转载】

1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -options(section) 得到该section的所有option -items(section) 得到该sec...

2012/07/13 16:40
104
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部