Couchbase

Couchbase

Couchbase介绍及实战

数据库Geek小A 发表了文章 • 0 个评论 • 1100 次浏览 • 2016-04-20 11:40 • 来自相关话题

Cache系统的重要性
[]移动智能设备的时代,几十亿部设备[/][]轻易达到百万级别以上的用户[/][]极低延迟的体验[/]
 
Memcached/Redis
Cluster的问题
        --扩展、负载均衡、高可用
持久化的问题
       --Cache失效后的恢复时间
       --Cache失效后带来的"惊群"效应
 
理想的Cache系统
良好的Cluster支持
          --Auto Sharding
          --无单点失效
          --读写负载均衡
          --可动态扩容
异步持久化
 
静态key分片
用hash(Uid) % N  --> 分片服务器单点失效的问题




Server 2失效-->Doc 4/7/8不可用




人工维护成本
      --增加节点需要更改配置
      --可能需要数据迁移
维护期间业务可能中断
 
代理




[]代理很容易成为性能瓶颈[/][]代理单点失效的问题[/][]现有代理对扩容支持不好[/]
或许可以找到更好的方法:
[]Google.com[/][]http://Stackoverflow.com/questions/13079333/[/][]Quora.com[/][]查找:Cache system sharding[/]
 
Cache的特点
[]对等网-->无单节点失效[/][]vBucker-->Auto Sharding /Replica[/][]Smartclient[/]
 
Couchbase Server 2.0 架构

































































Smart Client
Client是Cluster的一部分:
                --同步服务器状态
                --同步 vBucket Map
代理嵌入到Client
               --不再有单点失效
               --不再成为性能瓶颈
 
总结
[]Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]
 
作者:张虎 ,云巴 (yunba.io) 创始人。 JPush 创始人,原CTO。 查看全部
Cache系统的重要性
    []移动智能设备的时代,几十亿部设备[/][]轻易达到百万级别以上的用户[/][]极低延迟的体验[/]

 
Memcached/Redis
Cluster的问题
        --扩展、负载均衡、高可用
持久化的问题
       --Cache失效后的恢复时间
       --Cache失效后带来的"惊群"效应
 
理想的Cache系统
良好的Cluster支持
          --Auto Sharding
          --无单点失效
          --读写负载均衡
          --可动态扩容
异步持久化
 
静态key分片
用hash(Uid) % N  --> 分片服务器单点失效的问题
share1.png

Server 2失效-->Doc 4/7/8不可用
share2.png

人工维护成本
      --增加节点需要更改配置
      --可能需要数据迁移
维护期间业务可能中断
 
代理
proxy.png

    []代理很容易成为性能瓶颈[/][]代理单点失效的问题[/][]现有代理对扩容支持不好[/]

或许可以找到更好的方法:
    []Google.com[/][]http://Stackoverflow.com/questions/13079333/[/][]Quora.com[/][]查找:Cache system sharding[/]

 
Cache的特点
    []对等网-->无单节点失效[/][]vBucker-->Auto Sharding /Replica[/][]Smartclient[/]

 
Couchbase Server 2.0 架构
arch1.png

arch2.png

arch3.png

sim1.png

sim2.png

sim3.png

sim4.png

sim5.png

sim6.png

sim7.png

sim8.png

s9.png

sim10.png

sim11.png

sim12.png

sim13.png


Smart Client
Client是Cluster的一部分:
                --同步服务器状态
                --同步 vBucket Map
代理嵌入到Client
               --不再有单点失效
               --不再成为性能瓶颈
 
总结
    []Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]

 
作者:张虎 ,云巴 (yunba.io) 创始人。 JPush 创始人,原CTO。

更好的NOSQL Cache系统Couchbase

数据库Geek小A 发表了文章 • 0 个评论 • 731 次浏览 • 2016-04-19 00:54 • 来自相关话题

在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度。
术语
节点:指集群里的一台服务器。
 
现有 Cache 系统的特点
目前业界使用得最多的 Cache 系统主要是 memcached 和 redis。 这两个 Cache 系统都有都有很大的用户群,可以说是比较成熟的解决方案,也是很多系统当然的选择。 不过,在使用 memcached 和 redis 过程中,还是碰到了不少的问题和局限:
[]Cluster 支持不够。在扩容、负载均衡、高可用等方面存在明显不足。[/][]持久化支持不好,出现问题后恢复的代价大。memcached 完全不支持持久化,redis 的持久化会造成系统间歇性的负载很高。[/]
 
