zoukankan      html  css  js  c++  java
  • 常见的负载均衡策略

    轮询(Round Robin)

    轮询的实现方式比较简单,就是将请求以此分发到后端服务器中,将所有的请求均匀分配,均匀分配的坏处是通常后台服务器性能有差异,有时候希望性能较好的服务器可以多承担些请求,该策略无法满足需求。这个不适合对长连接和命中率有要求的场景。

    加强轮询(Weighted Round Robin)

    这种策略是对轮询策略的优化,对每个后端服务器设置一个权重值,根据权重值决定请求的分配比例,这种做法解决了轮询策略的不足,但是该权限值需要手动配置,没有办法自动动态调节,同样不适合对长连接和命中率有要求的场景。

    hash算法

    通过ip url等信息计算hash值,然后对服务器的数量取模,相同的请求会请求到同一个后端服务器中。该算法无法解决热点请求,会把某个时间段的热点请求路由到某个单机上,造成雪崩效应,同时在扩中和节点宕机时发生命中率急剧降低的问题(hash算法导致),该策略适合维护长连接和提高命中率。

    随机Random

    根据随机算法,将请求随机分配到后端服务器中,请求的均匀请求依赖于随机算法,该实现方式较为简单,常常可以配合处理一些极端的请求,例如热点请求情况。不适合对命中率有要求的场景。

    一致性hash算法

    对hash 算法的优化,可以有效的解决宕机和扩充造成的命中率急剧降低的问题。

    最小连接数 Least Connection

    通过活动来估计后端服务器的负载,把请求分配给活动连接数最小的后端服务器,算法比较智能,但是需要额外的资源维护后端服务器的连接列表。

    加权最小连接数 Weighted Least Connection

    对Least Connection策略的优化,通过加权的方式优化Least Connection的性能,对性能较好的后端服务器设置较高的权重,承担更多的链接负载。

    最短响应时间 Least Response Time

    该策略的意思就是将请求分配给平均响应时间最短的后端服务器,平均时间可以通过ping或者正常的响应时间来获取 。

    可以总结为,轮巡、随机、权重、并发量


    后面会逐一对各个常见的负载均衡策略的实现做介绍。

  • 相关阅读:
    ajax post 数组
    Hello 2018 ABC
    A. The Way to Home
    Codeforces Round #453 (Div. 2) ABC
    Codeforces Round #452 (Div. 2) D
    Codeforces Round #452 (Div. 2) ABC
    Python 常用技巧
    Codeforces Round #451 (Div. 2) E
    Codeforces Round #451 (Div. 2) D. Alarm Clock
    Codeforces Round #451 (Div. 2) ABC
  • 原文地址:https://www.cnblogs.com/huangwentian/p/14698413.html
Copyright © 2011-2022 走看看