我正在尝试在我的应用程序中实现Couchbase。

我很困惑

com.couchbase.client.CouchbaseClient



com.couchbase.client.java.CouchbaseCluster

我试图在CouchbaseClient与CouchbaseCluster上进行谷歌搜索,但没有发现哪个更好,也没有优缺点。

我知道我们有3种类型的Couchbase客户端,一种是vBucket感知的,一种是传统的旧客户端,这些客户端支持通过Moxi-Server自动群集。

已经使用过沙发床的人可以为我提供有关这两个Java客户端的链接或详细信息吗?

我已经在CouchbaseClient和CouchbaseCluster上完成了一些作业,例如通过这两者插入,更新,删除文档。
在CouchbaseClient中,存储的文档已序列化,您无法通过Couchbase管理控制台查看和编辑这些文档,而如果可以查看通过Couchbase集群存储的StringDocument,JsonDocument,JsonArrayDocument之类的文档,并且可以通过Couchbase管理控制台进行编辑。

我的要求是我想使用一个可自动配置(支持vBucket的)沙发床客户端,例如,如果我向群集中添加新节点,它将自动检测到它,或者如果任何节点出现故障,它将自动检测到它并且不会抛出任何错误例外。此外,如果我添加了新集群,我希望它能够自动检测并开始使用它。我不想为所有这些事情修改应用程序代码。

最佳答案

现在有两代官方Couchbase Java SDK:


第1代(当前为1.4.x,不确定修补程序版本)是从旧的Memcached客户端衍生的,Spymemcached ...现在仅是错误修正,它是将CouchbaseClient作为主要API的那个版本。
第2代是重写,在Maven中分层为core工件和java-client工件。当前版本是2.1.3。这是您处理CouchbaseCluster的地方。


在旧版本中,您必须为每个要处理的存储区实例化一个CouchbaseClient

在新一代中,集群和存储桶的概念是一等公民,您可以(并且应该)重用相同的Cluster实例以打开对不同Bucket的引用。 Bucket也应该被重用(不要多次打开同一个存储桶)。这样可以更好地共享资源。

而且,新一代具有更多一致的API,使用RxJava进行异步处理等。它支持群集,并且将更新群集拓扑结构(新节点,故障节点等)。

请注意,这两代是Maven中的差异工件(旧的是couchbase-client,新的是java-client)。

如果您“添加新集群”,您将无法获得这样的通知,但是该操作对我而言实际上没有任何意义。

09-29 21:36