nginx策略分为多个 但普通策略是有缺陷和重大风险的
目录
nginx 轮询策略
根据客户端的来访时间先后进行分发,是默认策略 # 要求各服务器的性能相当,且无法保证单调性
nginx权重策略:
针对服务器运行能力性能高低来区分 根据服务器的权重值尽量按比例分发 (权重越高,承担处理任务越多),且无法保证单调性
ip Hash (哈希算法) hash(ip)%n
# n为服务器数量 做除法求余,余数为几,就选择第几台服务器
情景:想要获得单调性,前期尽可能使用一台服务器处理同一个客户端的多次请求
当客户端第一次访问a服务器,产生一些类似seeion数据 ,b服务器没有此数据,会发生问题或者使用更多时间资源去获取相同数据。
#问题 当 n的数量出现增加或者宕机 , 会导致原有的映射关系大量失败,甚至完全无法正常使用
解决方式:一致性哈希算法
环形结构 客户端依然使用哈希算法算出值对应放在环形点上 ,把服务器也放在环形结构上,
那 客户端就会寻找它环状前面最近的服务器, 当一台服务器宕掉,后面客户端依旧会寻找最近的服务器,这样会出现均衡性问题
解决方式: 通过计算放置大量的虚拟服务器节点,使服务器的节点分布非常平均,但虚拟机不会分担分发
服务,所以会找到虚拟节点对应的真实服务器,完成分发 ,由于客户端的数量非常多,所以客户端的节点分布也是非常平均,最大的
保证了整个集群的均衡性。
总结
由于hash算法对于同一个客户端的运算结果必然是相同的,所以,最大化的保障了单调性原则;
由于使用了环形结构,所以在增加或减少服务器时,能尽可能的降低整个环形结构中客户端与服务器的映射关系发生改变导致的影响
,增加了集群的动态伸缩性,使得整个集群的容灾性更强