seata use commons pool2 instead of commons-pool

9rnv2umw  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(65)

seata-all contains common-pool2 and commons pool ,better use one

h7appiyu

h7appiyu1#

I checked it and found that commons pool was introduced directly and common-pool2 was introduced indirectly by jedis and dbcp2. But in any case, it is necessary to restrain the dependence to avoid a wider conflict, so I agree with you and you are more than welcome to participate in this.

我检查了一下,commons pool 是直接引入,common-pool2是被jedis,dbcp2间接引入。但无论如何,需要收敛依赖避免更大范围的冲突,所以我同意你的看法,也非常欢迎你参与到这里面来。

nmpmafwu

nmpmafwu3#

我的本意是将版本统一到2.x,一方面是是间接依赖有依赖到2.x版本,不能exclude掉;另外一方面是1.x低版本应该升级到高版本,2.x高版本相比低版本, https://commons.apache.org/proper/commons-pool/ 有如下陈述,在性能和可扩展性和监控上有了提升。
The Apache Commons Pool open source software library provides an object-pooling API and a number of object pool implementations. Version 2 of Apache Commons Pool contains a completely re-written pooling implementation compared to the 1.x series. In addition to performance and scalability improvements, version 2 includes robust instance tracking and pool monitoring.

但是经过测试, 相同的case,2.x版本相比1.x版本,性能反而下降了3-4倍

Test case:
4c 16G
for 20 thread
1、pool.borrowObject
2、Thread.sleep(10);
3、pool.returnObject

所以需要决策下,是否统一版本到2.x

zlhcx6iw

zlhcx6iw4#

另外我认为历史这里是销毁channel,应该是:invalidateObject,而非 returnObject :

io.seata.core.rpc.netty.NettyClientChannelManager#destroyChannel

相关问题