我正在使用Beego和Riak开发后端。我正在寻找一种方法来保持riak连接池的存活,但除了SQL相关之外,我在文档中找不到任何内容。
我真的是Go语言的新手(2天前开始学习),我不知道连接池是否是写作选择。据我了解,每个Go应用程序应设计为独立工作,以便轻松扩展。如果这是写,也许单个连接应该是更好的选择。如果是这种情况,我可以使用的最佳做法是什么?
如果我的问题看起来很糟糕,我很抱歉,但是,凭借我的Django背景,我不习惯管理数据库连接。
我正在使用的riak连接器是“github.com/tpjg/goriakpbc”
答案 0 :(得分:2)
是否使用连接池更多地取决于您选择的数据存储或客户端库的使用模式和工作负载。
每次建立TCP连接时,都会进行三次握手:
syn
- >服务器syn-ack
- server ack
- >服务器这通常需要非常少的时间和网络带宽,并在每台机器的conntrack表中创建一个条目。如果您的应用程序为每个请求打开一个与服务器的新连接,并且每秒将发送数千个请求,您可能会溢出conntrack表,阻止新连接,直到某些先前的连接关闭;或者创建连接的开销流量可以限制每秒可以处理的请求数量。
如果您决定使用池并使用处理单个请求然后终止的短期进程,则需要一些与请求进程分开创建和维护连接的方法,以及请求进程发送的方法使用池中的连接请求和接收响应。
您可能会发现,如果您的应用程序没有产生足够的流量,那么设计应用程序以使用连接池所需的工作量将超过使用池所带来的任何好处。
没有正确或错误的答案,这在很大程度上取决于您的使用案例,请求量和网络功能。