apache / incubator-seata

:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.
https://seata.apache.org/
Apache License 2.0
25.09k stars 8.73k forks source link

use commons pool2 instead of commons-pool #5817

Open lzysuqianqiu opened 10 months ago

lzysuqianqiu commented 10 months ago

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

slievrly commented 10 months ago

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间接引入。但无论如何,需要收敛依赖避免更大范围的冲突,所以我同意你的看法,也非常欢迎你参与到这里面来。

wt-better commented 9 months ago

pelase assgin to me

wt-better commented 8 months ago

我的本意是将版本统一到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

wt-better commented 8 months ago

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

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