美文网首页
第四节 服务的降级、限流、熔断与灰度

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

作者: 农民工进城 | 来源:发表于2022-01-10 23:19 被阅读0次

本章要点

  • 服务降级设计
  • 服务限流/熔断设计
  • 服务灰度发布设计

1.服务降级设计

当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

目的:保证核心服务可用,非核心服务弱可用或甚至不可用
手段: 1)拒绝部分请求; 2)关闭部分服务

image.png

服务层面进行分级别,按照服务的重要性进行降级。

2.服务限流设计

限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源

常用的限流算法有两种:令牌桶算法和漏桶算法

2.1 令牌桶算法
  • 按照固定速率往桶中添加令牌;
  • 当桶满时,新添加的令牌被丢弃或拒绝;
  • 当请求来时,如果能够成功从桶里获取到令牌,则处理请求,否则拒绝处理请求
  • 当桶里没令牌时,不能再继续处理请求
    image.png
    Guava是google提供的java扩展类库,其中的限流工具类com.google.common.util.concurrent.RateLimiter采用的就是令牌桶算法
2.2 漏桶算法
  • 桶的容量是固定的
  • 按照常量固定速率流出水滴;
  • 以任意速率流入水滴到漏桶;
  • 如果桶满了,则直接丢弃


    image.png
2.3 限流应用
2.3.1 网关层限流
  • nginx+lua脚本
2.3.1 业务层限流
  • redis+lua
  • guava的RateLimiter
  • 业务网关(gateway)限流
  • sentinel限流

3.服务熔断设计

在分布式的环境或者微服务中,不可避免的会出现一些错误,一个服务的失败或许会导致整个项目的失败。熔断就是通过添加容错逻辑来保护或者控制你的分布式服务之间的交互,通过隔离服务之间的访问点,阻止它们之间的级联故障以及提供后备选项来实现这一目标,所有这些都可以提高系统的整体弹性。
限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源

熔断框架:Hystrix,Sentinel,Resilience4j等

4.服务发布

4.1 服务发布策略

发布策略:蓝绿发布、滚动发布、灰度发布

蓝绿发布

蓝绿发布:同时运行新旧两个版本的应用,当新版本服务出现问题时,切换到老版本服务。

  • 优点:升级切换和回退比发布回滚迅速。
  • 缺点:成本较高,需要部署两套环境。切换是全量切换,如果新版本中服务出现问题,会瞬间影响全网用户
滚动发布( Rolling Release )

滚动发布:在升级过程中,并不一下子启动所有新版本;而是分批次部署新版本应用,直到集群升级完成

  • 优点:出现问题不会影响全网用户,适合大规模应用发布
  • 缺点:发布和回滚周期较长
灰度发布(金丝雀发布)

灰度发布:是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用旧系统,一部分用户开始用新系统,如果用户对新系统没有什么反对意见,那么逐步扩大范围,流量逐渐迁移到新系统上来,把所有用户都迁移到新系统上来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

  • 优点:灵活,策略自定义,可以按照流量或具体的内容进行灰度(比如不同账号,不同参数),出现问题不会影响全网用户
  • 缺点:没有覆盖到所有的用户导致出现问题不好排查
4.2 灰度发布设计
image.png image.png

相关文章

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

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

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

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

  • 【GO】golang 降级|熔断|限流实战

    golang 降级|熔断|限流实战 前言 做为本文的前言,首先向读者介绍一下降级、熔断和限流的概念与关系。也许很多...

  • 服务限流

    保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流可是Nginx接入层面的限流,也可以是服务层面的限流。 ...

  • 微服务 11: Sentinel的微服务 限流与 熔断降级(文末

    1:微服务限流? 2:什么是熔断降级? 3:需要进行熔断的服务的Pom文件(consumer 或者 provid...

  • 限流算法

    前言 保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流包括Nginx层面的限流以及业务代码逻辑上的限流。...

  • 高可用思路

    1.开发设计层面冗余---主备,负载均衡,failover取舍----降级,限流,熔断,超时控制 2.运维层面灰度...

  • 服务的熔断、降级与限流

    1、引言 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单...

  • spring-cloud-gateway及其应用

    网关功能 流量转发 用户认证 服务限流 服务降级 灰度发布 1 概述 基于springboot和spring we...

  • spring-cloud限流降级熔断

    限流降级熔断确保服务高可用的必要手段,Spring Cloud Hystrix和Spring Cloud sent...

网友评论

      本文标题:第四节 服务的降级、限流、熔断与灰度

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