微服务常见的坑
- 现象1,服务A频繁调用服务B。将服务B打垮。
- 现象2,服务A接口依赖服务B、C、D的接口。由于服务C接口异常导致。导致整个接口异常。
- 现象3,服务A调用服务B。由于网络超时,服务A多次重试调用服务B的接口。导致脏数据。
- 现象4,由于服务A耦合了服务B、C、D接口。导致服务A接口负载能力低下
治理方案
查询场景
现象1: 下游接口对接口频繁调用导致接口异常
内部原因:
慢接口的请求qps过高打满应用线程池数。不能响应新的请求。
接口治理方案:
1. 线程隔离
2. 接口限流
现象2:接口调用多个上游服务接口,由于某个服务异常导致接口不可用
内部原因:
上游服务接口不稳定级联影响接口。
接口治理方案:
1. 服务降级
2. 服务熔断
更新场景
现象3:接口未实现幂等,导致多次调用出现脏数据。
内部原因:
对新增、更新类型的接口多次调用,由于未做幂等措施。将出现脏数据。
接口治理方案:
1. 对接口实现加锁
2. 唯一值判断。
现象4: 接口耦合多个上游接口,导致接口负载能力低下。
接口治理方案:
1. 对上游接口异步调用
2. 消息中间件异步解耦。