从鸿蒙OS谈谈微内核架构
编辑:浏览器知识 今天最耀眼的莫过于华为鸿蒙OS!
贸易战至今,更深层次是一次高新科技自主创新的较量,是美国少有的几次技术垄断保卫战。表面看是中美两国的较量,实则给几乎所有国家敲响一次警钟 – 任何一个国家,科技强国战略处于不可动摇地位!信息化时代,科技制裁几乎可以决定一个民族的命运!
美帝洋洋自得的正在于此,仰仗着自己科技实力、军事实力老大哥的地位,动辄招惹其他国家,随心所欲的薅羊毛,但这次或许难以梦想成真。华为鸿蒙OS的诞生,着实给美帝当头一棒,或许这个世界真的需要两套系统,我想世界人民的愿望大都如此吧?
如图中所示,鸿蒙OS是一款基于微内核的全场景分布式操作系统,那么你的疑问来了?
- 什么是微内核?
- 目前已经存在的系统都不是微内核架构吗?
【微内核】
在软件开发领域,微内核是一种架构原则,其同时也被称为插件化架构。此种架构最大的优势是允许第三方开发者添加额外的插件化应用,前提是该插件应用需要遵从下文所述的开发规范。采用微内核架构的软件随处可见,如IDE软件Eclipse、企业ERP软件,这类软件自身具备丰富功能,同时支持第三方应用的即插即用。而且,第三方插件化程序的安装、运行、卸载以及故障不会对原有系统造成任何影响。
- 架构图
微内核架构包含两类组件:核心系统和插件系统。核心系统的功能稳定,很少变更,其只拥有能使应用运行的最小功能逻辑,这些通用逻辑(例如插件模块的注册、加载、卸载,以及插件模块之间的相互通信等)不涉及任何特定业务;插件系统则具备良好的扩展性,其负责实现特定的业务逻辑,可根据特定业务需求而变更。
显而易见,微内核架构本质上其实是将一个软件系统中的变化部分封装在插件中,从而实现不同业务之间的隔离性,达到系统快速灵活扩展的目的,同时所有特定业务相关逻辑的变更不会影响整体系统的稳定性。 - 设计要点
微内核架构设计有以下三个关键点:插件管理、插件链接和插件通信。
- 插件管理
核心系统需要知道当前系统中共有多少个插件,哪些插件处于可用状态,什么时候加载一个插件,如何加载一个插件等。
实现上述功能的一个常用机制是插件注册表:核心系统提供一个服务来响应插件的注册请求,最终将当前系统的所有插件信息(插件标识,类别,启动方式等)保存起来。存储方式可以选择配置文件存储或者数据表存储等。
- 插件链接
插件链接制定了一个插件与核心系统的通信方式,也就是链接规范,故任何一个可用插件都务必遵从核心系统中该类别插件所制定的链接规范。
常见的链接规范有OSGI(Eclipse),消息队列,依赖注入(Spring),RPC等。 - 插件通信
插件模块的设计是为了达到低耦合目的,也符合这一原则。但一个业务请求往往需要几个插件模块共同协作来实现,这就需要插件之间可以实现相互通信。插件之间的通信则需要通过中央处理器(核心系统)来作为桥梁,故核心系统除去提供上文提及的注册表机制之外,还需要提供类似操作系统总线之类的通信机制。
- 深入探讨
- OSGI(Open Service Gateway Initiative)架构
OSGI是一个插件化的标准而非一个可运行框架,当前遵循该标准的软件有:Eclipse, Apache Felix, Spring DM。其具备热插拔、扩展性、可复用性、高效性、稳定性的优点。请参看下面的逻辑架构图:
Module Layer:模块层主要涉及Jar包及共享的代码;
Lifecycle Layer:生命周期层主要涉及组件的运行时生命周期管理;
Service Layer:服务层主要涉及模块之间的交互和通信。 - 规则引擎架构
规则引擎其实是微内核架构的一中具体实现,其执行引擎可以看作是微内核架构中的核心系统,执行引擎解析配置好的业务流规则,进而执行其中的条件和规则,以此来支撑业务层面的灵活性和扩展性。
规则引擎常用于计费、保险、促销等业务领域,其存在以下几个优点:
a. 便于扩展
利用规则引擎,业务逻辑实现与业务系统分离,可以在不改动业务系统的情况下,灵活扩展业务共功能。
b. 便于理解
规则通过自然语言描述,业务人员更容易理解和操作。
c. 可视化
规则引擎一般情况下,会提供可视化的规则定制、审批、查询、管理及示例规则,便于业务人员快速配置,满足业务发展需求。
对上图的简要介绍如下:
开发人员将业务功能分解提炼为多个规则,将规则保存在规则库中;
业务人员根据业务需要从规则库中拉取规则,并将规则排列组合,配置成业务流程,并保存在业务库中;
规则引擎同时从规则库和业务库中拉取规则,解析业务人员配置的业务流程,最终实现业务功能。
感兴趣的同学可以了解下当前主流的开源规则引擎 JBoss Drools。
【Linux是否是微内核架构】
查阅了一些资料,目前说法不太一致,故暂且不更新该章节!