理想 Cache 系统
良好的 cluster 支持
[]Key 可以动态分散(Auto Sharding)在不同的服务器上,可以通过动态添加服务器节点增加系统容量。[/][]没有单点失效,任何一个单点都不会造成数据不可访问。[/][]读写负载可以均匀分布在系统的不同节点上。[/]
支持异步持久化支持
[]方便快速恢复,甚至可以直接用作 key/value 数据库。 经常在跟业界朋友交流时,会提到用 key 分段的方法来做容量扩展以及负载均衡。但是用静态的 key 分段会有不少问题:[/][]Cache 系统本身及使用 cache 的客户端都需要预设一个分段逻辑,这个逻辑后期如果需要调整将会非常困难。不能解决单点失效的问题,还需要额外的手段。运维需要更多的人为参与,避免 key 超出现有分区,一旦出现 key 找不到对应服务器,访问直接失败。[/]
 
最接近需求的系统:Couchbase
基于这些想法,我花了几天时间在 google, stack overflow, quora 上看了很多大家关于 cache cluster 的讨论,找到一个比较新系统 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等。
 
Couchbase 的集群设计对等网
Couchbase 群集所有点都是对等的,只是在创建群或者加入集群时需要指定一个主节点,一旦结点成功加入集群,所有的结点对等。




对等网的优点是,集群中的任何节点失效,集群对外提供服务完全不会中断,只是集群的容量受影响。 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 失效。[/][]如果服务器容量不同,管理非常麻烦。[/][]前面提到过,运维、配置非常不方便。[/]
为了把 key 跟服务器解耦合,couchbase 引入了 vBucket。可以说 vBucket 代表一个 cache 子集,主要特点:
[]key hash 对应一个 vBucket,不再直接对应服务器。[/][]集群维护一个全局的 vBucket 与服务器对应表。[/][]前面提到的 smart client 重要的功能就是同步 vBucket 表。[/]
如以下代码所示:servers = ['server1:11211', 'server2:11211', 'server3:11211']
vbuckets = [0, 0, 1, 1, 2, 2]
server_for_key(key) = servers[vbuckets[hash(key) % vbuckets.length]]



由于 vBucket 把 key 跟服务器的静态对应关系解耦合,基于 vBucket 可以实现一些非常强大有趣的功能,例如:
[]Replica,以 vBucket 为单位的主从备份。如果某个节点失效,只需要更新 vBucket 映射表,马上启用备份数据。[/][]动态扩容。新增加一个节点后,可以把部分 vBucket 转移到新节点上,并更新 vBucket 映射表。[/]
 
性能测试




单机支持300k/OPS,内存消耗主要是bukket占用,到300k/OPS负载也不高,它的xdcr同步4千万的数据不到5分钟。
 
总结
[]Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]
 

原文链接:http://zhang.hu/couchbase/
作者:张虎 云巴 (yunba.io) 创始人, JPush 联合创始人,原CTO。 查看全部
在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度。
术语
节点:指集群里的一台服务器。
 
现有 Cache 系统的特点
目前业界使用得最多的 Cache 系统主要是 memcached 和 redis。 这两个 Cache 系统都有都有很大的用户群,可以说是比较成熟的解决方案,也是很多系统当然的选择。 不过,在使用 memcached 和 redis 过程中,还是碰到了不少的问题和局限:
    []Cluster 支持不够。在扩容、负载均衡、高可用等方面存在明显不足。[/][]持久化支持不好,出现问题后恢复的代价大。memcached 完全不支持持久化,redis 的持久化会造成系统间歇性的负载很高。[/]

 
理想 Cache 系统
良好的 cluster 支持
    []Key 可以动态分散(Auto Sharding)在不同的服务器上,可以通过动态添加服务器节点增加系统容量。[/][]没有单点失效,任何一个单点都不会造成数据不可访问。[/][]读写负载可以均匀分布在系统的不同节点上。[/]

支持异步持久化支持
    []方便快速恢复,甚至可以直接用作 key/value 数据库。 经常在跟业界朋友交流时,会提到用 key 分段的方法来做容量扩展以及负载均衡。但是用静态的 key 分段会有不少问题:[/][]Cache 系统本身及使用 cache 的客户端都需要预设一个分段逻辑,这个逻辑后期如果需要调整将会非常困难。不能解决单点失效的问题,还需要额外的手段。运维需要更多的人为参与,避免 key 超出现有分区,一旦出现 key 找不到对应服务器,访问直接失败。[/]

 
最接近需求的系统:Couchbase
基于这些想法,我花了几天时间在 google, stack overflow, quora 上看了很多大家关于 cache cluster 的讨论,找到一个比较新系统 Couchbase。
 
vs.png

couchbase.png

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等。
 
