弃用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据说看到好文章不转的人,服务器容易宕机! | |
| |


bitcask是他们自己实现的? 还是由Basho实现的那个?
还没细看~不过从他网络层上用Redis的事件驱动加Memcached的处理逻辑这点来看,直接搬来用的可能性比较大~
Pingback: 优雅的Bitcask | web开发
Pingback: 一个流浪者 » 优雅的Bitcask