微服务为什么要限流、熔断、如何做

为什么要做限流


微服务某个接口请求量激增,如果不做限制,会引起:
1、处理变慢,tps下降,并引起微服务上其他接口性能下降,开始恶性循环。
2、资源(cpu、内存、连接数、线程数等)耗尽,整个微服务节点拒绝服务。

限流怎么做


限流一般在服务的提供方进行限流。针对不同场景,可以做:
全局限流:保证服务器整体性能。
单调用方限流:保证单调用方出现大量调用时,不影响其他调用方。
单一接口限流:保证某个接口出现大量调用时,不影响服务的其他接口。

接口参数限流:根据请求中的特征进行分组,典型场景如租户级限流。

限流可以是中心化控制,也可以节点自己控制,现在一般微服务框架本身就具备了负载均衡能力,所以在单机做流控也具备可行性。
通过统计一定时间内的调用量,当超过预置的值时,降级或快速失败,避免出现资源消耗。
当进入下一个统计区间时候,恢复限流。

为什么要做熔断

某个节点出现故障,无法再次处理请求,会引起:
调用到该节点的业务无法正常完成。

某个节点因为故障或者收到了异常的请求(比如耗时的炸弹请求),导致响应变慢,会引起:
1、处理变慢,tps下降,并引起微服务上其他接口性能下降,开始恶性循环
2、资源(cpu、内存、连接数、线程数等)耗尽,整个微服务节点拒绝服务

此外,对应调用链下游某个节点响应变慢,会引起:
1、该次请求调用链上游所有节点的响应变慢。
2、调用链上游所有节点资源不释放,上游节点tps下降、甚至拒绝服务。
3、上游节点的上游节点产生级联雪崩。


熔断怎么做


熔断在调用方和被调方都可以做。
被调用方做熔断,是为了防止一个接口出现故障,不影响服务其他接口的可用性,以及对故障使用降级方案。
调用方做熔断,是为了隔离故障节点、防止雪崩,或者走调用方降级逻辑。

一般熔断触发是通过判断请求的成功率和耗时来判断。
熔断之后就触发降级或者快速失败。
当熔断一定时间后,会定时尝试放一部分请求,如果成功率和耗时恢复就取消熔断。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值