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

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

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

常见的负载均衡算法

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

全部留言(17)

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

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

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

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

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

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

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

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

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