soul 网关
soul(https://github.com/Dromara/soul) 是一个Java语言编写的高性能,异步,基于webflux的响应式网关,整体项目结构比较清晰,目前还在维护开发,而且变化较大,项目本身也包含了一些优秀的设计,比如类似于dubbo的可扩展设计。网关采用插件化的方式对请求进行处理,插件包含:鉴权,限流,熔断,防火墙,dubbo泛化调用,负载等。 其中限流是通过redis lua脚本的方式,熔断通过Hystrix。
soul 系统的具体设计,可以参考官方文档,非常详细,这里只说一下大概的流程:
1. soul admin是网关管理后台,提供了插件,选择器,规则的配置功能, 当有数据更新后,可以通过zookeeper, websocket , http长连接,nacos方式同步给网关站点。
2. 网关站点通过watch相关数据,当有变更发生的时候,获取到最新数据。
3. 网关采用了插件化方式,插件通过链式方式依次对符合规则的请求请求进行处理。
参考我的注解版soul https://github.com/zhaoyb/soul