失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Soul 网关(一)---- 架构设计简介 soul-admin soul-bootstrap

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

时间:2018-11-26 11:23:24

相关推荐

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

Soul 是一个异步的,高性能的,跨语言的,响应式的API网关。今天先来整体了解一下 Soul 的结构。

Soul 架构图

两大部分:Soul-Admin(Soul 网关管理系统) 和 Soul-Cluster(网关Soul 集群)

soul-admin (soul 网关的管理系统)

soal-admin 依赖 MySQL,首先我们创建 soul 数据库,创建所需要的表,一共 12 个。

然后启动 soul-admin

soul-admin 默认端口 9095 ,访问 http://localhost:9095/index.html

soul-bootstrap(Soul 网关)

soul-bootstrap 代码很少。HealthFilter 过滤器优先级很高@Order(-99),请求url如果不是 “/actuator/health”, "/health_check"就会放行到下一个环节进行处理。这块的代码,感觉跟用 Spring Cloud Gateway 很像,都是通过 Exchange 做转发,通过过滤器做请求的拦截。

public final class HealthFilter implements WebFilter {private static final String[] FILTER_TAG = {"/actuator/health", "/health_check"};@Overridepublic Mono<Void> filter(@Nullable final ServerWebExchange exchange, @Nullable final WebFilterChain chain) {ServerHttpRequest request = Objects.requireNonNull(exchange).getRequest();String urlPath = request.getURI().getPath();for (String check : FILTER_TAG) {if (check.equals(urlPath)) {String result = JsonUtils.toJson(new Health.Builder().up().build());DataBuffer dataBuffer = exchange.getResponse().bufferFactory().wrap(result.getBytes());return exchange.getResponse().writeWith(Mono.just(dataBuffer));}}return Objects.requireNonNull(chain).filter(exchange);}}

从 SoulNettyWebServerFactory 类可以看出,底层是使用了NIO框架----Netty

@Beanpublic NettyReactiveWebServerFactory nettyReactiveWebServerFactory() {NettyReactiveWebServerFactory webServerFactory = new NettyReactiveWebServerFactory();webServerFactory.addServerCustomizers(new EventLoopNettyCustomizer());return webServerFactory;}

总结

Soul 网关 主要由 Soul-Admin 和 Soul-Cluster 构成,插件是 Soul 的灵魂Soul 网关的管理功能很强大,配置很灵活

如果觉得《Soul 网关(一)---- 架构设计简介 soul-admin soul-bootstrap》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。