连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家.
附上:
喵了个咪的博客:w-blog.cngo-commons-pool-Github地址:github.com/jolestar/go-commons-pool
1.连接池
在使用之前我们需要先了解清楚连接池的概念,总结下来连接池主要解决以下几类问题:
- 减少连接创建时间
与数据库还是Thrift等程序建立连接都是有开销的。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。 - 简化的编程模式
当使用连接池时,具体的操作都是统一的不用关心初始化等各项关心点 - 受控的资源使用
如果用户不使用连接池,而是每当需要时创建一个新的连接,那么用户的应用程序的资源使用会产生非常大的浪费并且可能会导致高负载下的异常发生。
2.go-commons-pool 使用
喵咪写了一个demo使用方式如下:
输出如下:
3 总结
在使用过程中要是有任何问题都可以直接在文章下留言,希望这篇文章可以帮助大家解决眼前的问题,多谢大家的支持!
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!