对于内部系统使用的网关层,如果对于吞吐量的要求并不高,一般同步请求调用即可。
对于统一的网关层,如何用少量的机器接入更多的服务,这就需要用异步来实现,用来提高更多的吞吐量。对于异步化,一般有以下两种策略:
- Tomcat/Jetty + NIO + Servlet3
这种策略使用的比较普遍,京东、有赞、Zuul,选取的都是这个策略,这种策略比较使用于 HTTP 的场景,在 Servlet3 中可以开启异步。
- Netty + NIO
Netty 是为高并发而生的。传闻唯品会的网关就是使用的这个策略,在唯品会的技术文章中,在相同的情况下,Netty 是每秒30w+的吞吐量,Tomcat 是13w+,看得出来是有一定差距的,但是 Netty 需要自己处理 HTTP 协议,这块相对而言也是比较麻烦。
综上,对于网关是 HTTP 请求场景比较多的情况,可以采用 Servlet,毕竟有更加成熟的开发体系;如果更加重视吞吐量,那么可以考虑采用 Netty。