微内核架构模式(也称为插件化应⽤用架构) 对于基于产品的应用程序来说是一个很自然的选择。

基于产品的应用是指一个经过打包的、可以通过版本下载的⼀一个典型的第三方产品。
然而,很多公司也会开发和发布他们 的内部商业软件,完整的版本号、发布日志和可插拔的新特性,这些就非常符合微内核架构的思想。

微内核 架构模式可以通过插件的形式添加额外的特性到核⼼心系统中,这提供了很好的扩展性,也使得新特性与核心 系统隔离开来。

微内核架构的最好示例就是⼤大家熟知的Eclipse IDE了。下载最基本的Eclipse后,它只能提供⼀一个编辑 器。然后,一旦你开始添加插件,它就变成一个高度可定制化和非常有⽤用的产品

目录

优势和场景

注意事项


优势和场景

微内核架构对渐进式设计和增量开发提供了非常好的⽀支持。

你可以先构建一个单纯的核⼼心系统,随着应用的演进,系统会逐渐添加越来越多的特性和功能,而这并不会引起核⼼心系统的重⼤大变化。
对基于产品的应⽤用来说,微内核架构应该是你的第一选择。特别是那些你会在后续开发中发布附加特性和控 制哪些⽤用户能够获取哪些特性的应⽤用。如果你在后续开发中发现这个架构不能满足你的需求了,你能够根据 你的特殊需求将你的应⽤用重构为另一个更好的架构。

微内核架构主要需要考虑两个方面: 核心系统和插件模块

应⽤用逻辑被划分为独⽴立的插件模块和核⼼心系统,这 样就提供良好的可扩展性、灵活性,应⽤用的新特性和⾃自定义处理逻辑也会被隔离

微内核架构的核⼼心系统⼀一般情况下只包含⼀一个能够使系统运作起来的最⼩小化模块。很多操作系统的实现就是 使⽤用微内核架构,因此这也是该架构名字的由来。从商业应⽤用的⾓角度看,核⼼心系统通常是为特定的使⽤用场 景、规则、或者复杂条件处理定义了通⽤用的业务逻辑,⽽而插件模块根据这些规则实现了具体的业务逻辑

注意事项

对于微内核架构来说一个很重要的一点就是它能够被嵌入或者说作为另一种架构的一部分。
       
       例如,如果这个架构解决的是一个你应用中易变领域的特定的问题 ( 译者注 : 即插件化能够解决你应用中的某个特定模块的 架构问题 ),
       
       你可能会发现你不能在整个应⽤用中使⽤用这种架构。在这种情况下,你可以将微内核架构嵌入到另一个架构模式中 ( 比如分层架构 )。
       同样的,在上一章节中描述的事件驱动架构中的事件处理器组件也可以使 用微内核架构。

总结

整体灵活性:高  
    整体灵活性是指能够快速适应不断变化的环境的能力。
    通过插件模块的松耦合实现,可以将变化隔离 起来,并且快速满足需求。通常,微内核架构的核心系统很快趋于稳定,这样系统就变得很健壮,随着时间 的推移它也不会发生多大改变。

易于部署: 高
    根据实现方式,插件模块能够在运⾏行时被动态地添加到核心系统中 ( 比如,热部署 ),把停机时间减 到最小。

可测试性:高
    分析 : 插件模块能够被独立的测试,能够非常简单地被核心系统模拟出来进行演示,或者在对核心系统很小 影响甚至没有影响的情况下对一个特定的特性进行原型展示

性能: 高  
    分析 : 使用微内核架构不会自然而然地使你的应用变得高性能。
    通常,很多使用微内核架构的应用运行得很 好,因为你能定制和简化应用程序,使它只包含那些你需要的功能模块。JBoss应用服务器就是这方面的优 秀
    示例: 依赖于它的插件化架构,你可以只加载你需要的功能模块,移除那些消耗资源但没有使⽤用的功能特 性,比如远程访问,消息传递,消耗内存、CPU的缓存,以及线程,从而减小应用服务器的资源消耗

伸缩性:低
    分析 : 因为微内核架构的实现是基于产品的,它通常都比较小。它们以独立单元的形式实现,因此没有太高模式分析,的伸缩性。
    此时,伸缩性就取决于你的插件模块,有时你可以在插件级别上提供可伸缩性,但是总的来说这 个架构并不是以构建高度伸缩性的应用而著称的
      
易于开发: 低 
    微内核架构需要考虑设计和规约管理,使它不会很难实现。规约的版本控制,内部的插件注册,插件 粒度,丰富的插件连接的⽅方式等是涉及到这个架构模式实现复杂度的重要因素。

