从0开始学微服务
胡忠想
微博技术专家
立即订阅
16289 人已学习
课程目录
已完结 42 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 微服务,从放弃到入门
免费
模块一 入门微服务 (10讲)
01 | 到底什么是微服务?
02 | 从单体应用走向服务化
03 | 初探微服务架构
04 | 如何发布和引用服务?
05 | 如何注册和发现服务?
06 | 如何实现RPC远程服务调用?
07 | 如何监控微服务调用?
08 | 如何追踪微服务调用?
09 | 微服务治理的手段有哪些?
10 | Dubbo框架里的微服务组件
模块二 落地微服务 (14讲)
11 | 服务发布和引用的实践
12 | 如何将注册中心落地?
13 | 开源服务注册中心如何选型?
14 | 开源RPC框架如何选型?
15 | 如何搭建一个可靠的监控系统?
16 | 如何搭建一套适合你的服务追踪系统?
17 | 如何识别服务节点是否存活?
18 | 如何使用负载均衡算法?
19 | 如何使用服务路由?
20 | 服务端出现故障时该如何应对?
21 | 服务调用失败时有哪些处理手段?
22 | 如何管理服务配置?
23 | 如何搭建微服务治理平台?
24 | 微服务架构该如何落地?
模块三 进阶微服务 (8讲)
25 | 微服务为什么要容器化?
26 | 微服务容器化运维:镜像仓库和资源调度
27 | 微服务容器化运维:容器调度和服务编排
28 | 微服务容器化运维:微博容器运维平台DCP
29 | 微服务如何实现DevOps?
30 | 如何做好微服务容量规划?
31 | 微服务多机房部署实践
32 | 微服务混合云部署实践
模块四 展望微服务 (4讲)
33 | 下一代微服务架构Service Mesh
34 | Istio:Service Mesh的代表产品
35 | 微博Service Mesh实践之路(上)
36 | 微博Service Mesh实践之路(下)
阿忠伯的特别放送 (4讲)
阿忠伯的特别放送 | 答疑解惑01
阿忠伯的特别放送 | 答疑解惑02
微博技术解密(上) | 微博信息流是如何实现的?
微博技术解密(下)| 微博存储的那些事儿
结束语 (1讲)
结束语 | 微服务,从入门到精通
从0开始学微服务
登录|注册

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

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

常见的负载均衡算法

1. 随机算法
随机算法,顾名思义就是从可用的服务节点中,随机挑选一个节点来访问。
在实现时,随机算法通常是通过生成一个随机数来实现,比如服务有 10 个节点,那么就每一次生成一个 1~10 之间的随机数,假设生成的是 2,那么就访问编号为 2 的节点。
采用随机算法,在节点数量足够多,并且访问量比较大的情况下,各个节点被访问的概率是基本相同的。一个随机算法的代码实现,可以参考这个示例
2. 轮询算法
轮询算法,顾名思义就是按照固定的顺序,把可用的服务节点,挨个访问一次。
在实现时,轮询算法通常是把所有可用节点放到一个数组里,然后按照数组编号,挨个访问。比如服务有 10 个节点,放到数组里就是一个大小为 10 的数组,这样的话就可以从序号为 0 的节点开始访问,访问后序号自动加 1,下一次就会访问序号为 1 的节点,以此类推。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学微服务》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

  • 波波安
    1、f5一般用在四层负载,软负载一般用在七层负载
    2、f5性能和功能都很强大,但是设备价格昂贵。软负载成本低,而且可以横向扩展,功能可定制化开发,更加灵活。
    2018-10-14
    13
  • 正是那朵玫瑰
    老师有几个疑问?
    最少活跃连接算法:客户端是怎么知道提供者有多少连接呢?
    自适应最优选择算法:性能好坏是根据提供的响应时间抽样统计吗?还是要提供者提供相应的接口给客户端调用来同统计?
    2018-10-11
    7
  • 阿恺
    在加权轮询算法中,通过一个随机数去访问生成序列,就不需要考虑生成序列的顺序是否合理的问题。

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

    2018-10-02
    1
    3
  • Alayang
    最少活跃连接之前老师说过,每一次来一个请求就会+1, 请求完返回就会-1,白学了,二楼
    2019-04-01
    2
  • arebya
    “在实际设定时,可以设置 20% 性能较差的节点权重为 3,其余节点权重为 5”
    这个有什么依据吗?

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

    2018-10-10
    2
  • godtrue
    原理讲的通俗易懂,赞👍,具体咋实现自己玩吧!
    软硬件的负载均衡都没直接实现过,推测硬件性能更好价格更高比较硬不灵活。
    2019-06-15
    1
  • lwt
    自适应最优算法中,是通过哪些指标去衡量服务提供者当前的性能的呢?
    2018-10-08
    1
  • A星空之夜
    motan中有对自适应最优选择算法的支持吗

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

    2018-10-03
    1
  • 亚林
    软负载便宜,F5太贵
    2019-05-30
  • 妥协
    最小活跃链接算法是依赖,客户端和服务端通过短链接通信吧。但是短链接的要频繁的建立和断开链接,为何不用长链接?
    2019-03-18
  • 木木木
    F5应用在网络的三层(网络层),可通过ip重写来实现负载均衡,优势是应用逻辑无关性,性能超高。缺点就是贵,而且没法订制,因为对传输层和应用层都不了解,没法根据特定应用比如url做负载均衡。
    软负载一般工作在四层或七层,haproxy或niginx,优势是可定制性强,成本低。
    2019-02-12
  • 笑忘日月星辰
    加权轮询例子中,如果要尽可能保证生产的序列的均匀,序列设置为{a、a、b、c、b、a},在第7次访问开始,又从a开始,这样第6,7,8三次访问的节点都是a,也会造成节点访问失衡吧,如果设计为{a、b、a、b、a、c},更能保证序列的均匀吧,古月老师?



    2018-12-25
  • CYoung
    受教,不咋懂,理论都还好理解,怎么实现嘞
    2018-11-30
    1
  • wenxueliu
    让客户端实现负载均衡策略,难道新浪就是这么玩的?

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

    2018-10-29
收起评论
14
返回
顶部