Couchbase 连接池

Couchbase connection pool

我正在构建一个使用 couchbase 作为我的主数据库的应用程序。
我想让应用程序具有足够的可扩展性,以便同时处理多个请求。

如何在 Go 中为 couchbase 创建连接池?
Postgres 有 pgxpool.

go-couchbase has already have a connection pool mechanism: conn_pool.go (even though there are a few issues linked to it, like issue 91).

您可以看到它在 conn_pool_test.go, and in pools.go 本身进行了测试。

dnault points out in to the more recent couchbase/gocb, which does have a Cluster 而不是连接池。

我将详细介绍 gocb 的工作原理。在 gocb 的底层是另一个名为 gocbcore 的 SDK( 支持直接使用 gocbcore),它是一个完全异步的 API。 Gocb 在 gocbcore 上提供同步 API,并使 API 更加用户友好。

这意味着如果您跨多个 goroutine 发出请求,那么您可以一次将多个请求写入网络。这就是 gocb 批量 API 的有效工作方式 - https://github.com/couchbase/gocb/blob/master/collection_bulk.go. Both of these approaches are documented at https://docs.couchbase.com/go-sdk/current/howtos/concurrent-async-apis.html.

如果您仍然没有获得足够的吞吐量,那么您可以考虑使用其中一种方法,同时通过使用您的 kv_pool_size 查询字符串选项来增加 SDK 与每个节点建立的连接数连接字符串,即 couchbases://10.112.212.101?kv_pool_size=2 但是我建议仅在上述方法未提供您需要的吞吐量时才更改它。无论如何,该 SDK 旨在实现高性能。