Couchbase 的集群设计对等网
Couchbase 群集所有点都是对等的,只是在创建群或者加入集群时需要指定一个主节点,一旦结点成功加入集群,所有的结点对等。
high_level_architecture.png

对等网的优点是,集群中的任何节点失效,集群对外提供服务完全不会中断,只是集群的容量受影响。 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 失效。[/][]如果服务器容量不同,管理非常麻烦。[/][]前面提到过,运维、配置非常不方便。[/]

为了把 key 跟服务器解耦合,couchbase 引入了 vBucket。可以说 vBucket 代表一个 cache 子集,主要特点:
    []key hash 对应一个 vBucket,不再直接对应服务器。[/][]集群维护一个全局的 vBucket 与服务器对应表。[/][]前面提到的 smart client 重要的功能就是同步 vBucket 表。[/]

如以下代码所示:
servers = ['server1:11211', 'server2:11211', 'server3:11211']
vbuckets = [0, 0, 1, 1, 2, 2]
server_for_key(key) = servers[vbuckets[hash(key) % vbuckets.length]]
hvb.png

由于 vBucket 把 key 跟服务器的静态对应关系解耦合,基于 vBucket 可以实现一些非常强大有趣的功能,例如:
    []Replica,以 vBucket 为单位的主从备份。如果某个节点失效,只需要更新 vBucket 映射表,马上启用备份数据。[/][]动态扩容。新增加一个节点后,可以把部分 vBucket 转移到新节点上,并更新 vBucket 映射表。[/]

 
性能测试
300kops.png

单机支持300k/OPS,内存消耗主要是bukket占用,到300k/OPS负载也不高,它的xdcr同步4千万的数据不到5分钟。
 
总结
    []Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]

 


原文链接:http://zhang.hu/couchbase/
作者:张虎 云巴 (yunba.io) 创始人, JPush 联合创始人,原CTO。


Couchbase介绍及实战

数据库Geek小A 发表了文章 • 0 个评论 • 1100 次浏览 • 2016-04-20 11:40 • 来自相关话题

Cache系统的重要性
[]移动智能设备的时代,几十亿部设备[/][]轻易达到百万级别以上的用户[/][]极低延迟的体验[/]
 
Memcached/Redis
Cluster的问题
        --扩展、负载均衡、高可用
持久化的问题
       --Cache失效后的恢复时间
       --Cache失效后带来的"惊群"效应
 
理想的Cache系统
良好的Cluster支持
          --Auto Sharding
          --无单点失效
          --读写负载均衡
          --可动态扩容
异步持久化
 
静态key分片
用hash(Uid) % N  --> 分片服务器单点失效的问题




Server 2失效-->Doc 4/7/8不可用




人工维护成本
      --增加节点需要更改配置
      --可能需要数据迁移
维护期间业务可能中断
 
代理




[]代理很容易成为性能瓶颈[/][]代理单点失效的问题[/][]现有代理对扩容支持不好[/]
或许可以找到更好的方法:
[]Google.com[/][]http://Stackoverflow.com/questions/13079333/[/][]Quora.com[/][]查找:Cache system sharding[/]
 
Cache的特点
[]对等网-->无单节点失效[/][]vBucker-->Auto Sharding /Replica[/][]Smartclient[/]
 
Couchbase Server 2.0 架构

































































Smart Client
Client是Cluster的一部分:
                --同步服务器状态
                --同步 vBucket Map
代理嵌入到Client
               --不再有单点失效
               --不再成为性能瓶颈
 
总结
[]Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]
 
作者:张虎 ,云巴 (yunba.io) 创始人。 JPush 创始人,原CTO。 查看全部
Cache系统的重要性
    []移动智能设备的时代,几十亿部设备[/][]轻易达到百万级别以上的用户[/][]极低延迟的体验[/]

 
Memcached/Redis
Cluster的问题
        --扩展、负载均衡、高可用
持久化的问题
       --Cache失效后的恢复时间
       --Cache失效后带来的"惊群"效应
 
理想的Cache系统
良好的Cluster支持
          --Auto Sharding
          --无单点失效
          --读写负载均衡
          --可动态扩容
异步持久化
 
静态key分片
用hash(Uid) % N  --> 分片服务器单点失效的问题
share1.png

Server 2失效-->Doc 4/7/8不可用
share2.png

人工维护成本
      --增加节点需要更改配置
      --可能需要数据迁移
维护期间业务可能中断
 
代理
proxy.png

    []代理很容易成为性能瓶颈[/][]代理单点失效的问题[/][]现有代理对扩容支持不好[/]

