java - Couchbase Java SDK 存储桶连接管理

标签 java thread-safety connection-pooling couchbase

我知道 Couchbasecluster 对象应该在应用程序组件之间共享,因为 Couchbasecluster 应该在应用程序初始化时连接,并在应用程序关闭时断开连接。 Bucket 对象也是如此吗?

在基于 Web 的应用程序中,我应该保留对打开的 Bucket 连接的引用,并跨线程共享该引用,还是应该初始化一个新的 Bucket 对象,执行该操作,并在每次 HTTP 请求期间关闭 Bucket 对象?

最佳答案

根据 Couchbase 的 docs :

Here are some very important things to keep in mind:

Always create only one instance of a CouchbaseCluster and share it across threads (same with buckets).

The SDK is thread-safe, so no additional synchronization is needed when interacting with the SDK.

If different clusters need to be accessed, reuse the ClusterEnvironment (see Sharing Resources).

您可以惰性地创建 HashMap 中的所有存储桶对象并将其保存在一个单例中,并且您的应用程序线程可以从中选取。如果他们找不到所需的存储桶,他们可以创建一个新的存储桶并将其添加到映射中以供其他线程使用。

如果您的应用程序托管在许多服务器上,并且每个服务器都连接到同一个 couchbase 集群,请在您的应用程序未处理请求(关闭或脱离负载均衡器)时通过关闭存储桶来释放存储桶,以便连接其他应用没有被占用。

关于java - Couchbase Java SDK 存储桶连接管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30162949/

相关文章:

java - 如何使用 Hessian 二进制远程处理协议(protocol)将 DateTime 或某种时间戳从 PHP 发送到 Java?

java - 无法使用Tomcat和Maven的tomcat7-websocket插件启动WebSocket容器

java - 我的 Property Loader 单例线程安全吗?

java - hibernate、jpa、c3p0 和警告 HHH000208

java - 如何从 Java 8 中的迭代器获取 n 个第一个值?

Eclipse 没有通过代理连接到互联网

java - foreach中ConcurrentHashMap的Set是线程安全的吗?

C# 数据源类和线程安全

android - 如何在 Android Activity 之间共享 socket.io 连接?

java - 指定 GenericKeyed Pool 的构造函数 Arg ( Apache Commons )