Spring Cloud Alibaba 雪崩效应和容错解决方案

文章目录

  • 1. 雪崩效应
    • 1.1. 举个例子:
  • 2. 常见的容错方案:
    • 2.1.超时:
    • 2.2. 限流:
    • 2.3. 仓壁模式:
    • 2.3.1. 现实中的仓壁模式:
    • 2.3.2. 软件中的仓壁模式:
    • 2.4. 断路器模式
      • 2.4.1. 现实中的断路器:
      • 2.4.2. 软件中的断路器:

1. 雪崩效应

微服务架构的系统包含很多微服务,微服务之间通过轻量级的通信机制进行通信,构建成了一个完成的应用系统。但是,每个微服务不能保证100%可用的,网络呢?有时也会出问题

1.1. 举个例子:

现在有一个高并发的应用系统它包含4个微服务,一开始每个微服务都是正常的,然后,在某一个时间点,微服务A突然挂了,所有的实例都挂了,而这是一个高并发的应用系统.

B服务还在分光的调用A服务的API呢,现在A服务挂了,现在B服务发往A服务的请求,就会强制等待 ,直到请求超时,而在java程序里面,一个请求呢,往往对应着一个线程,如果请求被强制等待,那么线程就会被强制阻塞,一直到请求超时的时候,这个线程才会被释放,由于,这是一个高并发的应用系统,阻塞的线程就会越来越多,而线程对应的服务器的计算资源,比方说内存、cpu,如果不作任何处理的话,终有一天B服务所在的服务器,再也无法创建新的线程了,于是B服务也挂了。

简言之,B服务是被A服务拖垮的,同样的道理,C服务和D服务调用B服务,C和D 也会被B服务拖垮,我们把基础服务故障导致上层服务故障,并且这个故障不断放大的过程,称之为雪崩效应,这样现象就像是滚雪球一样越滚越大,最后整个服务可能都挂了,在一些英文书里面常常把雪崩效应称之为cascading failure 级联失效 级联故障。

2. 常见的容错方案:

A服务挂了,B服务做好了容错,就不会被A服务拖垮。
业界常使用的使用这些容错方案,可以有效的避免雪崩效应

2.1.超时:

比如说为每一次请求设置超时时间,假若为1s,不管这次请求会不会成功,这个线程就会被释放,这样只要线程释放的速度够快,那么,B服务就不会被A服务拖垮了

2.2. 限流:

在一个高并发的应用系统中,采坑能存在大量的线程阻塞,如果我们经过评估,发现微服务B的实例最大能够承载的qps是1000,那么,我们就可以为微服务B设置一个限流的值,比方说是800qps,或者其他一个低于1000qps的阈值,这个时候,只要某一个实例达到这个阈值,再有流量进来,就直接拒绝,通过这种方式,也实现了对自己的保护,至少B服务不会被A服务拖到宕机。

2.3. 仓壁模式:

2.3.1. 现实中的仓壁模式:

泰坦尼克号,号称永不沉没的船,是基于技术而言的,用到了仓壁模式,一条船被划分了3个船舱,每个船舱之间,用2块钢板焊死,即使,某一个船舱进水也不会影响其他船舱,当时,泰坦尼克号的设计能够容纳2个主仓的进水船依然能够正常工作,所谓主仓就是中间两边两个比较大的仓。3个仓进水了,超出了泰坦尼克号的容错能力,于是,就悲剧了。

2.3.2. 软件中的仓壁模式:

AController 有自己独立的线程池,比方叫thread-pool-1 coreSize=10
调用其他API挂了,对于高并发的应用,这个线程池就满了,然后,去排队,再然后就直接拒绝了,线程池大家应该是很熟悉,线程池有自己的拒绝策略。
同理,BController 有自己独立的线程池,比方叫thread-pool-2 coreSize=10,
此时,AController 线程池满了或者拒绝了不会影响BController ,因为都有自己的线程池。
如果用船舱的例子类比的话,现在这2个Controller 就好比2个船舱,Controller 之间用2个独立的线程池焊死,AController 类中的API调不通,就相当于这个船仓进水了,那么,你的船舱进水和我的船舱没有关系,这就是仓壁模式。

2.4. 断路器模式

断路器是服务容错里面最高端的方案

2.4.1. 现实中的断路器:

每个人家里都有断路器,就是电闸。
断路器说白了就是监控加开关,它会实时监控电路的状态,但发现某段时间内,电流过大,他就认为电路短路了,然后就会跳闸,从而保护电路不被烧毁。

2.4.2. 软件中的断路器:

举个栗子:
比如说AController 中,调用API时,我监控5s以内的错误率、错误次数等等,如果错误率达到阈值又或者错误次数达到一定的阈值,我就认为调用的服务已经挂了,然后就跳闸,不去调用远程的api服务了。

