60 lines
2.3 KiB
Markdown
60 lines
2.3 KiB
Markdown
## 服务容错的基本概念
|
||
### 服务访问失败的原因
|
||
- 分布式固有特性 网络问题导致的间歇性的失败
|
||
- 服务自身失败 服务bug,修改
|
||
- 服务依赖失败 (会导致服务链路失败,雪崩效应)
|
||
|
||
#### 服务雪崩效应
|
||
- 服务A
|
||
- 服务B
|
||
- 服务C
|
||
- 服务D
|
||
- 服务E
|
||
- 上面提到的服务逐层依赖,当服务A不可用之后,服务B会不断重试,会导致自身资源耗尽,最后服务B也不可用;后面依赖服务B的那些服务也一样,这样会导致大量服务不可用,即雪崩效应。
|
||
- 解决办法,出现问题的服务,直接从集群中踢掉,避免雪崩的出现
|
||
#### 服务失败的解决思路
|
||
- 超时
|
||
- 如果服务未能在这个时间内响应,将回复一个失败消息
|
||
- 重试
|
||
- 为了降低网络瞬态异常所造成的网络通信问题,可以使用重试机制
|
||
|
||
#### 容错思想
|
||
- 集群容错
|
||
- 集群的建立已经满足冗余条件,而围绕如何进行重试就产生了集中常见的集群容错策略
|
||
- 集群容错
|
||
- 服务降级
|
||
- 对服务进行分级管理,必要时,关闭对不重要服务的访问入口,节省资源用于处理重要服务的请求
|
||
- 本地伪装和存根
|
||
|
||
## Dubbo集群容错
|
||
|
||
### 负载均衡基本概念
|
||
- 负载均衡的路由问题
|
||
- 分布式服务,在访问一个集群时,具体访问哪一个,的决策 --> 路由
|
||
- 负载均衡机制:
|
||
- Random:随机
|
||
- RoundRobin:轮询
|
||
- LeastActive: 最少活跃调用数
|
||
- ConsistentHash: 一致性Hash
|
||
### 容错机制
|
||
- Failover -- 失败转移;一个服务实例不可用,立即访问另一个服务实例,作为重试,会设置重试次数
|
||
- Failfast -- 直接抛异常,结束
|
||
- Failsafe -- 记录错误日志,退出,等查看日志,解决问题
|
||
- Failback -- 定时重试
|
||
- Forking --
|
||
- Broascast
|
||
|
||
### Dubbo容错策略使用方法
|
||
- cluster 配置项: 代表集群容错机制,可任选一种
|
||
- retries配置项: 重试次数,当调用发生失败时重新发起请求的次数
|
||
|
||
|
||
## 服务降级
|
||
- 本地伪装
|
||
- 当某个服务提供者全部失效后,客户端不抛出异常,而是通过Mock数据返回失败
|
||
- Mock类在服务消费者端配置
|
||
- 本地存根
|
||
- 服务的提供方也有在本地执行部分逻辑的场景 (例如原先校验参数,从而间接实现服务容错)
|
||
- Stub类在服务提供者端配置
|
||
|