微内核插件架构从原理到实践( 四 )

 
以上就是一个非常简版的基于扩展点的微内核插件,其设计思想和多数微内核插件架构相差无几,当然如果要用到生产还需要考虑很多问题,比如热部署问题、类隔离机制以及对于多语言的支持等 。
 
关于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并没有很高的要求 。

【微内核插件架构从原理到实践】


推荐阅读