熔断、降级、限流

架构的基础有两点,一点是分层,一点是RPC。
衡量架构的一个重要指标就是健壮性和稳定性(也可以用来衡量人),这就需要考虑如果RPC失败了怎么办。
最坏的结果就是因为某个局部服务的失败,导致。
工程师们把现实世界中的熔断器,借鉴到了软件中,来解决这个问题。
一言以蔽之:当请求的失败率达到某个阈值的时候,熔断器就会打开,不会继续RPC,而是返回一个fallback。等过一段时间之后,再判断是关闭熔断器,还是继续打开。
有了熔断,就会有降级。就是当熔断器打开之后,客户端可以自己准备一个本地的fallback,返回一个缺省值。
这里介绍一个Hystrix熔断器的参数:requestVolumeThreshold,熔断器滑动窗口的大小,默认是20。如果在20个请求中,失败率达到阈值,熔断器就会打开。

无论是计算机世界,还是物理世界,存在一个基本矛盾:资源和消耗的矛盾。在多数时候,消耗是大于矛盾的,所以必须限制消耗。
对消耗的限制有两种:
1)限制总数,比如数据库的连接数
2)限制速率,比如秒杀中对流量的限制,常见的算法有令牌桶算法。Guava的RateLimiter

猜你喜欢

转载自blog.csdn.net/weixin_33888907/article/details/87144279