导读:《架构设计》系列为极客时间李运华老师《从0开始学架构》课程笔记。本文为第十一部分。主要介绍了如何面向功能拆分架构,首先介绍了微内核架构的基本架构设计,以及几种常见架构的实现与特点。最后分享了微内核架构典型开源规则引擎 JBoss Drools。
关注本公众号 回复 “架构设计” 获取架构设计笔记完整思维导图
负责和具体业务功能无关的通用功能:
插件模块(plug-in modules):负责实现具体的业务逻辑
OSGi 的全称是 Open Services Gateway initiative,本身其实是指 OSGi Alliance。OSGi 联盟的初始目标是构建一个在广域网和局域网或设备上展开业务的基础平台,所以 OSGi 的最早设计也是针对嵌入式应用的。现在我们谈论 OSGi,已经和嵌入式应用关联不大了,更多是将 OSGi 当作一个微内核的架构模式。
规则引擎从结构上来看也属于微内核架构的一种具体实现,其中执行引擎可以看作是微内核,执行引擎解析配置好的业务流,执行其中的条件和规则,通过这种方式来支持业务的灵活多变。特点:
类似于程序员开发的时候需要采用 Java、C++ 等语言,规则引擎也规定了规则开发的语言,业务人员需要基于规则语言来编写规则文件,然后由规则引擎加载执行规则文件来完成业务功能,因此,规则引擎的插件连接实现机制其实就是规则语言。
规则引擎的规则之间进行通信的方式就是数据流和事件流,由于单个规则并不需要依赖其他规则,因此规则之间没有主动的通信,规则只需要输出数据或者事件,由引擎将数据或者事件传递到下一个规则。
采用 Java 语言编写,基于 Rete 算法。
虽然 Drools 号称简单易用,但实际上其规则语言还是和编程语言比较类似,在实际应用的时候普通业务人员面对这样的规则语言,学习成本和理解成本还是比较高的
当成我所负责的广告服务特点比较明显——接入端多、场景多。那么这种微内核架构就比较合适,将核心的处理逻辑抽象出来,场景插件化,然后通过统一数据层将多端接入引入的协议差异打平,能够快速支持新端、新场景。此外,一些框架、平台类型的服务,个人理解都是这中架构,将核心逻辑抽象化,具体功能插件化,按照核心框架提供的插件规范实现所需功能的插件即可,典型的如:Nginx等。