或许可以找到更好的方法:
    []Google.com[/][]http://Stackoverflow.com/questions/13079333/[/][]Quora.com[/][]查找:Cache system sharding[/]

 
Cache的特点
    []对等网-->无单节点失效[/][]vBucker-->Auto Sharding /Replica[/][]Smartclient[/]

 
Couchbase Server 2.0 架构
arch1.png

arch2.png

arch3.png

sim1.png

sim2.png

sim3.png

sim4.png

sim5.png

sim6.png

sim7.png

sim8.png

s9.png

sim10.png

sim11.png

sim12.png

sim13.png


Smart Client
Client是Cluster的一部分:
                --同步服务器状态
                --同步 vBucket Map
代理嵌入到Client
               --不再有单点失效
               --不再成为性能瓶颈
 
总结
    []Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]

 
作者:张虎 ,云巴 (yunba.io) 创始人。 JPush 创始人,原CTO。

更好的NOSQL Cache系统Couchbase

数据库Geek小A 发表了文章 • 0 个评论 • 731 次浏览 • 2016-04-19 00:54 • 来自相关话题

在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度。
术语
节点:指集群里的一台服务器。
 
现有 Cache 系统的特点
目前业界使用得最多的 Cache 系统主要是 memcached 和 redis。 这两个 Cache 系统都有都有很大的用户群,可以说是比较成熟的解决方案,也是很多系统当然的选择。 不过,在使用 memcached 和 redis 过程中,还是碰到了不少的问题和局限:
[]Cluster 支持不够。在扩容、负载均衡、高可用等方面存在明显不足。[/][]持久化支持不好,出现问题后恢复的代价大。memcached 完全不支持持久化,redis 的持久化会造成系统间歇性的负载很高。[/]
 
理想 Cache 系统
良好的 cluster 支持
[]Key 可以动态分散(Auto Sharding)在不同的服务器上,可以通过动态添加服务器节点增加系统容量。[/][]没有单点失效,任何一个单点都不会造成数据不可访问。[/][]读写负载可以均匀分布在系统的不同节点上。[/]
支持异步持久化支持
[]方便快速恢复,甚至可以直接用作 key/value 数据库。 经常在跟业界朋友交流时,会提到用 key 分段的方法来做容量扩展以及负载均衡。但是用静态的 key 分段会有不少问题:[/][]Cache 系统本身及使用 cache 的客户端都需要预设一个分段逻辑,这个逻辑后期如果需要调整将会非常困难。不能解决单点失效的问题,还需要额外的手段。运维需要更多的人为参与,避免 key 超出现有分区,一旦出现 key 找不到对应服务器,访问直接失败。[/]
 
最接近需求的系统:Couchbase
基于这些想法,我花了几天时间在 google, stack overflow, quora 上看了很多大家关于 cache cluster 的讨论,找到一个比较新系统 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等。
 
Couchbase 的集群设计对等网
Couchbase 群集所有点都是对等的,只是在创建群或者加入集群时需要指定一个主节点,一旦结点成功加入集群,所有的结点对等。




对等网的优点是,集群中的任何节点失效,集群对外提供服务完全不会中断,只是集群的容量受影响。 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 失效。[/][]如果服务器容量不同,管理非常麻烦。[/][]前面提到过,运维、配置非常不方便。[/]
为了把 key 跟服务器解耦合,couchbase 引入了 vBucket。可以说 vBucket 代表一个 cache 子集,主要特点:
[]key hash 对应一个 vBucket,不再直接对应服务器。[/][]集群维护一个全局的 vBucket 与服务器对应表。[/][]前面提到的 smart client 重要的功能就是同步 vBucket 表。[/]
如以下代码所示:servers = ['server1:11211', 'server2:11211', 'server3:11211']
vbuckets = [0, 0, 1, 1, 2, 2]
server_for_key(key) = servers[vbuckets[hash(key) % vbuckets.length]]



由于 vBucket 把 key 跟服务器的静态对应关系解耦合,基于 vBucket 可以实现一些非常强大有趣的功能,例如:
[]Replica,以 vBucket 为单位的主从备份。如果某个节点失效,只需要更新 vBucket 映射表,马上启用备份数据。[/][]动态扩容。新增加一个节点后,可以把部分 vBucket 转移到新节点上,并更新 vBucket 映射表。[/]
 
性能测试




单机支持300k/OPS,内存消耗主要是bukket占用,到300k/OPS负载也不高,它的xdcr同步4千万的数据不到5分钟。
 
总结
[]Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]
 

