Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
晶之木
advanced-java
提交
ffb727bb
A
advanced-java
项目概览
晶之木
/
advanced-java
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
advanced-java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ffb727bb
编写于
9月 17, 2020
作者:
Y
yanglbme
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: update dubbo-load-balancing
上级
a38ffd0c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
9 deletion
+12
-9
docs/distributed-system/dubbo-load-balancing.md
docs/distributed-system/dubbo-load-balancing.md
+12
-9
未找到文件。
docs/distributed-system/dubbo-load-balancing.md
浏览文件 @
ffb727bb
## 面试题
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"
/>
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录