扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
早期的方法是以DNS为负载,为客户端解析不同的IP地址,让客户端的流量可以直达各个服务器。但是这种方法有一个很大的缺点,就是延迟问题。调度策略改变后,DNS各级节点的缓存不会及时在客户端生效,DNS负载的调度策略也比较简单,无法满足业务需求,于是出现了负载均衡。
客户端的流量会先到达负载均衡服务器,负载均衡服务器通过一定的调度算法将流量分配给不同的应用服务器。同时,负载均衡服务器还会定期对应用服务器进行健康检查,当发现有故障的节点时,会动态地将该节点从应用服务器集群中移除,从而保证应用的高可用性。
当一个Web系统从日访问量10万逐渐增长到1000万,甚至1亿以上,Web系统的压力会越来越大。在这个过程中,我们会遇到很多问题。为了解决这些性能压力带来的问题,我们需要在Web系统架构层面建立多级缓存机制。在不同的压力阶段,我们会遇到不同的问题,可以通过构建不同的服务和架构来解决。
Web负载平衡
[div][div]
Web负载均衡,简单来说就是给我们的服务器集群分配“工作任务”,采用合适的分配方式来保护后端Web服务器是非常重要的。
[div][div]
负载平衡策略;
[div][div]
1.HTTP重定向
[div][div]
当用户发送请求时,Web服务器通过修改HTTP响应头中的位置标签返回新的url,然后浏览器继续请求新的url,这实际上是页面重定向。通过重定向,可以达到“负载均衡”的目的。比如我们下载PHP源码包,点击下载链接,关键词排名很快。为了解决不同国家和地区的下载速度问题,它会返回一个离我们比较近的下载地址。重定向的HTTP返回码是302,如下图所示:
[div][div]
如果用PHP代码实现这个功能,方式如下:
这种重定向非常容易实现,并且可以定制各种策略。但在大规模流量下,其性能较差。而且用户体验不好,实际请求被重定向,增加了网络延迟。
[div][div]
2.反向代理负载平衡
[div][div]
反向代理服务的核心工作主要是转发HTTP请求,它扮演着浏览器和后台Web服务器的角色。因为它工作在HTTP层(应用层),也就是七层网络结构的第七层,所以也叫“七层负载均衡”。可以做反向代理的软件有很多,Nginx就是其中之一。
[div][div]
Nginx是一款非常灵活的反向代理软件,可以自由定制转发策略,分配服务器流量的权重。在反向代理中,一个常见的问题是Web服务器存储的会话数据,因为一般的负载平衡策略是随机分配请求。登录邹平网站优化技术目录的同一个用户的请求不能保证分配到同一个web机器上,会导致找不到会话的问题。
[div][div]
有两种主要的解决方案:
[div]
配置反向代理的转发规则,使同一用户的请求必须到达同一台机器上(通过分析cookie)。复杂的转发规则会消耗更多的CPU,增加代理服务器的负担。
[div][div]
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流