网站开发安全性分析,青浦区网站建设公司,东莞互联网推广,沈阳推广网站降级熔断限流
⭐⭐⭐⭐⭐⭐ Github主页#x1f449;https://github.com/A-BigTree 笔记仓库#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以#xff0c;麻烦各位看官顺手点…降级熔断限流
⭐⭐⭐⭐⭐⭐ Github主页https://github.com/A-BigTree 笔记仓库https://github.com/A-BigTree/tree-learning-notes 个人主页https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以麻烦各位看官顺手点个star~
如果文章对你有所帮助可以点赞收藏⭐支持一下博主~ 文章目录 降级熔断限流1 前言2 降级与熔断3 限流降级 1 前言
什么是熔断什么是降级熔断与降级是同一个意思吗 如上图所示服务A接收客户端请求服务B提供给内部服务调用每个服务部署的节点数至少两个。
在事发之前的近一周服务B都一直运行正常而事发的那晚请求量突增一倍显然此次事故与请求突增脱不了干系。因突增请求导致服务B高负荷运转超出临界点的请求最后超出设定的接口超时时间再由于服务B的一个隐藏性能问题导致内存消耗殆尽进程开始频繁GC但服务A还是不断地往服务B发送请求导致服务B奔溃服务B的奔溃又直接导致服务A崩溃这种产生连带效应的服务奔溃称为服务雪崩。
2 降级与熔断
分析完事故后我们再来说说熔断降级。熔断与降级不是一个概念但熔断却伴随着降级熔断在满足某种降级策略时触发所以熔断是降级方式的一种熔断是自动降级的一种实现。
做电商项目的朋友可能接触最多的就是服务降级一般我们在搞大促之前都会通过开关方式将一些无关紧要的业务接口变成“不可用”。例如通过配置中心或者通过Redis控制服务降级开关当开关打开时需要降级的接口直接响应一个表达当前服务降级的状态码给调用端。
控制服务降级开关的方式可以是人工也可以是定时任务在某个时段开启、某个时段关闭这种降级方式称为开关降级。开关降级与熔断降级都属于服务降级服务降级的目的都是确保服务以稳定状态运行防止服务奔溃的出现。
熔断指的是当服务A的下游服务B突然变得不可用或者不稳定时服务A可以自动切断与服务B的交互从而保证自己可用就像保险丝一样当电流异常升高到一定高度的时候保险丝切断电流这就是熔断。
熔断需要条件触发而这个触发条件就是我们设置的一种服务降级策略例如在每秒请求异常数超过多少时触发熔断、在每秒请求异常错误率超过多少时触发熔断、在每秒请求平均耗时超过多少时触发熔断。
熔断是切断请求快速失败在触发熔断时让服务A不再访问服务B但这不是永久的。以某个资源接口采取平均每秒请求异常数超出5个时熔断的策略为例假设当前时间窗口时间单位已经发生5个异常那么当前时间窗口内的后续请求都会被熔断但下一个时间窗口又会重新计算异常总数。
3 限流降级
服务降级除以上说到的开关降级和熔断降级外还有一种常用的服务降级方式限流降级。
限流是限制单位时间内处理的请求数拦截请求做降级处理。例如通过压测得到单个服务节点单位时间内所能处理的最大请求数使用该数值做为降级条件当并发处理的请求数超过这个数值时超出的部分请求降级处理。常见限流规则如按QPS限流、按最大并行使用线程数限流。
限流还可限制单位时间内发往一个服务集群的请求总数不能超过多少即对一个服务集群限流不过集群限流方式实现上比单机难度稍大需要统计单位时间内集群处理的请求数据信息。通常集群限流用于网关层由网关限制请求某个服务集群的请求数。