Dubbo
【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】
4 Dubbo 高级特性
文章目录
- Dubbo
- 4 Dubbo 高级特性
- 4.2 Dubbo 常用高级配置
- 4.2.6 负载均衡
4.2 Dubbo 常用高级配置
4.2.6 负载均衡
【举个栗子】
现在 同一个服务 提供者,我们把它 部署在了 1、2、3 三台 机器上
现在来了 一个服务消费者
所以现在 来了一个请求后,访问 哪台机器呢?【这时候 就需要一个 负载均衡的策略 来实现 “选择”】
负载均衡策略(4种) :
- Random :按权重随机,默认值。按权重设置随机概率。
- RoundRobin :按权重轮询
给每个机器 都设置一个权重
在权重 都相等的情况下, 来了个 请求,访问几率是相等的 ,都是 33.3…%
如果 2 号 机器性能好,我就可以给它设置 一个更大的 权重,这样 它就有 50% 的概率 接收处理请求
【这就是 Random 策略】
【试试】
OK, 这样直接启动,让它 成为 机器 1
看看Dubbo 控制台
OK,没毛病
现在 如果还是直接启动 当成 机器2 的话,就会有很多 处 地方 都会出现冲突
所以需要修改
这是 2 号 机器的权重 和输出
pom 文件中
让它跑在 9002 端口
并且 修改一下 “ 提供者那个 默认 为 20880 ”的 端口
OK,
还有一个qos.port,就是之前我们 看到 那个 22222 的
OK,让机器2 用 44444
OK,现在 直接让 它跑起来
OK,没问题,
查看Dubbo 控制台
同理,再来一个机器 3
权重和 输出
几个端口
OK,直接跑起来
查看Dubbo 控制台
没毛病
【在调用 方 配置负载均衡】
其实默认也是 random
重启web 服务
OK
访问测试
居然走了 1,可恶,【就是随机 的,只要有概率 ,一切皆有可能】
【这就是 Random】
还有一种 RoundRobin :按权重轮询
轮询:“挨个儿来 ”
试试。
重启web 服务,访问 测试
可以看到这个顺序是满足 权重轮询原理 的
- 加权轮询 (Weighted Round Robbin) 为轮询中的每台服务器附加一定权重的算法。比如服务器 1 权重 1,服务器 2 权重 2,服务器 3 权重 3,则顺序为 1-2-2-3-3-3-1-2-2-3-3-3- …
【LeastActive:最少活跃调用数,相同活跃数的随机。】
记录每个服务器处理一次请求的时间
按照时间比例来分配任务数,运行一次需要时间多的分配的请求数较少
【ConsistentHash:一致性 Hash,相同参数的请求总是发到同一提供者。】
这个很像 Redis 里面的 插槽
【这就是 四种 负载均衡的策略】