高性能服务系列【九】内外网之分
这篇文章源于一个关于YARP测试报告,据说HTTP反向代理性能高于传统ngnix高达80%。YARP是微软的一个C#实现的开源项目,实现反向代理核心功能的库。我对此测试结果并不以为然,并不是因为这个项目还未成熟,而是这个结果没有什么意义。
反向代理和网关一样,是内外网的一个重要界面,他们通常运行在传输层之上的应用层。所以,他的性能就会受到两个重要因素的影响,网络IO和应用层编解码性能,比如HTTP这个文本类协议。
受制于互联网带宽的价格,很少听说哪个公司能够提供GB以上的传输速度,能够达到MB级别传输速度,已经算是良心公司。所以,现代高速网络技术的发展,基本都没有覆盖到互联网网关。nginx作为WEB服务和反向代理,还能再战十年,也不是个问题。
作为HTTP的反向代理,YARP和nginx在网络IO这块基本相差无几,都是C10K时代的技术方案,难分伯仲。
nginx作为成熟的技术方案,需要添加更多的功能,比如丰富的插件。这在很大程度上,降低了纯粹的传输性能。如果将这些和反向代理无关的功能去掉,并且只需要解析出HTTP协议头中的URL,对于nginx还会有进一步提高。
nginx作为传统互联网网关,性能优化空间并不大,也没有太大必要,毕竟稳定是头等大事。如果将nginx作为内网的API网关,那么就是另外一个考量,现代网络传输技术,对其有巨大的加成。参考上一篇关于C10M文章。