软件架构模式 mark Richards - 读后总结 3 - 微内核架构相关推荐

  1. 软件架构模式 mark Richards - 读后总结 1 - 分层架构

    软件架构模式 Mark Richards 著 版权归 © 2015 O'Reilly Media, Inc. 所有. 原书发布链接为  Software Architecture Patterns [ ...

  2. 软件架构模式 mark Richards - 读后总结 2 事件驱动架构

    事件驱动架构模式是一种主流的异步分发事件架构模式,常用于设计高度可拓展的应⽤用.当然了,它有很高的适应性,使得它在小型应用.大型应用.复杂应用中都能表现得很好.事件驱动架构模式由高度解耦. 单一目的的 ...

  3. 软件架构模式 mark Richards - 读后总结 6 - 整合

    1. 分层架构 (Layered) 任何时候都可以用,并且任何时候都适用(mvc等设计模式的思路也是一致来源) 性能:偏低 2. 事件驱动架构 (Event-drivent) 它有很⾼高 的适应性,使 ...

  4. 软件架构模式 mark Richards - 读后总结 4 - 微服务架构

    微服务架构模式作为替代单体应⽤用和⾯面向服务架构的⼀一个可⾏行的选择,在业内迅速取得进展.由于这个架构 模式仍然在不断的发展中,在业界存在很多困惑--这种模式是关于什么的?它是如何实现的?本报告的这 ...

  5. 软件架构模式 mark Richards - 读后总结 5 - 基于空间的架构

    大多数基于⽹网站的商务应⽤用都遵循相同的请求流程:一个请求从浏览器发到web服务器,然后到应⽤用服务 器,然后到数据库服务器.虽然这个模式在⽤用户数不大的时候工作良好,但随着⽤用户负载的增加,瓶颈会开 ...

  6. 软件体系架构模式之一什么是软件架构模式

    什么是软件架构模式 计划启动未开发的软件项目?然后选择正确的架构模式将对项目的结果起关键作用.选择市场上最流行或最新的技术并不总是意味着会带来最好的结果.但是,选择最合适的解决方案将为行之有效的问题和 ...

  7. [转载]软件架构模式

    原文地址:http://colobu.com/2015/04/08/software-architecture-patterns/   博主鸟窝写的东西都很有价值,2000年从业的老大哥,很多方面值得 ...

  8. 软件架构模式导读(转)

    软件架构模式 本文介绍了一下分层架构.事件驱动架构.broker架构(例子微博).微内核架构(例子eclipse) 本文是我在阅读O'Reilly免费的电子书 Software Architectur ...

  9. 【转载】软件架构模式

    本文转载自https://colobu.com/2015/04/08/software-architecture-patterns/ 本文是我在阅读O'Reilly免费的电子书 Software Ar ...

最新文章

  1. pythonmysql数据库系统实战_Python实战之MySQL数据库操作
  2. 修改altium designer原理图右下角信息
  3. opencv+python读写视频流
  4. Python快速学习06:词典
  5. Leaflet中使用Leaflet.Polyline.SnakeAnim插件实现水流模拟效果
  6. HDU 4787 GRE Words Revenge
  7. pit和systick_PIT和TestNG突变测试简介
  8. python open encoding_Python文件操作
  9. 技术改变世界以及减速慢行
  10. 漫谈 Clustering (5): Hierarchical Clustering
  11. 阶段3 2.Spring_03.Spring的 IOC 和 DI_13 课程知识梳理
  12. [Excel数据处理与分析实战技巧精粹].Excelhome.扫描版
  13. H5中启动Android app
  14. 聊一聊为什么JAVA只允许单继承
  15. 编译原理 -- 词法分析程序设计
  16. 网页的406报错问题
  17. 天霆:桌面虚拟化正处于导入期
  18. Java POST JSON 数据处理异常 (code 160)): was expecting double-quote to start field name
  19. 弘辽科技:淘宝客单价高好还是低好?如何提高客单价?
  20. c语言读取midi文件举例子,c# – 使用NAudio从MIDI文件中读取音符

热门文章

  1. windows下mingw32 编译 libusb[实测可行]
  2. 《科研伦理与学术规范》 (全部习题答案免费分享 )2020年
  3. SONET/SDH帧格式
  4. java计算各个班的平均分
  5. 《矩阵理论与方法》lambda矩阵及Jordan标准形
  6. CentOS7部署NFS服务
  7. 关于element-ui中轮播图手动切换轮播图片
  8. docker中安装nacos报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
  9. 作者:吴力波(1974-),女,复旦大学大数据学院教授、副院长、博士生导师...
  10. 在AWS Lambda上部署标准FFmpeg工具——自定义层的方案