为了系统的可用性和可靠性,为了防止系统的整体缓慢甚至到崩溃,这里介绍三种技术手段应对微服务中的雪崩效应,这三种技术手段分别从系统可用性、可靠性角度出发,尽可能的防止系统出现雪崩现象

1、服务熔断

服务熔断机制是应对雪崩现象中微服务链路保护的一种机制

举例:高压电线,举这个例子最贴切,也特别容易理解,在高压电路中,如果某个地方的电压过高,熔断器(熔断保险丝)就会熔断,保证整个电路不会因为某个地方的电压过高导致整个电路崩溃,换句话说就是:没有熔断器呢,电压高会导致整个地区停电,如果有熔断器呢,电路会得到保障,会把断电的损失降到最低

在微服务架构中,熔断机制也跟上面例子中熔断保险丝有着差不多的作用,当扇出链路的某个服务不可用或者响应超时的时候,就会熔断该节点微服的调用,进行服务降级,快速返回错误的响应信息,当检测到该节点微服务调用响应正常后,会恢复调用链路

注意:

①服务熔断重点在于这个"断"字,在哪里切断什么服务,切断对下游服务的调用

②服务熔断和服务降级往往是一起使用的,Hystrix也是同理

2、服务降级

说得简单点就是:调用的资源不够了,要取舍,舍弃那些优先级和轻重级比较轻的服务,把这些服务先停掉,在调用的时候要给出一个兜底数据,否则难免会出现报错,毕竟调用关系还存在,等并发高峰过去之后,再人为的把对应的服务再打开即可

服务降级一般是从整体考虑,就是当某个服务熔断之后,服务器将不再被调用,此时的客户端可以自己准备一个本地的fallback回调,返回一个缺省值,这样,在调用的时候最起码还能够通,不至于直接挂掉报错

3、服务限流

其实服务限流是服务降级的增强,就是当服务出现问题的时候,服务降级是直接对现有逻辑进行人为干预,避免服务直接挂掉,但是有些场景,服务降级就不能满足或者直接不可以使用,比如秒杀活动,这种活动,你但凡降级,都会影响到数据的完整性,所以这个时候可以做限流操作,从客户端就开始做限流操作

限流的措施有很多种,比如:

①限制总并发数,比如规定数据库连接池、线程池

②限制瞬时并发数,比如nginx限制瞬时并发连接数

③限制时间窗口内的平均速率,比如Guava的RateLimiter、nginx的limit_req模块,限制每秒的请求平均速率

④限制远程接口调用速率、限制MQ的消费速率等

微服系列之雪崩效应的解决方案相关推荐

  1. 服务器雪崩效应及解决方案

    1. 服务器雪崩效应 ​ 在分布式系统中,由于网络原因或自身的原因,服务一般无法保证 100% 可用.如果一个服务出现了 问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条 ...

  2. 雪崩效应及其常见场景和解决方案

    一.什么是雪崩效应? 在分布式系统架构中,多个系统之间通常是通过远程 RPC 调用进行通信,也就是 A 系统调用 B 系统服务,B 系统调用 C 系统服务等(实现方式有 Spring Boot + D ...

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

    Spring Cloud Alibaba 雪崩效应和容错解决方案 文章目录 1. 雪崩效应 1.1. 举个例子: 2. 常见的容错方案: 2.1.超时: 2.2. 限流: 2.3. 仓壁模式: 2.3 ...

  4. 面试官:了解雪崩效应吗?了解Hystrix吗?怎么解决雪崩效应吗?(大型社死现场,教你运筹帷幄之中)

    上篇我们模拟了高并发场景下,系统资源被耗尽导致其他接口访问非常之慢.至此,这篇给出了五种解决方案(当然这个是次要的,主要还是理解原理) 上篇地址:https://blog.csdn.net/Kevin ...

  5. 谈谈redis缓存击穿透和缓存击穿的区别,雪崩效应

    谈谈redis缓存击穿透和缓存击穿的区别,雪崩效应 面试经历 在很长的一段时间里,我以为缓存击穿和缓存穿透是一个东西,直到最近去腾讯面试,面试官问我缓存击穿和穿透的区别:我回答它俩是一样的,面试官马上 ...

  6. 雪崩效应_玩雪崩! 在谷歌浏览器中

    雪崩效应 Everyone needs a few minutes to relax and unwind during the work day. For some people visiting ...

  7. JAVA物联所需技术_基于JAVA多线程技术解决物联云端服务雪崩效应的方法与流程...

    本发明涉及互联网技术领域,特别涉及一种基于JAVA多线程技术解决物联云端服务雪崩效应的方法. 背景技术: 目前,物联云系统已经作为普遍的智能电视平台出现在我们面前,而细致分析物联云系统我们可以发现,当 ...

  8. Redis缓存穿透,缓存击穿,缓存雪崩原因以及解决方案

    一.前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是 ...

  9. 后端服务的雪崩效应及解决思路

    北京大佬102小时讲完的Python,整整300集,通俗易懂,手把手带你一起学Python!_哔哩哔哩_bilibili 1.RPC与本地调用的区别 RPC远程调用,一般是跨平台.采用http协议,因 ...

最新文章

  1. 漫画:崩溃了!!这程序是什么玩意儿!!!
  2. 企业联合体的形式_鼓掌!费县新增6家市级农业产业化联合体
  3. 代理服务器之正向代理和反向代理
  4. React个Vue的对比
  5. 编译py-faster-rcnn的问题汇总及解决方法
  6. 基于用户的协同过滤算法
  7. ORA-00257:archiver error问题处理方法
  8. Hive jdbc执行seelct 语句时报 return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
  9. 高速计算机的应用领域概括,[其它课程]计算机基础教案第一篇第一、二章.doc
  10. 9 内存模型和名称空间
  11. AX2012/D365 批处理如何创建
  12. 【爱心2】JAVA表白代码——“LOVE“
  13. 零基础做一个微信答题小程序(一)
  14. nginx的网页压缩以及图片的压缩
  15. 升级mysql后zpanel无法进入_升级到mysql5.7无法启动问题解决
  16. mooc 恋爱 人格 职场学习笔记
  17. p9官方root,p9官方包198网盘分享
  18. Android MTK系统编译与调试命令
  19. java中二维数组的长度
  20. 【Earth Engine】基于GEE对季节性地物进行分类(多源数据叠图+监督分类)

热门文章

  1. 软件测试--应用JUnit进行单元测试
  2. 文本挖掘:twitter推特LDA主题情感分析
  3. 如何使用PSOC Creator?
  4. 1579: 【例 5】皇宫看守(最小支配集——贪心求解/树形DP)
  5. Codeforces-750D-New Year and Fireworks(bfs)
  6. luogu 1024
  7. 当有个电源电压太高时怎么给一个开关电源芯片供电?Rstart的计算方法
  8. SWUST OJ 594: Maximum Tape Utilization Ratio
  9. 爬虫实践-爬取转转网二手市场商品信息
  10. android glide图片框架,【Android 进阶】图片载入框架之Glide(示例代码)