豆瓣的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 一样。
2
0
相关阅读:
· 豆瓣拓展新收入来源:开通电影购票服务(2012-05-17 15:06)· 豆瓣阅读作品商店正式上线发售内容(2012-05-08 11:28)
· 豆瓣为何要做阅读,怎么做?(2012-03-12 08:00)
已经有 1 位园友对此新闻发表了看法。
