Couchbase Java SDK 桶连接管理
Couchbase Java SDK Bucket Connection Management
我知道 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 中的所有存储桶对象并将其保存在一个单例中,您的应用程序线程可以从中进行选择。如果他们没有找到所需的桶,他们可以创建一个新桶并添加到 Map 以供其他线程使用。
如果您的应用程序托管在多台服务器上,并且每台服务器都连接到同一个 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 中的所有存储桶对象并将其保存在一个单例中,您的应用程序线程可以从中进行选择。如果他们没有找到所需的桶,他们可以创建一个新桶并添加到 Map 以供其他线程使用。
如果您的应用程序托管在多台服务器上,并且每台服务器都连接到同一个 couchbase 集群,请在您的应用程序未处理请求(关闭或离开负载均衡器)时通过关闭它来释放存储桶,以便其他应用程序的连接未被占用。