Closed kimmking closed 6 years ago
非常感谢你的建议。 1:目前的版本主要是一个模块加载引擎,并提供了调用模块的API。 2:生命周期管理后续会加上。 3:依赖管理像OSGI这种方式非常复杂,在复杂场景下的确是有用处,JarsLink的考虑比较简单轻量级,在复杂场景下还没考虑到好的依赖管理方式,不知道你有没有什么建议? 4:模块互相调用机制后续会加上,初步打算用深克隆的方式,目前在公司内部用的RPC的方式。
1、热加载是一点,osgi相似,目前与微服务比起来热加载的优势在慢慢消失。 2、粒度太细,模块之间的划分,依赖管理会很麻烦 3、不能做到cpu,内存,磁盘等资源的隔离是个硬伤。A模块与B模块部署同一个JVM, B模块升级有可能导致JVM内存溢出影响到A模块。
楼上同学提到的其实是定位问题,jarlink的模块化定位与开发层面的,还是jvm内运行层面的,业务功能组件层面的,还是jvm层面的,还是os vm/docker层面的? 目前看来是前3个。
大家回复受益良多。@kiral 期待你的介绍模块化开发优点的文章,希望有一些方便理解的场景。
今天刚看到这开源组件,正好最近两周正在设计这种“微内核+插件”的框架,主要场景就是解决我们的多数据源采集问题。 目前也是考虑到模块通信的问题,暂时考虑采用“发布订阅”异步通信模式,能满足需求 看到这个jarslink,正在考虑是否可以采用,按我们需求缺一个插件管理系统了
你好,在oschina看到你的项目。有几个问题请教一下 1、这些模块是跑在同一个jvm中的吧,看你有地方写是多进程,应该是多线程? 2、jvm内如何监控/约束一个模块占用的系统资源? 3、springmvc的优势在你这里好像被削弱了很多,参数绑定好像不好用了?
基于以上这些问题,我现在还没有采用这种模块化/插件化开发方案。
1、这些模块可以跑在一个jvm中,也可以跑在多个JVM中,一个系统有多个模块,系统之间的模块通讯就是跨进程的。 2、目前ALIJVM已经支持多租户,为某个线程分配CPU和内存资源。 3、springmvc我们没有在模块里用,而是在系统里集成SpringMvc,然后基于一定的规则把HTTP请求路由到模块。
方腾飞/kiral Email:tengfei@ifeve.com weibo:@方腾飞-清英 Web:http://ifeve.com
On 12 Mar 2018, at 3:51 PM, zhangheng notifications@github.com wrote:
你好,在oschina看到你的项目。有几个问题请教一下 1、这些模块是跑在同一个jvm中的吧,看你有地方写是多进程,应该是多线程? 2、jvm内如何监控/约束一个模块占用的系统资源? 3、springmvc的优势在你这里好像被削弱了很多,参数绑定好像不好用了?
基于以上这些问题,我现在还没有采用这种模块化/插件化开发方案。
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alibaba/jarslink/issues/4#issuecomment-372219942, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpZWAPWwvjAQg7Y-WJ_waWvEYrMmfWkks5tdijzgaJpZM4R-ylD.
能不能不要依赖spring呢?
方腾飞/kiral Email:tengfei@ifeve.com weibo:@方腾飞-清英 Web:http://ifeve.com
On 22 Mar 2018, at 9:58 AM, Pei Yu notifications@github.com wrote:
能不能不要依赖spring呢?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alibaba/jarslink/issues/4#issuecomment-375153422, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpZWOgx93kkGmGm3dvzOE_uqVOMMRoYks5tgwVKgaJpZM4R-ylD.
希望作者能详细讲解下相比osgi模块化的区别和优势,是否支持热更新等等。
做这个项目有多少意义? java9已经支持 module ! jboss module , OSGi 早已成熟商用, 为什么?
方腾飞/kiral Email:tengfei@ifeve.com weibo:@方腾飞-清英 Web:http://ifeve.com
On 27 Mar 2018, at 1:35 PM, zhaixiaobin notifications@github.com wrote:
做个项目, 有多少意义? java9已经支持 module ! jboss module , OSGi 早已成熟商用, 为什么?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alibaba/jarslink/issues/4#issuecomment-376402704, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpZWE8te0WCiT6MZPWSH9biMU35vNFdks5tic-tgaJpZM4R-ylD.
我几年前用osgi实现过类似的开源服务管理平台 osmp, 感觉模块化与微服务化其实并不冲突。模块化更强调的是公共组件,基础组织,业务组件的划分和依赖管理,模块的动态加载,模块的注册发现等,微服务的实施需要强有力的团队推进,并且我理解的微服务并简简单单的就是以进程隔离,实现服务注册、发现、负载、融断,不管是基于springboot还是k8s来讲,我认为微服务更应该是一个环境,一个生态,一个持久交付并可运营,可监控的一样一个持久交付的环境。
昨天晚上读了源代码,有几个疑问:
Action.exec
方法的代码,这不就已经紧耦合了?以上,请指教!
1:优先在模块内部实现事务,如果跨模块调用保证事务可以考虑用分布式事务框架。或者通过重试保证最终一致性。 2:Spring上下文关闭的时候。 3:没明白你想问的点。A调用B系统,A系统肯定依赖B,模块之间的隔离性目标是他们的隔离性和两个系统是一样的。
方腾飞/kiral 并发编程网创始人
Email:tengfei@ifeve.com 微信公众号:ifeves weibo:@方腾飞-清英 Web:http://ifeve.com
On 11 Apr 2018, at 4:18 PM, frankies notifications@github.com wrote:
昨天晚上读了源代码,有几个疑问:
多模块后,事务管理怎么保证一致? 模块管理器什么时候关闭?是JVM Shutdown的时候? 模块A 依赖模块B 的 B1 方法,似乎都得在模块A 编写 Action.exec方法的代码,这不就已经紧耦合了? 以上,请指教!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alibaba/jarslink/issues/4#issuecomment-380368383, or mute the thread https://github.com/notifications/unsubscribe-auth/ADpZWECWFRJ7hwpP6d1LErCF4CbP65Hgks5tnbxsgaJpZM4R-ylD.