美文网首页我的微服务java架构设计专题
谈谈服务降级的设计与实现

谈谈服务降级的设计与实现

作者: 先生zeng | 来源:发表于2019-10-16 09:31 被阅读0次

定义概念

当整服务整体超出预设的上限阙值或即将到来的流量预计会超过预设阙值时,为了保证重要或基本的服务能正常运行,拒绝部分请求或者将一些不重要或不紧急的服务或任务进行服务的延迟使用或暂停使用。

降级更多是作为限流。

目的

image

避免系统雪崩和服务宕机。

目标

保证核心服务可用,非核心服务弱可用,甚至不可用。

image

服务降级的手段

1.拒绝部分请求

image

这里有几个问题解释一下:

为什么丢弃的是老请求?

因为app对应请求响应一般是1秒左右,如果超过一秒钟了,这时候,即使处理完了,返回给前端,这时候前端已经超时了,没有用。

按照优先级请求方式怎么实现?

在header中一般会有uuid、sessionid、cid、body。。。 其中可以使用cid来控制是否核心请求或者优先级 优先级的数据一般会放在配置中心的。

何时启用丢弃策略,一般真正开始的时候,会使用人工控制策略的优先级,然后使用人工开启优先级策略,有一个按钮开关。

每一个请求进来会先进入一个请求队列,每一个请求,都包含一些数据:入请求队列的时间,出队列的时间,可以求出一个请求在队列的停留时间。

2.关闭部分服务

这个就是把部分服务关闭就可以了。

层次

服务层架构层次

集中式(在网关层统一做(nginx)) X
    
    网关层  通过cmd
    
    网关层做,会有一个越来越小的漏洞,比如网关层能做500个请求,到业务逻辑层会变成300多
    个,到数据访问层会变成200个.还有如果用网关做降级,需要考虑业务逻辑层和数据访问层要
    做什么样的降级,网关层会存在耦合。

所以推荐使用以下

自治式(每一个各自做自己的)  
    网关层
    业务逻辑层
    数据访问层

水平分层架构如下


image

数据层做降级(参考新浪做法)

image

服务降级的策略

建议自动打开,不依赖于人工。要保证线上生效,可以做线下压测,看关键时刻服务降级能否打开。

相关文章

  • 谈谈服务降级的设计与实现

    定义概念 当整服务整体超出预设的上限阙值或即将到来的流量预计会超过预设阙值时,为了保证重要或基本的服务能正常运行,...

  • 3.5:服务降级设计

    本文将从以下三个方面阐述服务降级设计与实践 为什么要做服务降级 怎么做服务降级 深度思考 为什么要做服务降级 场景...

  • 第二章架构设计之技术实践篇(下)

    本章要点 分布式事务设计与实践 服务降级设计 服务限流/熔断设计 服务灰度发布设计 1.分布式事务设计与实践 分布...

  • 第四节 服务的降级、限流、熔断与灰度

    本章要点 服务降级设计 服务限流/熔断设计 服务灰度发布设计 1.服务降级设计 当服务器压力剧增的情况下,根据实际...

  • SpringCloud-hystrix实战02-服务降级

    什么是服务降级 服务降级处理实在客户端实现完成的,与服务端没有关系 我们可以思考一下,我们在做熔断处理的时候有这么...

  • 谈谈服务雪崩、降级与熔断

    引言 首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文。当然,考虑到目前大多微服...

  • 谈一谈限流算法的几种实现

    保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是N...

  • 服务降级设计与实践

    服务降级定义 当整个服务整体负载超出预设的上限阈值或即将到来的流量预计将会超过预设阈值时,为了保证重要或基本的服务...

  • SpringCloud之Hystrix、Gateway、Conf

    1. SpringCloud Hystrix(服务熔断与降级组件 / 服务容错与保护组件) 示例(服务端降级) 示...

  • 【dubbo源码】18. 服务消费方:集群容错之本地伪装mock

    本地伪装使用方式 如何在 Dubbo 中利用本地伪装实现服务降级 本地伪装通常用于服务降级,比如某验权服务,当服务...

网友评论

    本文标题:谈谈服务降级的设计与实现

    本文链接:https://www.haomeiwen.com/subject/zdrymctx.html