2

官方couchbase文档说。

“如果您已经有一个使用 Memcached 协议的应用程序,那么您可以立即开始使用您的 Couchbase 服务器。如果是这样,您可以像使用任何其他 memcached 服务器一样简单地将您的应用程序指向该服务器。无需更改代码或特殊库, 并且应用程序的行为将与标准 memcached 服务器完全一样。在客户端不知道任何信息的情况下,数据正在被复制、持久化,并且集群可以完全透明地扩展或收缩。”

我们已经有一个基于 C 的应用程序,它通过使用 libmemcached C API 与 memcached 一起工作。我们想搬到沙发基地,因为我们想要持久性(主要是)。我们看到了前面提到的 Couchbase 引用并尝试了这个(使用 Couchbase 存储桶),这是一个惊喜。它起作用了,就像那样。为此+1。

我们发现还有一个Couchbase C api,下面是问题,

  1. 如果 libmemcached API 足以使用 Couchbase,那么 Couchbase C API 提供了什么?
  2. (继续)使用(现有)libmemaced API 与 Couchbase 服务器的 Couchbase 类型存储桶对话有什么缺点?
  3. 升级我们的应用程序以使用 Couchbase C api 与 Couchbase 服务器对话有什么好处?
4

1 回答 1

3

1) 如果 libmemcached API 足以使用 Couchbase,那么 Couchbase C API 提供什么?

当然,couchbase 使用新的操作扩展了 memcached 协议,例如触摸、观察、获取锁定、解锁、从副本读取等。其中一些虽然可以在 libmemcached 中实现(我已经为触摸命令做了补丁),而不是由 vanilla memcached 服务器支持,因此在 libmemcached 中测试和维护将更加困难。其他命令,如观察、从副本读取,根本无法根据 libmemcached 实现。Couchbase 的另一组 API 是对数据库索引的视图查询,它使用 map/reduce 构建,libcouchbase 可以做到。

2)(继续)使用(现有的)libmemaced API 与 Couchbase 服务器的 Couchbase 类型存储桶对话有什么缺点?

与您可以找到的任何其他 memcached 客户端一样,Libmemcached 被视为“哑”或“传统”客户端,而不是“智能”客户端。区别在于客户端是否知道集群拓扑。旧客户端必须通过集群中的单个入口点或进行某种平衡(如循环)。默认情况下,它将使用服务器端代理,它知道拓扑并且可以在该节点不拥有密钥的情况下重新路由。因此,当网络/CPU/内存容量实际上足以服务请求时,您可能会达到此代理的限制(尽管可以在客户端设置此代理)。智能客户端知道集群拓扑并跟踪其变化,因此它可以消除密钥的重新路由。

3) 升级我们的应用程序以使用 Couchbase C api 与 Couchbase 服务器对话有什么好处?

您将能够访问 memcached 的其他 API 和扩展 API。Couchbase 客户端还可以优化网络使用。

于 2013-06-12T15:21:00.647 回答