Soul源码学习十三 - 微内核架构

我们通过Soul网关插件的执行流程可以发现,soul网关的设计特别像微内核架构中的规则引擎,今天我们就来看看微内核架构,以及Soul里面使用它的影子;

什么是微内核架构?

微内核架构,也被称为插件化架构,是一种面向功能进行拆分的课拓展性架构,在soul网关里面,我们通过实现不同的插件,实现对流量的各种控制。

基本架构

微内核架构包含两类组件:核心系统和插件模块。

  • 核心系统:负责和具体业务无关的通用功能,例如模块加载,模块间通信等;对标到soul里面,像selector的选择和rule的匹配就是流量的通用功能;
  • 插件模块:负责实现具体的业务逻辑;对应的就是soul-plugin目录下的各种插件的实现;
    在这里插入图片描述

设计关键点

  1. 插件管理

    核心系统需要知道哪些插件可用,如何加载这些插件,什么时候加载插件。在soul网关里面,我们通过soul-admin项目构建了一个admin的控制台,用来管理各种插件和插件的配置信息;

  2. 插件连接

    插件连接指插件如何连接到核心系统。通常来说,核心系统必须制定插件和核心系统的连接规范,然后插件按照规范实现,核心系统按照规范加载即可。
    在soul网关里面,网关在启动的时候就会加载所有插件,用户可以通过配置插件的skip属性来启动和关闭插件功能,并且所有的插件都是绑定在一个插件链上,通过执行这个插件链,流量依次经过这些插件的处理;

    /**
         * Delegate to the next {@code WebFilter} in the chain.
         *
         * @param exchange the current server exchange
         * @return {@code Mono<Void>} to indicate when request handling is complete
         */
        @Override
        public Mono<Void> execute(final ServerWebExchange exchange) {
            return Mono.defer(() -> {
                if (this.index < plugins.size()) {
                    SoulPlugin plugin = plugins.get(this.index++);
                    Boolean skip = plugin.skip(exchange);
                    // 通过skip判断是否启动了插件,是否要执行这个插件
                    if (skip) {
                        return this.execute(exchange);
                    }
                    return plugin.execute(exchange, this);
                }
                return Mono.empty();
            });
        }
    
  3. 插件通信
    插件通信指插件间的通信。虽然设计的时候插件间是完全解耦的,但实际业务运行过程中,必然会出现某个业务流程需要多个插件协作,这就要求插件进行通信。由于插件之间没有直接联系,通信必须通过核心系统,因此核心系统需要提供插件通信机制。类似于计算机总线的一样。

规则架构引擎解析

特点

  1. 可拓展性
  2. 易理解
  3. 高效率
  • 开发人员将业务功能分解提炼为多个规则,将规则保存在规则库中;
  • 业务人员根据业务需要,通过规则排列组合,配置成业务流程,保存在业务库中;
  • 通过实现各个插件实现对应的业务处理;
  • 规则引擎执行业务流程实现业务功能;
  • 进入soul网关的流量都会经过SoulWebHandler的处理,并且流向各个选择器和规则,然后再经过不同的插件进行处理;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值