-
Notifications
You must be signed in to change notification settings - Fork 705
FAQ
OSGI比较重,JarsLink更轻量级。OSGI的依赖关系是网状的,JarsLink是扁平化的,共用一个父类加载器。OSGI的每个模块可以申明我依赖哪些Class,输出哪些Class。JarsLink一个模块可以加载多个JAR包,OSGI的一个bundle只有一个JAR包。
目前还没有实现资源隔离,用在核心应用也担心互相影响,比如A模块写了死循环,影响到B模块。JarsLink可以实现了完全的类隔离,每个模块需要依赖自己的Class,这里面会有重复依赖的问题,导致JVM加载大量重复的Class。
垃圾回收暂时没有隔离。
JarsLink的一个模块可以加载多个Jar包。JarsLink的模块不需要依赖其他模块的Class,也不需要输出Class,所以去掉对外暴露接口的声明,后续如果模块太多会考虑设计。
应该是支持的,不过我们没有测试过。
在同一个进程,模块能卸载干净就不会导致因模块加载增加内存导致的FullGC。
不更新的模块还是用的旧的common包。业务代码可以和common包一起打包成一个大的Jar包。
是的,用Spring做的类实例隔离。
有几个方案,把这个功能抽到二方包里,两个模块都依赖这个二方包。提供一个服务给其他模块使用。
每个模块一个git代码库,需要自建模块发布系统。每个模块比较独立,都是POM依赖,然后打包成一个JAR,直接发布。
最简单的是按照团队来拆分,一个团队一个。或者按照领域来拆分,贷前,贷中,贷后等。每个模块开发的人基本上只有一二个,如果人多的话,就拆分更多的模块。
模块是用同步API加载的,加载失败会抛异常,需要自行上报给发布系统。
模块对外暴露的接口。
如果使用过程中发现了BUG可以到github上提交issue,提交时尽量详细的注明BUG描述、BUG出现场景、BUG出现时间,如果能提交一个可复现的BUG测试用例更好,我们会尽快回复你。
如果使用过程中感觉有某个功能很重要而当前框架中没有,那么可以也可以提交issue反馈给我们,如果确实有必要,我们会加到开发日程尽快添加该功能。
建了一个钉钉群,群名:JarsLink开源框架讨论群。