这次咱们从根源聊:16招搞定高并发架构设计(17)
5、熔断
熔断可以说是也是自动降级的一种,是对客户端的保护。
现在微服务的架构,一个客户端可能会依赖几十个其它的服务,有任何一个位于同步调用的外部服务出现超时,即使客户端的ReadTimeOut设置的时间不长也对客户端是很大的压力和负担。
(这么多线程干等着,当然了全异步的服务不需要考虑这个问题,互联网来大部分请求最终还是同步的HTTP,Web层总是需要等待的,很难像游戏服务器做到长连接的全异步处理。)
所以在外部服务遇到问题的时候要自动进行熔断,在外部服务恢复后尝试半恢复,最后完全恢复访问,一般来说有几种熔断策略:
根据请求失败率熔断,比如在一定时间内有一定百分比的请求是失败的,那么就开启熔断根据响应时间熔断,比如一定时间内的请求平均响应时间超过N秒则开启熔断一般而言需要在代码里去写熔断后的Callback,由回调函数提供熔断后返回的临时数据或者直接出异常不允许请求继续进行下去。至于选择临时数据还是出异常还是取决于实际的业务,对于某些情况熔断后返回一个不合理的临时数据往往是不可以接受的。
推荐阅读
- lpl|海外热议:尽管LPL获胜了,但这次的S赛是韩国选手最多的一次
- 手机游戏|梦幻西游手游:听说你想要豪宅?这次满足了!新版本上线前庭后院
- 电子竞技|LOL、王者、吃鸡在列!杭州亚运会电竞项目公布:这次计入奖牌
- 张大仙|XYG晋级S组卡位赛,命运逆袭堪比电竞爽文,张大仙这次放心了
- 穿越火线|CF:传说大炮即将上线,这次的“传说BUFF”不可小觑
- 赛博朋克2077|《赛博朋克2077》又又又一次延期 这次是免费DLC
- pc端卡牌类|哈利波特:官方再出隐藏成就,这次不是靠运气,而是靠“计谋”
- 旭旭宝宝|DNF:2+2=0?旭旭宝宝再次对“玉玺”发出挑战,这次又亏了10w
- 魔兽世界|魔兽世界:赛季服开放时间已经确定,不知道这次人气到底如何?
- 小游戏|三国杀:新小游戏“抽签乐”登场,这次线下也能玩!