负载均衡的种类
我们在前文中对负载均衡做了一些简单的介绍,本文继续来介绍一下负载均衡的种类。
我们应该都听说过OSI的七层网络协议以及其对应的TCP/IP四层模型。详细的介绍可以见下图,那么负载均衡一般会在哪一层发生呢?一般来说我们可以把负载均衡按照发生的层次分为第四层负载均衡和第七层负载均衡。
第四层负载均衡
顾名思义,第四层负载均衡就是发生在OSI第四层也就是传输层上的负载均衡。从上图中我们可以看到,这一层能看到的协议就是TCP和UDP,所以这一层的负载均衡就是基于TCP以及UDP的协议来管理相关的传输信息。它看不到传输的具体内容,也就是说你的请求是什么media类型,什么规则它统统不知道,也就不能基于这些内容来进行传输的管理。所以我们认为它就是简单的包层面的负载均衡。
第四层负载均衡在早期服务器性能不是很强大的时候很流行,因为它对CPU、memory的性能要求相比第七层负载均衡要小很多。而随着如今服务器性能越来越强大,第四层负载均衡相比第七层在这方面的优势已经越来越小了。
第七层负载均衡
第七层负载均衡其实严格意义上来说并不是对应到OSI的第七层,它更多的像是对应到TCP/IP中的应用层。在这一层,它可以看到很多的内容,就比如常见的HTTP协议,它可以基于其中的内容(比如URL或者cookie等等)来进行请求的分发。
相比于第四层的负载均衡,第七层负载均衡对CPU的要求要更高一点,但是还没有到达能够影响性能的地步。而因为其能获取的有效信息更多,所以它所能做的负载均衡相比于第四层要更加灵活和有效。
除了简单的请求转发,这一层的负载均衡可以做更多的事情,比如说可以做解密也就是说假如后面的服务器都是内容同一个数据库中心的话,可能不需要再进行严格的加密和解密操作,这样也可以让被选择的服务器可以更高效地被用来执行对应的操作。
另外这一层负载均衡的一个比较典型的场景就是可以根据对应的用户端会话信息来把同样的请求发送到同一个服务器。通常来说用户端都会有一个会话信息保存在本地浏览器中,所以会希望同样的会话能尽可能的访问同样的服务器,这样一来相应的性能会比访问不同服务器来得更好(有些网页可能会因为访问不同服务器而发生错误)。这也就要求我们的负载均衡可以识别相应的信息,并把它们发送到同样的服务器。而这也只能在第七层负载均衡中实现。
Recent Comments