豆瓣beansdb卷土重来
时间:2010-12-24 来源:cnblogs
豆瓣的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 模式的线程池。
3. 增加了proxy层
本次版本增加了一个由go语言写的proxy层,主要功能负责数据路由和负载均衡,这样在数据需求客户端一层就不用再关心具体结点的部署情况。数据存储节点的增删只需要由proxy的配置项来设置即可。其思想应该和memcached proxy moxi 一样。
参考资料:http://www.douban.com/note/122507891/
beansdb:http://code.google.com/p/beansdb/