Dubbo

【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】

4 Dubbo 高级特性


文章目录

  • Dubbo
  • 4 Dubbo 高级特性
  • 4.2 Dubbo 常用高级配置
  • 4.2.6 负载均衡


4.2 Dubbo 常用高级配置
4.2.6 负载均衡

【举个栗子】

Dubbo random权重 dubbo权重配置_权重

现在 同一个服务 提供者,我们把它 部署在了 1、2、3 三台 机器上

现在来了 一个服务消费者

Dubbo random权重 dubbo权重配置_权重_02

所以现在 来了一个请求后,访问 哪台机器呢?【这时候 就需要一个 负载均衡的策略 来实现 “选择”】

负载均衡策略(4种) :

  • Random :按权重随机,默认值。按权重设置随机概率。
  • RoundRobin :按权重轮询

给每个机器 都设置一个权重

Dubbo random权重 dubbo权重配置_Dubbo random权重_03

在权重 都相等的情况下, 来了个 请求,访问几率是相等的 ,都是 33.3…%

Dubbo random权重 dubbo权重配置_负载均衡_04

如果 2 号 机器性能好,我就可以给它设置 一个更大的 权重,这样 它就有 50% 的概率 接收处理请求

【这就是 Random 策略】

【试试】

Dubbo random权重 dubbo权重配置_Dubbo random权重_05

OK, 这样直接启动,让它 成为 机器 1

看看Dubbo 控制台

Dubbo random权重 dubbo权重配置_java_06

OK,没毛病

现在 如果还是直接启动 当成 机器2 的话,就会有很多 处 地方 都会出现冲突

所以需要修改

Dubbo random权重 dubbo权重配置_dubbo_07

这是 2 号 机器的权重 和输出

pom 文件中

Dubbo random权重 dubbo权重配置_java_08

让它跑在 9002 端口

并且 修改一下 “ 提供者那个 默认 为 20880 ”的 端口

Dubbo random权重 dubbo权重配置_java_09

OK,

还有一个qos.port,就是之前我们 看到 那个 22222 的

Dubbo random权重 dubbo权重配置_权重_10

OK,让机器2 用 44444

OK,现在 直接让 它跑起来

Dubbo random权重 dubbo权重配置_权重_11

Dubbo random权重 dubbo权重配置_java_12

OK,没问题,

查看Dubbo 控制台

Dubbo random权重 dubbo权重配置_dubbo_13

同理,再来一个机器 3

权重和 输出

Dubbo random权重 dubbo权重配置_java_14

几个端口

Dubbo random权重 dubbo权重配置_负载均衡_15

OK,直接跑起来

Dubbo random权重 dubbo权重配置_权重_16

查看Dubbo 控制台

Dubbo random权重 dubbo权重配置_java_17

没毛病

【在调用 方 配置负载均衡】

Dubbo random权重 dubbo权重配置_java_18

其实默认也是 random

重启web 服务

Dubbo random权重 dubbo权重配置_java_19

OK

访问测试

Dubbo random权重 dubbo权重配置_java_20

居然走了 1,可恶,【就是随机 的,只要有概率 ,一切皆有可能】

【这就是 Random】

还有一种 RoundRobin :按权重轮询

轮询:“挨个儿来 ”

试试。

Dubbo random权重 dubbo权重配置_java_21

Dubbo random权重 dubbo权重配置_负载均衡_22

重启web 服务,访问 测试

Dubbo random权重 dubbo权重配置_负载均衡_23

可以看到这个顺序是满足 权重轮询原理 的

  • 加权轮询 (Weighted Round Robbin) 为轮询中的每台服务器附加一定权重的算法。比如服务器 1 权重 1,服务器 2 权重 2,服务器 3 权重 3,则顺序为 1-2-2-3-3-3-1-2-2-3-3-3- …

【LeastActive:最少活跃调用数,相同活跃数的随机。】

记录每个服务器处理一次请求的时间

按照时间比例来分配任务数,运行一次需要时间多的分配的请求数较少

Dubbo random权重 dubbo权重配置_java_24

【ConsistentHash:一致性 Hash,相同参数的请求总是发到同一提供者。】

Dubbo random权重 dubbo权重配置_权重_25

这个很像 Redis 里面的 插槽

【这就是 四种 负载均衡的策略】