弃用TokyoCabinet、libevent、增加proxy层:豆瓣beansdb卷土重来

豆瓣beansdb可以算是豆瓣存储上的一大利器,是国内NoSQL中的杰出代表。历经一年的线上磨练,新发布的0.5.2版本(上一个版本是0.3.0)在网络层和数据存储引擎上都做了很大改变:

1.存储引擎的改变

众所周知的是beansdb之前的版本是构建在TokyoCabinet存储引擎之上,舍弃了其原生的TokyoTyrant网络层而实现的。而在这一年的使用中TokyoCabinet时出现的一致性,可靠性和大数据量下的性能问题,使得beansdb的作者放弃了TokyoCabinet,重新实现了一种基于日志结构的存储引擎 Bitcask。

2.网络层的改变

之前的beansdb是采用memcached的网络层代码,而我们都知道memcached用的是libevent做网络事件驱动,每个连接分配一个独立线程的多线程机制。而memcached这种生于内存存储的网络模式,在持久化存储的beansdb上会导致一些问题,于是新一版的beansdb采用了直接基于epoll/kqueue 实现 leader/follower 模式的线程池。(实际上是直接移植Redis里网络事件驱动方式,这也是Redis高性能的原因之一)

3.增加了proxy

本次版本增加了一个由go语言写的proxy层,主要功能负责数据路由和负载均衡,这样在数据需求客户端一层就不用再关心具体结点的部署情况。数据存储节点的增删只需要由proxy的配置项来设置即可。其思想应该和memcached proxy moxi 一样。

参考资料:http://www.douban.com/note/122507891/

beansdb:http://code.google.com/p/beansdb/

PS:感谢@xklxkl同学的分享~

anyShare一切看了好文章不转的行为,都是耍流氓!
          

无觅相关文章插件,快速提升流量

  1. 还没细看~不过从他网络层上用Redis的事件驱动加Memcached的处理逻辑这点来看,直接搬来用的可能性比较大~

  2. Pingback: 优雅的Bitcask | web开发

  3. Pingback: 一个流浪者 » 优雅的Bitcask

  4. Pingback: 优雅的Bitcask – 码农们的博客

  5. Pingback: 优雅的Bitcask | Dev.Conris - Team Knowledge Sharing