阅读前的小说明:
由于工作需要,本人正在研究微服务架构。而微服务的服务网格( Service Mesh )架构中,需要选择一种 proxy 作为每个微服务之间通讯的代理。因此为了定夺微服务中常用的两种代理,即: Nginx 和 Envoy 如何选择,本人查阅并翻译了Nginx官网的一系列文章,以便日后参考,也方便各位参阅。希望能借此文章,与各位大佬们多多交流,谢谢。
此外,由于本人的英文功底着实较为薄弱,因此文中若如果出现部分翻译不当或翻译错误,也希望大家批评指正,不吝赐教!
负载均衡可以在OSI( Open Systems Interconnection )网络模型中的很多层次上被实现。在这里,我们将提供这个网络模型中,两种不同层次的负载均衡选择的概览。
四层负载均衡(Layer 4 Proxy)和七层负载均衡(Layer 7 Proxy)的区别
四层负载均衡( L4 load balancing ):
主要工作于处于OSI模型中间位置的传输层( transport layer ),它主要处理消息的传递,而不管消息的内容。在互联网上,TCP就是HTTP传输方式的四层协议( Layer 4 Protocol )。四层负载均衡只针对由上游服务发送和接收的网络包,而并不检查包内的具体内容是什么。四层负载均衡可以通过检查TCP流中的前几个包,从而决定是否限制路由。
七层负载均衡( L7 load balancing ):
主要工作于处于OSI模型顶层位置的应用层( application layer ),它主要处理每条消息中的真正内容。在互联网上,HTTP是网络通讯中占据主导地位的七层协议( Layer 7 Protocol )。七层负载均衡在路由网络传输时比四层负载均衡更加复杂和巧妙,特别适合像HTTP这种基于TCP传输的方式。一个七层负载均衡器终止网络传输并读取消息中的内容。它可以基于消息中内容( 比如URL或者cookie中的信息 )来做出负载均衡的决定。之后,七层负载均衡器建立一个新的TCP连接来选择上游服务( 或者再利用一个已经存在的TCP连接,通过 HTTP keepalives 的方式,见:https://www.nginx.com/blog/http-keepalives-and-web-performance/ )并向这个服务发出请求。
七层负载均衡的优势
七层负载均衡的CPU密集程度比基于包的四层负载均衡更高,但是在现代服务中却极少降低其性能。七层负载均衡能够让均衡器做更小的负载均衡决定,并且会根据消息的内容( 比如压缩和加密 )利用最优化方式做出改变。它运用缓存的方式来卸载上游服务较慢的连接,并显著地提高了性能。
一个七层负载均衡的例子
让我们来看一个简单的例子吧:用户访问一个繁忙的网站。在这个用户 session 的航向上,他或她可能会请求静态内容——比如图片或者视频,动态内容——比如新闻递送,甚至是事务型信息——比如外卖点单的状态。七层负载均衡允许均衡器依据请求自身的信息进行路由,比如被请求内容的类型。所以现在一个针对图片和视频的请求可以被路由到存储并高度优化的多媒体内容服务器上。对于事物型信息比如商品折后价,可以被路由到响应管理价格的应用服务器上。用了七层负载均衡,网络和应用的架构师可以建立一个高速调整且高度优化的、针对需求可靠且可有效延展的服务基础架构或应用递送网络。
让 Nginx Plus 助你一臂之力!
下面是收费服务 Nginx Plus 的广告,大家可以略过。
译者注。
Nginx Plus 和 Nginx 可能是负载均衡领域中最好的解决方案,它被许多高访问量的网站所使用,比如 Dropbox、Netflix 和 Zynga。全世界超过358万个网站,包括10万个最繁忙的主流网站,都可依靠着 Nginx Plus 和 Nginx 来快速、可靠、安全地传送着他们的内容。
作为一个基于软件的负载均衡器,Nginx Plus 和那些基于硬件的解决方案功能相仿,但是价格却便宜的多。Nginx Plus 中全面的七层负载均衡功能完全能够帮助你建设一个高度优化的应用传送网络。
当你将 Nginx Plus 作为一个七层负载均衡器置于你的网站或应用之前时,你就已经提高了你网站和应用的效率、可靠性和性能。 Nginx Plus 帮助你同时最大化用户满意度和你 IT 投资的回报。
翻译By 田同学
希望对您的工作学习有所帮助,谢谢。