Go commons pool 1.0 发布,通用 Go 语言对象池

jolestar
 jolestar
发布于 2016年01月18日
收藏 32

Go commons pool是一个通用的go语言对象池,基于Java版本的Apache Commons Pool改写。Go commons pool实现了Java版本的主要功能,改写了大多数Java版本的测试用例,测试覆盖率达到90%,性能测试结果和Java版本的相近,已经可以用于生产环境,于是发布1.0版本

Go commons pool保留了Java版本的主要功能,包括:

  1. 自定义的PooledObjectFactory.

  2. 丰富的设置选项,可以精确控制对象的生命周期。详细参看ObjectPoolConfig

    • 对象池是否是 LIFO (后进先出) 或者是 FIFO (先进先出)

    • 对象池的容量控制

    • 对象池对象的验证配置

    • 获取对象时是否阻塞以及最大等待时间配置

    • 对象池对象的回收机制配置(支持后台定时任务检测回收)

    • 对象池对象的抛弃机制配置(主要用于防止对象池对象借出后未归还,导致对象泄露)

但不包含以下Apache commons pool的功能:

  1. KeyedObjectPool 实现

  2. ProxiedObjectPool 实现

  3. 对象池的统计功能

Go commons pool 最主要的应用场景是各种连接池,当前Go下的各种缓存或数据库(比如redis/memcached)都自己实现了一个功能不太完备的连接池(比如缺少超时设置等),如果通过Go commons pool可以支持更丰富的设置。

关于改写过程中遇到的Go语言的并发问题总结可参看博客Golang多线程编程问题总结

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Go commons pool 1.0 发布,通用 Go 语言对象池
加载中

最新评论(11

青木_
青木_

引用来自“james-zhang”的评论

性能测试结果和Java版本的相近。
那也没啥优势
两个优势
一 内存占用极低
二 docker image 极小
三 发布依赖几乎为零
james-zhang
james-zhang
性能测试结果和Java版本的相近。
那也没啥优势
hyper0x
hyper0x
支持!
jolestar
jolestar

引用来自“杯面柒”的评论

为什么不直接参考pool2呢?
就是pool2
杯面柒
杯面柒
为什么不直接参考pool2呢?
Storm-Cai
Storm-Cai
+10086
__JM_Joy__
__JM_Joy__
这个轮子好。
冷絮
冷絮
强烈支持下
Br00k
Br00k
性能测试结果和Java版本的相近XD
返回顶部
顶部