从 0 开始学微服务
胡忠想
微博技术专家
64643 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

18 | 如何使用负载均衡算法?

自适应最优选择算法
一致性hash算法
最少活跃连接算法
加权轮询算法
轮询算法
随机算法
自适应最优选择算法
一致性hash算法
最少活跃连接算法
加权轮询算法
轮询算法
随机算法
思考题
使用场景
负载均衡算法

该思维导图由 AI 生成,仅供参考

假设你订阅了一个别人的服务,从注册中心查询得到了这个服务的可用节点列表,而这个列表里包含了几十个节点,这个时候你该选择哪个节点发起调用呢?这就是今天我要给你讲解的关于客户端负载均衡算法的问题。
为什么要引入负载均衡算法呢?主要有两个原因:一个是要考虑调用的均匀性,也就是要让每个节点都接收到调用,发挥所有节点的作用;另一个是要考虑调用的性能,也就是哪个节点响应最快,优先调用哪个节点。
不同的负载均衡算法在这两个方面的考虑不同,下面我就来能给介绍常见的负载均衡算法及其应用场景

常见的负载均衡算法

1. 随机算法
随机算法,顾名思义就是从可用的服务节点中,随机挑选一个节点来访问。
在实现时,随机算法通常是通过生成一个随机数来实现,比如服务有 10 个节点,那么就每一次生成一个 1~10 之间的随机数,假设生成的是 2,那么就访问编号为 2 的节点。
采用随机算法,在节点数量足够多,并且访问量比较大的情况下,各个节点被访问的概率是基本相同的。一个随机算法的代码实现,可以参考这个示例
2. 轮询算法
轮询算法,顾名思义就是按照固定的顺序,把可用的服务节点,挨个访问一次。
在实现时,轮询算法通常是把所有可用节点放到一个数组里,然后按照数组编号,挨个访问。比如服务有 10 个节点,放到数组里就是一个大小为 10 的数组,这样的话就可以从序号为 0 的节点开始访问,访问后序号自动加 1,下一次就会访问序号为 1 的节点,以此类推。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

负载均衡算法在服务节点众多时起着关键作用,本文介绍了常见的负载均衡算法,包括随机算法、轮询算法、加权轮询算法、最少活跃连接算法和一致性hash算法,并分析了它们的应用场景。文章还提到了自适应最优选择算法,适用于服务节点数量众多、性能差异大、节点列表经常变化和复杂网络情况下的场景。这些算法在RPC调用和负载均衡组件中得到广泛应用,但需要根据具体业务场景选择合适的算法来实现负载均衡。文章还提到了硬件负载均衡器与软件层面的负载均衡算法的不同之处。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 魏颖琪
    在加权轮询算法中,通过一个随机数去访问生成序列,就不需要考虑生成序列的顺序是否合理的问题。

    作者回复: 那就不是轮询了吧

    2018-10-02
    4
    4
  • arebya
    “在实际设定时,可以设置 20% 性能较差的节点权重为 3,其余节点权重为 5” 这个有什么依据吗?

    作者回复: 经验判断,2/8原则,不一定严格按照这个设定

    2018-10-10
    3
  • A星空之夜
    motan中有对自适应最优选择算法的支持吗

    作者回复: 目前只在微博内部版本有使用,还没有对外开源

    2018-10-03
    1
  • xuanyuan
    让客户端实现负载均衡策略,难道新浪就是这么玩的?

    作者回复: java版本motan是这么实现的

    2018-10-29
  • 波波安
    1、f5一般用在四层负载,软负载一般用在七层负载 2、f5性能和功能都很强大,但是设备价格昂贵。软负载成本低,而且可以横向扩展,功能可定制化开发,更加灵活。
    2018-10-14
    29
  • 正是那朵玫瑰
    老师有几个疑问? 最少活跃连接算法:客户端是怎么知道提供者有多少连接呢? 自适应最优选择算法:性能好坏是根据提供的响应时间抽样统计吗?还是要提供者提供相应的接口给客户端调用来同统计?
    2018-10-11
    3
    11
  • Ellison
    最少活跃连接之前老师说过,每一次来一个请求就会+1, 请求完返回就会-1,白学了,二楼
    2019-04-01
    2
    9
  • 木木木
    F5应用在网络的三层(网络层),可通过ip重写来实现负载均衡,优势是应用逻辑无关性,性能超高。缺点就是贵,而且没法订制,因为对传输层和应用层都不了解,没法根据特定应用比如url做负载均衡。 软负载一般工作在四层或七层,haproxy或niginx,优势是可定制性强,成本低。
    2019-02-12
    5
  • lwt
    自适应最优算法中,是通过哪些指标去衡量服务提供者当前的性能的呢?
    2018-10-08
    4
  • 原理讲的通俗易懂,赞👍,具体咋实现自己玩吧! 软硬件的负载均衡都没直接实现过,推测硬件性能更好价格更高比较硬不灵活。
    2019-06-15
    1
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部