原文链接:http://zhang.hu/couchbase/
作者:张虎 云巴 (yunba.io) 创始人, JPush 联合创始人,原CTO。 查看全部
在移动互联网时代,我们面对的是更多的客户端,更低的请求延迟,这当然需要对数据做大量的 Cache 以提高读写速度。
术语
节点:指集群里的一台服务器。
 
现有 Cache 系统的特点
目前业界使用得最多的 Cache 系统主要是 memcached 和 redis。 这两个 Cache 系统都有都有很大的用户群,可以说是比较成熟的解决方案,也是很多系统当然的选择。 不过,在使用 memcached 和 redis 过程中,还是碰到了不少的问题和局限:
    []Cluster 支持不够。在扩容、负载均衡、高可用等方面存在明显不足。[/][]持久化支持不好,出现问题后恢复的代价大。memcached 完全不支持持久化,redis 的持久化会造成系统间歇性的负载很高。[/]

 
理想 Cache 系统
良好的 cluster 支持
    []Key 可以动态分散(Auto Sharding)在不同的服务器上,可以通过动态添加服务器节点增加系统容量。[/][]没有单点失效,任何一个单点都不会造成数据不可访问。[/][]读写负载可以均匀分布在系统的不同节点上。[/]

支持异步持久化支持
    []方便快速恢复,甚至可以直接用作 key/value 数据库。 经常在跟业界朋友交流时,会提到用 key 分段的方法来做容量扩展以及负载均衡。但是用静态的 key 分段会有不少问题:[/][]Cache 系统本身及使用 cache 的客户端都需要预设一个分段逻辑,这个逻辑后期如果需要调整将会非常困难。不能解决单点失效的问题,还需要额外的手段。运维需要更多的人为参与,避免 key 超出现有分区,一旦出现 key 找不到对应服务器,访问直接失败。[/]

 
最接近需求的系统:Couchbase
基于这些想法,我花了几天时间在 google, stack overflow, quora 上看了很多大家关于 cache cluster 的讨论,找到一个比较新系统 Couchbase。
 
vs.png

couchbase.png

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等。
 
Couchbase 的集群设计对等网
Couchbase 群集所有点都是对等的,只是在创建群或者加入集群时需要指定一个主节点,一旦结点成功加入集群,所有的结点对等。
high_level_architecture.png

对等网的优点是,集群中的任何节点失效,集群对外提供服务完全不会中断,只是集群的容量受影响。 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 失效。[/][]如果服务器容量不同,管理非常麻烦。[/][]前面提到过,运维、配置非常不方便。[/]

为了把 key 跟服务器解耦合,couchbase 引入了 vBucket。可以说 vBucket 代表一个 cache 子集,主要特点:
    []key hash 对应一个 vBucket,不再直接对应服务器。[/][]集群维护一个全局的 vBucket 与服务器对应表。[/][]前面提到的 smart client 重要的功能就是同步 vBucket 表。[/]

如以下代码所示:
servers = ['server1:11211', 'server2:11211', 'server3:11211']
vbuckets = [0, 0, 1, 1, 2, 2]
server_for_key(key) = servers[vbuckets[hash(key) % vbuckets.length]]
hvb.png

由于 vBucket 把 key 跟服务器的静态对应关系解耦合,基于 vBucket 可以实现一些非常强大有趣的功能,例如:
    []Replica,以 vBucket 为单位的主从备份。如果某个节点失效,只需要更新 vBucket 映射表,马上启用备份数据。[/][]动态扩容。新增加一个节点后,可以把部分 vBucket 转移到新节点上,并更新 vBucket 映射表。[/]

 
性能测试
300kops.png

单机支持300k/OPS,内存消耗主要是bukket占用,到300k/OPS负载也不高,它的xdcr同步4千万的数据不到5分钟。
 
总结
    []Couchbase 的对等网设计,smart client 直接获取整的集群的信息,在客户端实现负载均衡,整个集群没有单点失效,并且完全支持平行扩展。[/][]vBucket 的引入,完全实现了 auto sharding,可以方便灵活的把数据的子集在不同节点上移动,以实现集群动态管理。[/][]Couchbase 有一个非常专业的 web 管理界面,并且支持通过 RESTful API 管理,这也是 memcached, redis 不能企及的。[/][]如果只是做 key/value 的 cache,Couchbase 可以完全取代 memcached。[/][]Couchbase 已经被我们在生产环境中大量采用。[/]

 


原文链接:http://zhang.hu/couchbase/
作者:张虎 云巴 (yunba.io) 创始人, JPush 联合创始人,原CTO。


功能齐全、设备内置轻量级、本地嵌入式NoSQL数据库。与他Lite,你有他的全功率数据库在本地设备上的。您可以创建、更新、删除、查询、同步等。