mirror of
https://github.com/doocs/advanced-java.git
synced 2024-12-26 04:00:08 +08:00
feat: update dubbo-load-balancing
This commit is contained in:
parent
a38ffd0ccd
commit
ffb727bbf2
@ -1,4 +1,5 @@
|
||||
## 面试题
|
||||
|
||||
dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
|
||||
|
||||
## 面试官心理分析
|
||||
@ -7,10 +8,10 @@ dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略
|
||||
|
||||
说白了,就是看你对 dubbo 熟悉不熟悉:
|
||||
|
||||
* dubbo 工作原理:服务注册、注册中心、消费者、代理通信、负载均衡;
|
||||
* 网络通信、序列化:dubbo 协议、长连接、NIO、hessian 序列化协议;
|
||||
* 负载均衡策略、集群容错策略、动态代理策略:dubbo 跑起来的时候一些功能是如何运转的?怎么做负载均衡?怎么做集群容错?怎么生成动态代理?
|
||||
* dubbo SPI 机制:你了解不了解 dubbo 的 SPI 机制?如何基于 SPI 机制对 dubbo 进行扩展?
|
||||
- dubbo 工作原理:服务注册、注册中心、消费者、代理通信、负载均衡;
|
||||
- 网络通信、序列化:dubbo 协议、长连接、NIO、hessian 序列化协议;
|
||||
- 负载均衡策略、集群容错策略、动态代理策略:dubbo 跑起来的时候一些功能是如何运转的?怎么做负载均衡?怎么做集群容错?怎么生成动态代理?
|
||||
- dubbo SPI 机制:你了解不了解 dubbo 的 SPI 机制?如何基于 SPI 机制对 dubbo 进行扩展?
|
||||
|
||||
## 面试题剖析
|
||||
|
||||
@ -20,6 +21,8 @@ dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略
|
||||
|
||||
默认情况下,dubbo 是 RandomLoadBalance ,即**随机**调用实现负载均衡,可以对 provider 不同实例**设置不同的权重**,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。
|
||||
|
||||
算法思想很简单。假设有一组服务器 servers = `[A, B, C]`,他们对应的权重为 weights = `[5, 3, 2]`,权重总和为 10。现在把这些权重值平铺在一维坐标值上,`[0, 5)` 区间属于服务器 A,`[5, 8)` 区间属于服务器 B,`[8, 10)` 区间属于服务器 C。接下来通过随机数生成器生成一个范围在 `[0, 10)` 之间的随机数,然后计算这个随机数会落到哪个区间上。比如数字 3 会落到服务器 A 对应的区间上,此时返回服务器 A 即可。权重越大的机器,在坐标轴上对应的区间范围就越大,因此随机数生成器生成的数字就会有更大的概率落到此区间内。只要随机数生成器产生的随机数分布性很好,在经过多次选择后,每个服务器被选中的次数比例接近其权重比例。比如,经过一万次选择后,服务器 A 被选中的次数大约为 5000 次,服务器 B 被选中的次数约为 3000 次,服务器 C 被选中的次数约为 2000 次。
|
||||
|
||||
#### RoundRobinLoadBalance
|
||||
|
||||
这个的话默认就是均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性能差的机器负载过高。所以此时需要调整权重,让性能差的机器承载权重小一些,流量少一些。
|
||||
@ -54,19 +57,19 @@ dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略
|
||||
|
||||
可以通过以下几种方式配置重试次数:
|
||||
|
||||
``` xml
|
||||
```xml
|
||||
<dubbo:service retries="2" />
|
||||
```
|
||||
|
||||
或者
|
||||
|
||||
``` xml
|
||||
```xml
|
||||
<dubbo:reference retries="2" />
|
||||
```
|
||||
|
||||
或者
|
||||
|
||||
``` xml
|
||||
```xml
|
||||
<dubbo:reference>
|
||||
<dubbo:method name="findFoo" retries="2" />
|
||||
</dubbo:reference>
|
||||
@ -82,13 +85,13 @@ dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略
|
||||
|
||||
配置示例如下:
|
||||
|
||||
``` xml
|
||||
```xml
|
||||
<dubbo:service cluster="failsafe" />
|
||||
```
|
||||
|
||||
或者
|
||||
|
||||
``` xml
|
||||
```xml
|
||||
<dubbo:reference cluster="failsafe" />
|
||||
```
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user