Go commons pool 1.0 發布,通用 Go 語言對象池

jopen 8年前發布 | 6K 次閱讀

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多線程編程問題總結





來自: http://www.oschina.net//news/69981/go-common-pool-1-0

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!