用 1.3 版本使用 Go 开始,链接 MongoDB 使用的驱动中,最多见的就是:mgo.v2git
这个库一度是惟一的选择,它的接口设计合理,与 Golang/MongoDB/bson 适配的也作的不错。然而这个库长期处于无人看管的状态,有一大堆让人难以忍受 bug,其中咱们遇到的就有很多:github
maxIdleTimeout
和 minPoolSize
)。在咱们的线上项目中,偶尔的业务峰值会照成某几个服务短期大量的 db 操做,而一旦这些 db 操做带来的链接数量被撑大以后,耗尽 db 的链接数资源以后。其余的服务就没法链接到此 db 了( lass 的云服务器供应商提供的 MongoDB 实例的链接数都不高)。服务器
后来终于有人受不了了:数据结构
globalsign/ mgo
新的 MongoDB 驱动,不只修复了 mgo.v2
可怕的链接池问题,还带来的不少很是棒的特性:并发
sync.Pool
提升了 bson 序列化的性能,参见这里。剩下的各类 bug 修复和改进能够参考该项目的 github 主页,改进点很是多,强烈建议替换掉 mgo.v2
。性能