引言

微内核架构是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品的应用。

一、基本架构

微内核架构包含两部分组件:核心系统(core system)和插件模块(plug-in modules)。应用逻辑被分割为独立的插件模块和核心系统,提供了可扩展性、灵活性、功能隔离和自定义处理逻辑的特性。

  • 核心系统

    通常提供系统运行所需的最小功能集。

    负责和具体业务功能无关的通用功能

  • 插件模块

    插件模块是独立的模块,包含特定的处理、额外的功能和自定义代码,来向核心系统增强或扩展额外的业务能力。

    负责实现具体的业务逻辑

微内核架构的本质,是将变化封装在插件里面,从而达到快速灵活扩展的目的,而又不影响整体系统的稳定。

二、设计关键点

2.1 插件管理

  • 插件列表
  • 加载方式
  • 加载时机

常见实现方法:插件注册表机制

2.2 插件连接

插件如何连接到核心系统?

  1. 核心系统制定连接规范
  2. 插件按照规范实现
  3. 核心系统按照规范加载

常见连接机制:

  • OSGi(Eclipse使用)
  • 消息模式
  • 依赖注入(Spring使用)

2.3 插件通信

  • 核心系统需要提供插件通信机制

三、Soul的微内核架构实现

3.1 架构

  • 核心系统

    对应 soul-web 模块

  • 插件模块

    对应 soul-plugin 模块

3.2 关键设计

1)插件管理

  • 插件列表

    soul-bootstrap 模块的 pom.xml 中引入了各插件的starter,此处的 pom 文件充当插件列表的角色。

  • 加载方式

    由 springboot 自动加载到 ioc 容器

    各插件的 starter 借助 springboot 的 @Configuration + @Bean 自动加载机制完成插件加载。

  • 加载时机

    启动时加载:soul-bootstrap 启动后,由 springboot 在容器启动阶段加载插件。

2)插件连接

  • 连接方式

    依赖注入:借助 spring 支持的数组、集合类型自动注入能力,实现插件和网关的连接

    ObjectProvider<List> plugins

3)插件通信

  • 通信机制

    插件定序 + ServerWebExchange传参:插件链初始化阶段完成插件排序,再借助贯穿插件执行链的ServerWebExchange,完成插件的定向传参,即某种意义上的通信机制。

总结

简单梳理了微内核架构(插件式架构),借此看清了 soul 的插件化实现路径,后续 soul 可以考虑继续深做插件热更功能。

今日内容如下图所示:

个人知识库

高性能微服务API网关-Soul

【Soul网关探秘】微内核架构及实现相关推荐

  1. 通过Soul看微内核架构(二)

    前一篇文章简单介绍了什么是微内核架构,以及将微内核架构作为中台化系统核心实现的逻辑,参见:什么是微内核架构. 前言 简单来说,微内核架构是一种面向插件的架构,通过对功能进行拆分到各个插件组件下,进而实 ...

  2. Soul 网关(一)---- 架构设计简介、soul-admin、soul-bootstrap

    Soul 是一个异步的,高性能的,跨语言的,响应式的API网关.今天先来整体了解一下 Soul 的结构. Soul 架构图 两大部分:Soul-Admin(Soul 网关管理系统) 和 Soul-Cl ...

  3. Soul网关源码探秘《十》 - 负载均衡 - Hash/RoundRobin

    前文分析了DividePlugin插件中负载均衡的总体结构以及Random的具体实现.今天来探索剩下两种负载均衡是如何实现的. 准备工作 见Soul网关源码探秘<八> - 负载均衡初探 H ...

  4. Soul网关发布2.2.0:让高性能网关变得如此简单!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者:猫大人 来源:转载自公众号「Dromara分布式事 ...

  5. 天玥运维安全网关默认密码_Soul网关发布全新架构V2.2.0,让高性能网关变得如此简单

    我们还是先来看看新增功能,然后再讲故事. 完全的插件化架构设计,插件热插拔. 完整支持dubbo所有版本,alibaba-dubbo ,apache-dubbo. 支持dubbo泛化调用,多参数,复杂 ...

  6. Soul网关发布2.2.0 | 让高性能网关变得如此简单!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 本文来自:猫大人的Dromara分布式事务 Soul发布全新的架构 ...

  7. Soul网关发布2.1.X之后,它到底有多方便?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 Soul 网关自从去年10月我开源以来,经历了一年的事情, ...

  8. Soul网关源码分析-环境搭建

    1.下载源码,搭建soul运行环境 源码下载地址:https://github.com/dromara/soul 1)先把源码克隆下来: git clone git@github.com:dromar ...

  9. 【Soul源码阅读系列(一)】Soul网关初探

    本篇文章主要内容如下: Soul是什么 如何在本地运行Soul 对Soul进行压测 Soul 是什么 Soul是什么?它可不是灵魂交友软件! 引用Soul的官网,它是这样描述Soul的: 这是一个异步 ...

最新文章

  1. 1. 编程规范和编程安全指南--python
  2. 敏捷软件开发(c#版)文摘
  3. 计算机解决问题没有奇技淫巧,但动态规划还是有点套路
  4. 今日头条 文章采集_我在今日头条的成长之路—文章的排版与结构
  5. Oracle优化03-Latch和等待
  6. React之函数式组件使用props
  7. 查找字符串前缀python_python-从一组(相似)字符串中确定前缀
  8. 95-38-030-Buffer-Java NIO中-关于DirectBuffer,HeapBuffer的疑问
  9. python的httplib、urllib和urllib2的区别及应用
  10. js 斐波那契数列(兔子问题)
  11. 工作六年的前端开发在想什么
  12. 干货 | 大公司机器学习算法的面试经验
  13. 设计模式系列之过滤器模式(Chriteria Pattern)
  14. php 接口类,抽象类 的实际作用
  15. macos 10.15.2 iso镜像网盘下载
  16. 并发编程学习之Callable接口
  17. 单片机原理与c语言程序设计付先成版答案,单片机原理与C语言程序设计
  18. c安卓开发视频教程!我把所有Android第三方库整理成了PDF,醍醐灌顶!
  19. 用户答题接收答案,并存入数据库
  20. php发送邮件二种方法 php使用smtp发送邮件

热门文章

  1. [18调剂]天津大学软件学院软件工程(专业学位)全日制及非全日制研究生接收院内校内校外调剂...
  2. Qt播放音乐报错DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80070002 ()
  3. error: Package requirements (sqlite3 > 3.7.4) were not met:
  4. Android fragment中广告图片轮播效果的实现(附图 )
  5. 记一次锐捷网络虚拟化(VSU)故障处理
  6. 王选:从Dijkstra谈帅才的洞察力
  7. 采用全球面螺旋线的 光纤陀螺仪
  8. 模拟量开环控制系统的组成
  9. 人脸识别实践(2) - 人脸识别系统展示
  10. P1359 租用游艇 洛谷