在移动互联网时代,咱们面对的是更多的客户端,更低的请求延迟,这固然须要对数据作大量的 Cache 以提升读写速度。html
目前业界使用得最多的 Cache 系统主要是 memcached 和 redis。 这两个 Cache 系统都有都有很大的用户群,能够说是比较成熟的解决方案,也是不少系统固然的选择。 不过,在使用 memcached 和 redis 过程当中,仍是碰到了很多的问题和局限:web
良好的 cluster 支持redis
支持异步持久化支持算法
基于这些想法,我花了几天时间在 google, stack overflow, quora 上看了不少你们关于 cache cluster 的讨论,找到一个比较新系统 Couchbase。数据库
memcached VS couchbase服务器
Couchbase日前宣布推出其新版的NoSQL数据服务器——Couchbase Server。该产品基于Apache CouchDB,并整合了GeoCouch(一个基于Erlang、紧密集成的地理空间索引系统,可支持LBS应用)。负载均衡
Couchbase公司是由CouchOne与Membase合并组成,但合并后推出的第一款产品Couchbase Server并无包含Membase的任何技术。Couchbase Server分为企业版和社区版两个版本,其中企业版通过了严格的QA过程,并有技术支持和维护保障,但二者的API彻底兼容。Couchbase Server企业版本每节点订价范围从999美圆(10×5技术支持,5次),到4499美圆(24×7技术支持,无限次)。运维
据悉,全部企业版和社区版都提供包括Red Hat,Ubuntu Linux和Windows在内的各操做系统版本。Mac OS X有社区版。异步
此外,Couchbase还宣布成立顾问委员会为其提供战略和技术上的指导,委员会成员包括PostgreSQL开发核心团队成员Josh Berkus,SQLite的创始人Richard Hipp,HTTP与REST创始人Roy Fielding,Zynga CTO Cadir Lee,《软件人才管理的艺术》做者Michael Loop,Cloudera CEO Michael Olson,YSlow的做者、Google性能专家Steve Souders等。memcached
Couchbase 群集全部点都是对等的,只是在建立群或者加入集群时须要指定一个主节点,一旦结点成功加入集群,全部的结点对等。
图片来源:couchbase.com
对等网的优势是,集群中的任何节点失效,集群对外提供服务彻底不会中断,只是集群的容量受影响。 Smart Client
因为 couchbase 是对等网集群,全部的节点均可以同时对客户端提供服务,这就须要有方法把集群的节点信息暴露给客户端,couchbase 提供了一套机制,客户端能够获取全部节点的状态以及节点的变更,由客户端根据集群的当前状态计算 key 所在的位置。 vBucket
vBucket 概念的引入,是 couchbase 实现 auto sharding,在线动态增减节点的重要基础。
简单的解释 vBucket 能够从静态分片开始提及,静态分片的作法通常是用 key 算出一个 hash,获得对应的服务器,这个算法很简单,也容易理解。如如下代码所示:
servers = ['server1:11211', 'server2:11211', 'server3:11211'] server_for_key(key) = servers[hash(key) % servers.length]
但也有几个问题:
为了把 key 跟服务器解耦合,couchbase 引入了 vBucket。能够说 vBucket 表明一个 cache 子集,主要特色:
如如下代码所示:
servers = ['server1:11211', 'server2:11211', 'server3:11211'] vbuckets = [0, 0, 1, 1, 2, 2] server_for_key(key) = servers[vbuckets[hash(key) % vbuckets.length]]
图片来源:http://dustin.sallings.org/2010/06/29/memcached-vbuckets.html
因为 vBucket 把 key 跟服务器的静态对应关系解耦合,基于 vBucket 能够实现一些很是强大有趣的功能,例如:
vBucket 很是重要,之后能够单独写一篇文章分享。