0

我正在使用 Beego 和 Riak 开发一个后端。我正在寻找一种方法来保持 riak 连接池处于活动状态,但除了 SQL 相关之外,我在文档中找不到任何内容。

我真的是 Go 语言的新手(2 天前开始学习),我不知道连接池是否是写入选择。据我了解,每个 Go 应用程序都应该设计为独立工作,以便轻松扩展。如果这是 write 可能单个连接应该是更好的选择。如果是这种情况,我可以使用的最佳做法是什么?

如果我的问题看起来很菜,我很抱歉,但是,以我的 Django 背景,我不习惯管理数据库连接。

我使用的 riak 连接器是“github.com/tpjg/goriakpbc”

4

1 回答 1

2

是否使用连接池更多地取决于您选择的数据存储或客户端库的使用模式和工作负载。

每次建立 TCP 连接时,都会进行三次握手:

  1. 客户端 -- syn--> 服务器
  2. 客户端 <-- syn-ack-- 服务器
  3. 客户端 -- ack--> 服务器

这通常需要很少的时间和网络带宽,并在每台机器上的 conntrack 表中创建一个条目。如果您的应用程序为每个请求打开一个到服务器的新连接,并且每秒发送数千个请求,您可能会溢出 conntrack 表,阻塞新连接,直到之前的一些连接关闭;或者创建连接的开销流量可能会限制您每秒可以处理的请求数。

如果您决定使用池并使用处理单个请求然后终止的短期进程,您将需要一些与请求进程分开创建和维护连接的方法,以及请求进程发送和接收请求的方法使用池中的连接进行响应。

您可能会发现,如果您的应用程序没有产生足够的流量,那么将应用程序设计为使用连接池所需的努力超过了使用连接池所获得的任何好处。

没有正确或错误的答案,这在很大程度上取决于您的用例、请求量和网络能力。

于 2015-02-04T16:17:34.587 回答