正常状态下,断路器关闭

Spring Cloud Alibaba 雪崩效应和容错解决方案相关推荐

  1. Spring Cloud Alibaba 系统保护:微服务架构雪崩效应与服务限流

    前面我们介绍了 OpenFeign 微服务间通信与 Spring Cloud Gateway 网关通信,这些是日常业务中的正常处理情况,但是在微服务环境下受制于网络.机器性能.算法.程序各方面影响,运 ...

  2. Spring Cloud Alibaba一站式解决方案

    一.Spring Cloud Alibaba一站式解决方案 在springCloud的基础上延伸出来的微服务技术栈 为什么学习spring cloud alibaba? spring cloud多项组 ...

  3. Spring Cloud——Spring Cloud Alibaba 2021 Nacos Config bootstrap 配置文件失效解决方案

    基本概念 微服务是基于Spring Cloud框架搭建的,Spring Cloud Config作为服务配置中心. 业务服务只配置服务名称.启用环境和config的URL地址,其他都配置在配置中心,例 ...

  4. Spring Cloud Alibaba 新一代微服务解决方案

    本篇是「跟我学 Spring Cloud Alibaba」系列的第一篇, 每期文章会在公众号「架构进化论」进行首发更新,欢迎关注. 1.Spring Cloud Alibaba 是什么 Spring ...

  5. openfeign调用服务是否需要网关_阿里新一代微服务解决方案:Spring Cloud Alibaba

    1.Spring Cloud Alibaba 是什么 Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合. ...

  6. Spring Cloud Alibaba x AppActive 带来的全新异地活动解决方案

    01 新版本预览 Aliware 本次发布的 Spring Cloud Alibaba 2.2.9.RELEASE 和 2021.0.4.0 两个新版本,分别基于社区 2.2.x 和 2021.x 两 ...

  7. Spring Cloud Alibaba 解决方案 —— 学习示

    Spring Cloud Alibaba 解决方案 -- 学习示例代码 技术体系[知识点] 1.Nacos 服务注册和发现 2.Nacos 统一配置中心 3.熔断降级限流 sentinel 4.fei ...

  8. golang微服务框架对比_微服务里程碑,Golang与Spring Cloud Alibaba完美结合

    目前微服务架构仍是软件架构中最新的热门话题,虽然Golang是一门新的语言,但Golang的性能比python和java高出不少.既能承受程序使用运行的服务构建的繁重负载,又容易与GitHub集成,管 ...

  9. Spring Cloud Alibaba 微服务详细笔记

    文章目录 SpringCloud 一.微服务概述 1.1.什么是微服务? 1.2.为什么是微服务? 1.3.架构演变 1.4.微服务的解决方案 二.什么是SpringCloud 2.1.官方定义 2. ...

最新文章

  1. android 混淆打包教程,Android studio 混淆打包
  2. vue 非template模式_vue-template-compiler 还能这么用
  3. linux C++ 多线程使用pthread_cond 条件变量
  4. POJ 2799 IP Networks
  5. C++输入cin详解
  6. [渲染层错误] multipolyline.styles: 样式id_【译】关于 SPA,你需要掌握的 4 层
  7. 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序
  8. LeetCode 776. Split BST
  9. 同济大学高等数学第7版视频
  10. 百度地图--南京行政区域划分
  11. 超短波视距通信极限距离计算公式
  12. RL(Chapter 3): Finite Markov Decision Processes (有限马尔可夫决策过程)
  13. 什么叫组网_小米科普:一文看懂路由器上的 Mesh 组网是什么
  14. 旅游类网站的服务器配置,旅游各类 网站界面
  15. Costco市值10年增长5倍的秘诀:水坝式经营
  16. 用wifi实现细粒度的人体感知——Person-in-WiFi: Fine-grained Person Perception using WiFi
  17. 人类有多少可能移民火星?
  18. 什么是百度特效搜索?百度搜索什么有特效?---黑洞
  19. java ccf认证解答_CCF认证 java 中间数 遇到运行错误
  20. 计算机博弈 Negamax 负极值算法

热门文章

  1. 深度学习-自动并行计算
  2. PHP为什么empty可以访问不存在的索引
  3. C/C++语言函数学习(1):atexit、exit、return
  4. 数据结构实验之栈八:栈的基本操作
  5. 技术人生“白天求生存,晚上谋发展”
  6. 云原生时代的运维体系进化
  7. 阿里云边缘云ENS再升级 四大场景应用加速产业数字化落地
  8. AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…
  9. 勇攀监控高峰-EMonitor之根因分析 背景
  10. 如何将数据仓库从 AWS Redshift 迁移到阿里云 AnalyticDB for PostgreSQL