2

我想念第 7 层或第 4 层应用负载平衡的区别。其中之一更好吗?我如何决定哪个更适用于我的系统?

提前致谢 ...

4

2 回答 2

7

我想这可能是一个非常激烈的讨论,无论如何它与编程无关,但是......

它们之间的区别在于您在哪里(哪个OSI层)进行平衡。在我看来,你永远不应该只在第 7 层上进行平衡(那么你应该总是使用第 4 层)。

为什么?第 7 层负载平衡很好,因为您不需要任何特殊的硬件,它是在应用程序级别完成的,但是您为此付出了许多其他缺点:

  • 性能不太好:负载均衡器必须跟踪 cookie 和会话(在需要时),为此您需要更强大的硬件。正确的方法应该是让应用程序来妥善管理它。要覆盖这一点,您需要更强大的硬件。
  • 负载分布在服务器之间,但要实现真正的负载平衡并不容易。很多时候,它只是注入到 DNS 服务器中的东西,然后它不知道服务器有多忙(假设您有一个密集型操作和两个轻量级操作要分派到两台服务器,循环法可能会分配一个密集型和一个轻量级到同一台服务器时,最好可以将两个轻量级分配给同一台服务器)。
  • 它们根本不可扩展(它们必须管理您的应用程序应该管理的内容)并且会浪费大量资源。

为什么他们是好的?它们可能是修补不可扩展应用程序的快速、简单、肮脏的解决方案(对于第 4 层平衡,您的 ASP.NET 应用程序本身应该是可扩展的)。它们可能是临时问题的临时解决方案,而不是解决方案。在现实世界中,第 4 层负载平衡是首选(有时与第 7 层平衡混合,例如 Google 使用第一级循环 dns 负载平衡)。

阅读这篇关于负载平衡的非常好的文章:http: //1wt.eu/articles/2006_lb/index.html

我发现一些有趣的东西,在这里(关于第 7 层负载平衡的优点)他们说:

虽然用例仍然相当有限,但第 7 层负载平衡的这一功能确实为未来的使用开辟了许多可能性。随着这项技术的发展,我们将获得更智能地平衡其他类型流量的能力。

如果用例(这些优势)“仍然相当有限”并且我们必须等待“随着这项技术的发展”,那么我认为现在没有任何理由将任何负载平衡解决方案仅基于第 7 层(而且它真的很容易将来随时添加)。

于 2012-05-09T14:08:53.327 回答
3

第 4 层负载平衡器对网络和传输层协议(IP、TCP、FTP、UDP)中的数据进行操作。

第 7 层负载平衡器根据 HTTP 等应用层协议中的数据分发请求。它还可以根据特定数据(如 HTTP 标头、cookie 或 http 的特定参数内的数据)分发请求。

所以第 4 层负载均衡器是 tcp 负载均衡器,而第 7 层负载均衡器是 http 负载均衡器。

于 2014-08-12T11:33:45.353 回答