• 负载均衡算法


    网上学习,以作记录

    1. 随机算法: 根据权重随机请求,如果请求量较大,可以实现请求均衡分布

    2. 权重轮询: 根据所有权重的公约数计算 轮流访问。如果权重大的机器处理较慢,会堆积大量请求

    3. 最少活跃数: 相当于服务处理请求的速度越快,其活跃数越小。 则说明该服务处理任务较快

    参考 https://blog.csdn.net/tjsahwj/article/details/82884410  

    4. hash 一致性算法 参考 https://www.jianshu.com/p/6f13156573f4

      1. 假设有3台机器: 

      2. 对每个请求进行hash(可以根据ip ,主机名等) ,然后对 3 求余数。得到0,1,2 分别对应请求上诉三台机器。

      3. 但是有一个问题: 如果有一台机器挂了,或者服务压力太大,我想加一台服务器。 那么算法就要修改(对2 或对4 求余数),那么原来这三台机器的缓存就无法和原来请求做映射了。违背了容错性和扩展性

      4.  假设我对每台服务器也进行hash, 然后放置在0 到 (2的32方-1) 的圆环上,每次请求使用同样的hash算法计算请求的hash值。然后对圆环顺时针找遇到的第一台服务器。

      5. 如何加机器或者减机器,都只会影响到离这台机器最近的那些请求。其他机器不会受影响。 

      6. 上述算法会出现一种问题: 如何很多请求的hash 值 都很小,那么这些请求都会落到 hash 值较小的那台服务器,导致后面的两台服务器没有实际分担到请求。

      7. 用虚拟节点解决上述问题: 所谓虚拟节点就是对服务器hash的时候加一些后缀(或其他),如A服务器ip#1...... A服务器ip#32 , 通常会很多,目的就是让圆环上的服务器足够多,使每个请求能均匀的发送到服务器上。

        比如dubbo的默认是160 。   

  • 相关阅读:
    线程池execute执行顺序
    三个线程交替打印1到100
    mysql优化
    最大回文子串
    AOP实现日志收集和记录
    LoadingCache缓存使用(LoadingCache)
    springboot项目在idea中实现热部署
    idea破解
    linux常用命令
    Oracle的分条件计数COUNT(我的条件),由浅入深
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/10361085.html
Copyright © 2020-2023  润新知