以上就是一个非常简版的基于扩展点的微内核插件,其设计思想和多数微内核插件架构相差无几,当然如果要用到生产还需要考虑很多问题,比如热部署问题、类隔离机制以及对于多语言的支持等 。
关于Java的一些开源微内核插件架构也有一些开源实现:
SpringPlugin:https://github.com/spring-projects/spring-plugin
p4fj:https://github.com/pf4j/pf4j
jspf:https://code.google.com/archive/p/jspf/
结合我们自己的一些业务场景,参考p4fj设计思想我也开发了一个微内核插件框架,解决了热部署问题、类隔离机制以及对于多语言等问题,主要应用于SaaS一些业务租户定制化需求,后面我也会考虑将其开源出来放到GitHub上,大家敬请关注 。
总结Robert C.Martin曾经说过,软件开发技术发展的历史就是一个如何想方设法方便地增加插件,从而构建一个可扩展、可维护的系统架构的故事 。在敏捷开发的潮流之下,需求的变更如同家常便饭,系统不应该因为某一部分发生变更从而导致其他不相关的部分出现问题 。将系统设计为微内核架构,就等于构建起了一面变更无法逾越的防火墙,插件发生的变更就不会影响系统的核心业务逻辑 。
微内核架构的设计思想,能够极大提升系统的可扩展性和健壮性,在其他的一些软件方法论里,我们也隐约能看到它的影子 。比如在领域驱动设计中,领域层就相当于核心系统,它定义了系统的核心业务逻辑;基础设施层则相当于插件,切换不同的基础设施并不会影响系统的业务逻辑,这得益于基础设施层依赖倒置的设计原则 。
当然,作为微内核架构也有着一些缺点,它天然具备了单体架构的一些劣势,比如核心系统作为架构的中心节点并不具备Fault tolerance能力 。因此,该架构模式往往被广泛应用于一些着重提供很强的用户定制化功能的小型产品,如VS Code等,它们对系统的Elasticity、Fault tolerance和Scalability并没有很高的要求 。
【微内核插件架构从原理到实践】
推荐阅读
- 在idea中,能提升编码效率的12种插件,你知道几个?
- 为什么做微商的都那么有钱 之前比马云还要红的他,如今却做起了微商之争
- PS5|等等党还有机会!索尼PS5涨价后 微软、任天堂强调不会涨
- 微软|索尼回应前独占游戏《死亡搁浅》加入微软PGP:完全没有参与
- 5个让人爱不释手的微信小程序,每一款都是精品中的精品
- 分享微信使用技巧,快来涨姿势啦
- 微信用户记得关闭这6个设置,不然个人隐私易泄露了,望周知
- 你可能不知道的4个微信技巧,隐藏很深,但很实用
- 为了便捷,却没想到泄露了隐私!赶紧检查微信“授权功能”
- 都2022年了,还有人不知道“微信收藏”能这么玩,这也太香了吧