sofa-ark类隔离技术分析调研

最近维护了一段时间的组件包,在向同事进行推广的时候,经常会听到身边会有类似的抱怨:

我靠,为啥你们的包带了一大堆乱七八糟的依赖,把我的classpath都给污染的不像个样子了。
我靠,你们这个包依赖的xx包的版本跟我们自己依赖的xx包的版本不一样啊,会不会出锅?
我靠,我这个代码编译的时候没问题啊,为啥一用你们的组件就报一堆的NoSuchMethodError啊。
有时候自己写代码的时候也会遇到一些容易被忽略的问题:

哎,我看人家引这个包的时候都会exclude一些依赖,我要不要也学着exclude一下呢?不管了,先一起粘过来试试看。
哎,怎么我的classpath里的某个包有三四个不同的版本啊,跑的时候到底用的是哪个版本啊?不管了,反正差不多,先跑跑看。
哎,我怎么直接就可以用这个类了,这个类是哪个包引的?不管了,反正IDE爸爸提示我能用,先用着再说。
大多数情况下,忽略这些问题一般也不会造成太大的影响,就算出了线上bug,一般也能很快定位问题、强制指定一下依赖的版本号就好。但是不得不说,依赖调解是普通java开发人员经常会遇到的问题,无谓的浪费了我们大量的时间和精力。尤其是当项目越来越大,用到的组件越来越多时,内耗就更加明显。

阅读 600
0 条评论