Gateway体系架构解析
前面我们了解到Spring Cloud中的第二代网关Gateway,作为网二代来说它在各项指标上都领先Zuul,实在没有理由不在新项目中用Gateway;这一小节,我们就去看看Gateway的体系架构,看看它到底好在哪里。
1、网二代的家底
所有二代都有同样的特点,家底子厚实。我们Gateway也不例外,打开Gateway的自动装配工厂GatewayAutoConfiguration来看一下,排头第一个类赫然写着五个金光闪的大字Netty。
Netty是什么? 在网络传输领域Netty就是身份的象征,它是非归塞、高性能、高可靠的异步输入输出框架,用一个字概括就是 “快”,这里我们不对Netty做深入探讨,但是需要了解下Netty在Gateway中主要应用在以下几个地方:
- 发起服务调用: 由NettyRoutingFilter过滤器实现,底层采用基于Netty的HttpClient发起外部服务的调用;
- Response传输: 由NettyResponseFilter过滤器实现,网络请求结束后要将Response回传给调用者;
- Socket连接: 具体由ReactorNettyWebSocketClient类承接,通过Netty的HttpClient发起连接请求。
在Gateway中发起Request和回传Response之类的步骤都是通过一系列过滤器完成的,用一张图来概括一下Netty在Gateway组件中的位置: