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