我在面试中被问到并且对下面问题的回答感到困惑。
如果说某个站点每秒获得500个请求,并且他们处理大量命中的机制是通过Load Balancer。
在上述情况下,所有请求将首先转到Load Balancer,然后Load Balancer负责将请求传递给实际服务器,该服务器将给出响应。
所以Load Balancer是所有请求的入口点,它也有一些处理请求的能力? 那么Load Balancer可以接受多少请求,如果它接受了一些限制,那么系统在这种情况下如何工作?
如果我的问题毫无意义,我很抱歉,请解释一下?
感谢。
答案 0 :(得分:2)
负载均衡器通常运行基于轻量级事件的HTTP服务器(例如NginX),该服务器为每个传入请求维护与后端服务器的连接。
一种流行的设置是:
NginX
| \
| \
Apache Apache ...
由于NginX可以处理更多连接并且具有相当可预测的内存使用模式,因此它通常可以用作多个Apache后端服务器的前端(运行PHP,Python,Ruby等)。
将Apache替换为Tomcat / Jetty / 在此处插入您喜欢的servlet容器,并应用相同的逻辑。
这里的要点是你的后端服务器通常会花费更多时间(运行一些脚本语言,查询数据库等),很可能每个后端服务器都没有被其HTTP服务器瓶颈组件,而不是应用程序逻辑。
对于这些问题,没有一种尺寸适合所有解决方案。另一个解决方案(在众多中),一旦你超过单个负载均衡器机器的容量,就可以在几个支持多个后端服务器的平衡器之间使用DNS循环。
答案 1 :(得分:0)
我想说如果连接数量上升到Load Balancer入口点的限制,那么您可以实现DNS级别平衡(如果在请求中使用了名称解析)。由于DNS解析负责在请求中切换相同名称的不同分辨率,并将这些请求发送到不同的负载均衡器或直接发送到不同的负载均衡器,因此每个请求将被驱动(例如“循环”)到不同的入口点。不同的服务器(后者,意味着不同的LB技术)。
但是对于负责平衡的服务器来说,每秒500个请求应该不是问题。 HAProxy可以毫无问题地处理数千个请求/秒,驱动不同服务器的不同会话,或者保持活动会话分布在不同的服务器中。
HAProxy是一种免费,非常快速和可靠的解决方案,提供高分辨率 TCP和基于HTTP的可用性,负载平衡和代理 应用。它特别适合爬行的网站 需要持久性或Layer7处理时非常高的负载。 支持成千上万的连接显然是现实的 今天的硬件。