标题索引
追朔原因
反代原理
调度算法
算法评估
追朔原因
http调度算法有多种,在nginx、haproxy、apache、keepalive中等等都有相对应的算法,但是算法根本原理是不变的
反代原理
图解http协议中提到的端到端首部,“分到此类别中的首部会转发给请求/响应对应的最终接受目标,且必须保持在由缓存生成的响应中”(图解http协议83页)通过在varnish抓包分析可知,端到端的请求报头从http请求、到varni代理请求、组后到后端服务器收到请求,一直变化的时源目IP地址,请求头部的端到端时一直尚未发生变化的。
调度算法
加权调度调度算法:加权轮询调度算法为,后端服务器根据权重进行虚拟逻辑服务器,调度服务器使用URL或其他参数进行hash,将hash的数值对权重值之和进行取模计算,最后根据计算结果决定调度逻辑服务器计算节点,从而调度到物理真实服务器,具体可参考下图所示:
图1-1WRR调度算法图
根据上图举例说明,如反向代理服务器调度算法为WRR,若客户端访问URI为/mp4/fire.mp4,调度器接受到此URI并进行hash计算,计算结果对6(3+2+1)取模,取模结果可定为0、1、2、3、4、5,将URI请求调度到相对应的逻辑服务器,进而调度到真实物理服务器。
致命权限:在并发量较大的情况下,通常反向代理服务器先调度到后端varnish等缓存服务器,若其中一台缓存服务器异外宕机时,权重总和发生变化,取模结果发生变化,严重导致varnish等缓存服务器命中率大大降低,从而增加后端物理服务器的压力,若并发量极大的情况下有可能使得后端服务器无法承载众多流量而罢工。
如采用nginx做反向代理调度配置可参考如下方法:
如采用apache做反向代理调度可参考如下方法:
算法评估
建议采用的方案
本文转自 薛伟博 51CTO博客,原文链接:/weiboxue/1979612,如需转载请自行联系原作者