對于內(nèi)部系統(tǒng)使用的網(wǎng)關(guān)層框弛,如果對于吞吐量的要求并不高辛辨,一般同步請求調(diào)用即可。
對于統(tǒng)一的網(wǎng)關(guān)層,如何用少量的機器接入更多的服務(wù)斗搞,這就需要用異步來實現(xiàn)指攒,用來提高更多的吞吐量。對于異步化僻焚,一般有以下兩種策略:
- Tomcat/Jetty + NIO + Servlet3
這種策略使用的比較普遍允悦,京東、有贊虑啤、Zuul隙弛,選取的都是這個策略,這種策略比較使用于 HTTP 的場景狞山,在 Servlet3 中可以開啟異步全闷。
- Netty + NIO
Netty 是為高并發(fā)而生的。傳聞唯品會的網(wǎng)關(guān)就是使用的這個策略萍启,在唯品會的技術(shù)文章中总珠,在相同的情況下,Netty 是每秒30w+的吞吐量勘纯,Tomcat 是13w+局服,看得出來是有一定差距的,但是 Netty 需要自己處理 HTTP 協(xié)議驳遵,這塊相對而言也是比較麻煩淫奔。
綜上,對于網(wǎng)關(guān)是 HTTP 請求場景比較多的情況堤结,可以采用 Servlet唆迁,畢竟有更加成熟的開發(fā)體系;如果更加重視吞吐量竞穷,那么可以考慮采用 Netty媒惕。