go - Couchbase 连接池
问题描述
我正在使用 couchbase 作为我的主数据库来构建一个应用程序。
我想让应用程序具有足够的可扩展性,可以同时处理多个请求。
你如何在 Go 中为 couchbase 创建连接池?
Postgres 有pgxpool。
解决方案
我将更详细地介绍 gocb 的工作原理。gocb 的底层是另一个名为 gocbcore 的 SDK(不支持直接使用 gocbcore),它是一个完全异步的 API。Gocb 在 gocbcore 上提供了一个同步 API,并使 API 更加用户友好。
这意味着如果您跨多个 goroutine 发出请求,那么您可以一次将多个请求写入网络。这就是 gocb 批量 API 的有效工作方式 - https://github.com/couchbase/gocb/blob/master/collection_bulk.go。这两种方法都记录在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 被设计为高性能。
推荐阅读
- c++ - 为什么包含几个库会引发运行时错误(SIGILL)?
- swift - 在 Swift 中返回参数化类
- c# - 从 linux 终端接收到的输出为空白(SSH)
- kubernetes - Istio 如何使用 EnvoyFilter 更改 envoy sidecar 的 `max_request_bytes`?
- python - 尝试更新 pandas 中列的子集并收到警告
- android - 如何在 TextEdit 中停用放大镜?
- python - Python-如何在不删除内容的情况下写入文本文件
- rails-activestorage - Rails 和 active_storage:无法加载“Rails.config.active_storage.service”:(RuntimeError)缺少“S3”的服务适配器
- python - 为什么转义字符 \b 显示未知字符?
- python - 如何从文本文件中获取第一个单词删除\ n - python