Soul网关简述

?

1. 简述:

         soul网关是作者根据现有的kong、gateway等网关,再结合公司的定制化需求开发出的一款异步的、高性能的、跨语言的、响应式的api网关。soul网关结合kong的插件话思想和gateway的webflux响应式编程设计,其内置的插件支持不同语言之间的转换,支持请求转发合并,负载均衡,协议转换,限流熔断等诸多功能。而这些功能都是通过可插拔的插件话进行管理的,即在可视化界面进行动态的配置,改变插件的配置和开启关闭。soul网关经过了高并发的生产测试,并拥有高度的可扩展性,是一款十分优秀的工具。

 

2. 流程介绍

soul网关的启动以及配置流程在官网或这dorama组织的公众号上都有详尽的内容介绍。在此不作赘述。 

 

废话不多说,先来一张soul网关的架构流程图:

Soul网关简述?

Soul网关简述

该图介绍的是程序猿对于网关的配置操作,程序猿登录网关ui管理界面,进行插件和规则的配置,配置好的插件和规则会保存到数据库当中并会使用http、websocket、nacos、zookeeper等(可选)将规则数据同步到bootstrap(gateway)服务中,在bootstrap服务器中,使用concurrentMap存储在服务器内存当中。以对后续的网关进行规则匹配。

 

Soul网关简述?

Soul网关简述

该图是客户端进行网关访问时的具体请求走向过程。(websocket同步方式)

客户机请求经过nginx转发到达网关之后,经过soul网关,sou网关在启动时候,已经收到从soul-admin发送的配置包了。此时网关服务会将请求进行规则的匹配,部分插件会设置请求头的 按照定义好的插件顺序,进行每个插件的工作,最后将请求发送到具体的机器当中。

 

3. 项目结构

Soul网关简述?

Soul网关简述

 soul-admin:  默认9095端口,soul的可视化配置管理后台

soul-bootstrap: 默认9195端口,soul的网关服务启动器,作为插件的集成处

soul-client: 客户端启动之后,进行网关接口配置数据的拼装

soul-common: 公共服务,工具类,公有配置等

soul-disruptor:  soul网关基于disruptor高性能异步队列框架的业务封装,微服务启动注册到soul网关时,使用队列发布以及订阅消息,进行微服务配置数据的更新。

soul-dist: docker镜像

soul-examples:  soul网关的测试例子

soul-metrics: 普罗米修斯监控系统

soul-plugin: 插件块代码

soul-register-center:  soul-client拼装好的数据,在此模块进行推送至soul-admin

soul-spi:  soul对于spi的封装

soul-spring-boot-starter: soul所有启动器,包括客户端推送数据,网关、插件启动器,soul-bootstrap同步接收数据启动器等

soul-sync-data-center:  同步数据主要逻辑代码

soul-web:  soul网关对于请求的拦截代码

 

4. 使用技术栈

Springboot:springboot项目

SPI:设置选取数据同步机制、匹配规则等

Disrutpor:服务注册数据推送,异步队列进行数据更新入库

webflux:响应式编程

其他使用在插件当中:例如:websocket,nacos,dubbo,ratelimit,lua,redis,sofa,grpc,tars等。

?

Soul网关简述

上一篇:idea中快速重写父类方法


下一篇:华为机试8.25第二题