我知道 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/