天天看点

java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制

作者:猿之生活JAVA技术学堂

创作不易,关注、点赞,分享,转发,评论,收藏,掌握互联网前沿知识,支持一下,谢谢。

java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制

一文读懂容错机制

容错背景

随着分布式、微服务在项目中快速应用,高可用、分布式下各个服务之间的通讯,是具备依赖关系,服务的稳定是公司可持续发展的重要基石,如果某一台服务器出现故障,就很容易因为依赖关系而发生大规模故障,为了解决这样的问题,所以有了容错的概念。

java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制

容错机制包含了很多处理错误的机制。

  1. 熔断机制;
  2. 降级机制;
  3. 补偿机制;
  4. 隔断机制等等

为什么要使用熔断和降级

在一个分布式系统架构中,一个服务依赖多个服务,可能存在某个应用服务调用失败,比如超时、异常等,需要保证在一个依赖出问题的情况下,不会导致整体系统服务失败,造成雪崩。

常见容错机制:failover ,failsafe,failfase ,failback,forking。

  1. Failover 失败自动切换
  2. Failfast 快速失败
  3. Failsafe 失败安全
  4. Failback 失败自动恢复
  5. Forking 并行调用多个服务器
  6. Broadcast广播调用

常见容错方案

  1. 超时:超时放弃
  2. 限流:在保证服务可用的情况下限制流量
  3. 舱壁模式:舱壁模式(Bulkhead)隔离了每个工作负载或服务的关键资源。这种模式主要是通过防止由一个服务引起的级联故障来增加系统的弹性。
java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制

隔离设计重点

1、定义好需要隔离业务的大小和粒度

2、隔离模式需要配置一些高可用、重试、异步、消息中间件等使用

3、设计过程考虑运维层次的复杂度

4、监控系统

  1. 断路器模式 :断路器模式是软件开发中用于容错处理的最经典模式,它可以监控API方法在一定时间内的错误率、错误次数,一旦达到设定的阈值就跳闸,对方法进行熔断。
java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制

熔断就是某个服务发生不断地调用响应超时的时候,就关掉这个服务,短路这个服务,默认让服务搞一个默认值。

熔断的作用

保护链路,防止雪崩的发生

降级本质

解决资源不足和访问量增加的矛盾

熔断机制为3种状态

  1. 关闭(closed)
  2. 打开(open)
  3. 半开(half-open)

Spring Cloud Circuit Breaker 是一个集成性的框架,内部整合了 Netflix Hystrix、Resilience4j、Sentinel 和 Spring Retry 这是四款独立的熔断器组件。

熔断器的设计重点

1、错误的类型

2、测试服务是否可用

3、并发问题

4、手动重制

5、资源分区

6、监控系统

补偿机制

本质上是解决ACID和BASE理论而设计的一个机制。

一个好的补偿机制要做以下几个方面:

1. 要知道这个机制执行后要达到什么状态

2. 当补偿机制的代码运行起来,可以进行并行或串行

3. 对完成的事务进行修改,或加一个修改事务

补偿设计重点

1、因为补偿机制是为了努力执行一个业务流程

2、接口支持幂等性,有重试机制

3、如果业务流程有问题,一定要帮我们回滚和补偿

4、针对不同业务考虑对应不同的解决方案

sentinel的使用可以分为两个部分

  1. 核心库不依赖任何框架/库
  2. 控制台主要负责管理推送规则、监控、集群限流分配管理、机器发现等。
java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制
java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制

总结

java程序员必知必会的微服务容错与隔离,产品经理必读懂容错机制