再谈服务熔断、服务降级的差异性
来源:互联网 发布:跑腿软件哪个好 编辑:程序博客网 时间:2024/05/22 12:14
最近1年来一直在关注微服务方向的东西,有点走学院派的风格。
微服务是个神奇的东西,而它的特点就是“一解释就懂,一问就不知,一讨论就吵架”,今天我们要谈的是服务熔断、服务降级。
两者其实从有些角度看是有一定的类似性的:
- 目的很一致,都是从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃,采用的技术手段;
- 最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用;
- 粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改);
- 自治性要求很高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,开关预置、配置中心都是必要手段;
而两者的区别也是明显的:
- 触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;
- 管理目标的层次不太一样,熔断其实是一个框架级的处理,每个微服务都需要(无层级之分),而降级一般需要对业务有层级之分(比如降级一般是从最外围服务开始)
- 实现方式不太一样,这个区别后面会单独来说;
概念算是说完了,避免空谈,我再总结下对常用的实现方法的理解。对于这两个概念,号称支持的框架可不少,Hystrix当属其中的佼佼者。
先说说最裸的熔断器的设计思路,下面这张图大家应该不陌生(我只是参考着又画了画),简明扼要的给出了好的熔断器实现的状态机:
- Closed:熔断器关闭状态,调用失败次数积累,到了阈值(或一定比例)则启动熔断机制;
- Open:熔断器打开状态,此时对下游的调用都内部直接返回错误,不走网络,但设计了一个时钟选项,默认的时钟达到了一定时间(这个时间一般设置成平均故障处理时间,也就是MTTR),到了这个时间,进入半熔断状态;
- Half-Open:半熔断状态,允许定量的服务请求,如果调用都成功(或一定比例)则认为恢复了,关闭熔断器,否则认为还没好,又回到熔断器打开状态;
阅读全文
0 0
- 再谈服务熔断、服务降级的差异性
- 白话:服务降级与熔断的区别
- 服务降级与熔断的区别
- 谈谈我对服务熔断、服务降级的理解
- 谈谈我对服务熔断、服务降级的理解
- 谈谈我对服务熔断、服务降级的理解
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 服务熔断、降级、限流、异步RPC -- HyStrix
- 从Netflix的Hystrix框架理解服务熔断和服务降级
- 服务熔断
- 服务降级--服务降级的一点认识
- 服务降级
- 服务的升级和降级
- 关于dubbo的服务降级
- 服务降级背后的技术架构设计
- Spring09---spring整合JDBC_01_实现增删改查
- 【Top K 问题】[Leetcode-215] Kth Largest Element in an Array 数组中第K大的数
- Atitit 融资 之道 圈钱之道 attilax总结
- The current request is not a multipart request异常
- [PTA MOOC] Maximum Subsequence Sum(25 分)(也是浙大研究生机试的题)
- 再谈服务熔断、服务降级的差异性
- tmux-2.5.tar.gz 下载
- cfA. Odds and Ends
- 如何安装 Composer
- 学后端,一步一坑,遇坑就跳,跳完再爬---之mysql与mysql可视化工具
- js问题
- EasyMall第八天
- JavaScript关于表单脚本的一些实用技巧
- CodeForces 50 A.Domino piling(水~)