阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

什么是应用服务雪崩

雪崩问题

分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞,最终可能引发雪崩连锁效应。

缓存雪崩

当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力,造成数据库后端故障,从而引起应用服务器雪崩。


雪崩效应产生的几种场景

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案
  • 流量激增:比如异常流量、用户重试导致系统负载升高;
  • 缓存刷新:假设A为client端,B为Server端,假设A系统请求都流向B系统,请求超出了B系统的承载能力,就会造成B系统崩溃;
  • 程序有Bug:代码循环调用的逻辑问题,资源未释放引起的内存泄漏等问题;
  • 硬件故障:比如宕机,机房断电,光纤被挖断等。
  • 数据库严重瓶颈,比如:长事务、sql超时等。
  • 线程同步等待:系统间经常采用同步服务调用模式,核心服务和非核心服务共用一个线程池和消息队列。如果一个核心业务线程调用非核心线程,这个非核心线程交由第三方系统完成,当第三方系统本身出现问题,导致核心线程阻塞,一直处于等待状态,而进程间的调用是有超时限制的,最终这条线程将断掉,也可能引发雪崩;


缓存雪崩的解决方案

缓存失效的几种情况:

1、缓存服务器挂了

2、高峰期缓存局部失效

3、热点缓存失效

解决方案:

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

1、避免缓存集中失效,不同的key设置不同的超时时间

2、增加互斥锁,控制数据库请求,重建缓存。

3、提高缓存的HA,如:redis集群。

雪崩的整体解决方案

一般情况对于服务依赖的保护主要有3种解决方案:

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

(1)熔断模式

这种模式主要是参考电路熔断,如果一条线路电压过高,保险丝会熔断,防止火灾。放到我们的系统中,如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

重点监控的机器性能指标

  • cpu(Load) cpu使用率/负载
  • memory 内存
  • mysql监控长事务(这里与sql查询超时是紧密结合的,需要重点监控)
  • sql超时
  • 线程数等

总之,除了cpu、内存、线程数外,重点监控数据库端的长事务、sql超时等,绝大多数应用服务器发生的雪崩场景,都是来源于数据库端的性能瓶颈,从而先引起数据库端大量瓶颈,最终拖累应用服务器也发生雪崩,最后就是大面积的雪崩。

(2)隔离模式

这种模式就像对系统请求按类型划分成一个个小岛的一样,当某个小岛被火少光了,不会影响到其他的小岛。

例如可以对不同类型的请求使用线程池来资源隔离,每种类型的请求互不影响,如果一种类型的请求线程资源耗尽,则对后续的该类型请求直接返回,不再调用后续资源。这种模式使用场景非常多,例如将一个服务拆开,对于重要的服务使用单独服务器来部署,再或者公司最近推广的多中心。

(3)限流模式

上述的熔断模式和隔离模式都属于出错后的容错处理机制,而限流模式则可以称为预防模式。限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。这种模式不能解决服务依赖的问题,只能解决系统整体资源分配问题,因为没有被限流的请求依然有可能造成雪崩效应。

熔断设计

在熔断的设计主要参考了hystrix的做法。其中最重要的是三个模块:熔断请求判断算法、熔断恢复机制、熔断报警

(1)熔断请求判断机制算法:使用无锁循环队列计数,每个熔断器默认维护10个bucket,每1秒一个bucket,每个blucket记录请求的成功、失败、超时、拒绝的状态,默认错误超过50%且10秒内超过20个请求进行中断拦截。

(2)熔断恢复:对于被熔断的请求,每隔5s允许部分请求通过,若请求都是健康的(RT<250ms)则对请求健康恢复。

(3)熔断报警:对于熔断的请求打日志,异常请求超过某些设定则报警。

隔离设计

隔离的方式一般使用两种

(1)线程池隔离模式:使用一个线程池来存储当前的请求,线程池对请求作处理,设置任务返回处理超时时间,堆积的请求堆积入线程池队列。这种方式需要为每个依赖的服务申请线程池,有一定的资源消耗,好处是可以应对突发流量(流量洪峰来临时,处理不完可将数据存储到线程池队里慢慢处理)

(2)信号量隔离模式:使用一个原子计数器(或信号量)来记录当前有多少个线程在运行,请求来先判断计数器的数值,若超过设置的最大线程个数则丢弃改类型的新请求,若不超过则执行计数操作请求来计数器+1,请求返回计数器-1。这种方式是严格的控制线程且立即返回模式,无法应对突发流量(流量洪峰来临时,处理的线程超过数量,其他的请求会直接返回,不继续去请求依赖的服务)

超时机制设计

(1)超时分两种,一种是请求的等待超时,一种是请求运行超时。

(2)等待超时:在任务入队列时设置任务入队列时间,并判断队头的任务入队列时间是否大于超时时间,超过则丢弃任务。

(3)运行超时:直接可使用线程池提供的get方法。

如何提前发现雪崩

就是首先让系统不雪崩,然后通过监控发现请求正在接近或者超过阀值,然后再根据具体情况处理,这个接近或者超过阀值的过程,可以称为 “提前发现雪崩”。

以上就是应用服务雪崩的场景以及技术方案总结,以下是最新阿里P8架构师谈架构设计系列文章。

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

关注优知学院微信公众号,回复“架构”即可学习


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答

链接:https://arxiv.org/pdf/1804.03317.pdf概述当前大部分的 kbqa 方法为将 kb facts 与 question 映射到同一个向量空间上,然后计算相似性. 但是这样的做法会忽视掉两者间原本存在的单词级别的联系与交互. 所以本文提出一种网络结构 ARSMCNN,既利用到语义的信息, 又利用到单词…

斯坦福大学最甜网剧:知识图谱CS520面向大众开放啦!

一只小狐狸带你解锁炼丹术&NLP秘籍受本次疫情的影响&#xff0c;斯坦福大学的2020春季知识图谱课程——CS520面向公众线上开放啦&#xff01;连课名都是爱你的形状&#xff01;简单翻译一下重点&#xff1a;今年的CS520面向公众开放&#xff0c;大家可以通过远程视频软件Zo…

一篇文章详解大数据技术和应用场景

“ 本文作者 陈睿 &#xff0c;优知学院创始人 新技术、新趋势往往趋之若鹜却又很难说的透彻&#xff0c;希望这篇文章能让大家完整的理解什么是大数据:该篇包含&#xff1a;大数据、技术、场景应用以及大数据的岗位。 什么是大数据 说起大数据&#xff0c;估计大家都觉得只…

对话周明:回望过去,展望未来,NLP有哪些发展趋势?

HomeBlog 对话周明&#xff1a;回望过去&#xff0c;展望未来&#xff0c;NLP有哪些发展趋势&#xff1f; 2019年2月15日 by 打不死的小强 AI 新闻 0 comments 周明博士是微软亚洲研究院副院长、国际计算语言学协会&#xff08;ACL&#xff09;主席、中国计算机学会理事、中…

阿里P8架构师谈:MongoDB、Hbase、Redis等NoSQL优劣势、应用场景

NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代&#xff0c;虽然RDBMS很优秀&#xff0c;但是面对快速增长的数据规模和日渐复杂的数据模型&#xff0c;RDBMS渐渐力不从心&#xff0c;无法应对很多数据库处理任务&#xff0c;这时NoSQL凭借…

研讨会 | 知识图谱助力图书馆知识管理与智慧服务研讨会

知识图谱是大数据时代重要的知识表示方式之一&#xff0c;也是人工智能技术的重要支撑&#xff0c;在智能检索、数据分析、自动问答、知识推荐、知识管理等领域有着广泛的应用前景&#xff0c;为知识创新管理带来了新机遇。由于知识图谱实现了对象识别、文本理解、关系推理、机…

高效利用无标注数据:自监督学习简述

一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者&#xff1a;huyber来源&#xff1a;https://zhuanlan.zhihu.com/p/108906502BERT的大热让自监督学习成为了大家讨论的热点&#xff0c;但其实word2vec和自编码器也都属于自监督学习范畴。本文通过整理自监督学习的一系列工作&…

TI-RTOS实时操作系统开发之功耗测试

文章目录写在前面CCS&#xff08;code composer studio&#xff09;开启Energy Trace配置电池参数设置测量时间在电流曲线图处点击右键开始测量写在前面 要测试一个产品的电流功耗方式有很多种&#xff1a; 1、电流转电压&#xff0c;通过在供电回路中串联10Ω电阻&#xff0c…

程序员真的只能干到35岁?——我的35岁危机度过之道!

“ 在我还是25岁的时候&#xff0c;我和很多程序员一样&#xff0c;其实都有同样的担心&#xff0c;老了以后怎么办&#xff1f;写代码难道还能写到35岁&#xff1f; 难道我这一辈子就做一个程序员就完了吗&#xff1f;难道这条路就不能走出更多的张小龙&#xff08;foxmail开…

研讨会 | 知识工程与问答技术研讨会 (KEQA2018)

人工智能的迅速发展将深刻改变人类社会&#xff0c;而知识工程是人工智能领域中的一个重要研究主题。随着机器学习、自然语言处理和语义网技术的快速发展&#xff0c;知识获取与处理的能力得到了极大的提升&#xff0c;包括自然语言问答技术在内的智能应用也备受关注。本次研讨…

统计学-自然语言处理

摘要&#xff1a;主成分分析&#xff08;英语&#xff1a;Principal components analysis&#xff0c;PCA&#xff09;是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数&#xff0c;同时保持数据集中的对方差贡献最大的特征。常常应用在文本处理、人脸识别、…

在K40小破卡训练50层BERT Large的宝藏trick

前言 虽然TPU的显存令人羡慕&#xff0c;但是由于众所周知的原因&#xff0c;绝大部分人还是很难日常化使用的。英伟达又一直在挤牙膏&#xff0c;至今单卡的最大显存也仅仅到32G&#xff08;参考V100、DGX-2&#xff09;。然而&#xff0c;训练一个24层的BERT Large模型的时候…

领域应用 | 推荐算法不够精准?让知识图谱来解决

本文转载自公众号&#xff1a;微软研究院AI头条。 编者按&#xff1a;我们几乎每天都会接收到各种各样的推荐信息&#xff0c;从新闻、购物到吃饭、娱乐。个性化推荐系统作为一种信息过滤的重要手段&#xff0c;可以依据我们的习惯和爱好推荐合适的服务。但传统的推荐系统容易出…

BERT重计算:用22.5%的训练时间节省5倍的显存开销(附代码)

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;夕小瑶、rumor酱前言虽然TPU的显存令人羡慕&#xff0c;但是由于众所周知的原因&#xff0c;绝大部分人还是很难日常化使用的。英伟达又一直在挤牙膏&#xff0c;至今单卡的最大显存也仅仅到32G&#xff08;参考V100、D…

去腾讯等BAT面试完的Mysql面试55题总结,含答案大赠送!

【BAT面试&#xff1a;mysql 面试55题】 1、一张表里面有ID自增主键&#xff0c;当insert了17条记录之后&#xff0c;删除了第15,16,17条记录&#xff0c;再把mysql重启&#xff0c;再insert一条记录&#xff0c;这条记录的ID是18还是15 &#xff1f; 2、mysql的技术特点是什…

这十套练习,教你如何使用Pandas做数据分析

这十套练习&#xff0c;教你如何用Pandas做数据分析Pandas是入门Python做数据分析所必须要掌握的一个库。本文内容由科赛网翻译整理自Github&#xff0c;建议读者完成科赛网 从零上手Python关键代码 和 Pandas基础命令速查表 教程学习的之后&#xff0c;点击本篇Notebook右上角…

预训练模型超全知识点梳理与面试必备高频FAQ

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;JayLou娄杰来源&#xff1a;https://zhuanlan.zhihu.com/p/115014536预训练模型(Pre-trained Models,PTMs)的出现将NLP带入了一个全新时代。2020年3月18日&#xff0c;邱锡鹏老师发表了关于NLP预训练模型的综述《Pre-tr…

阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则

MySQL凭借着出色的性能、低廉的成本、丰富的资源&#xff0c;已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色&#xff0c;但所谓“好马配好鞍”&#xff0c;如何能够更好的使用它&#xff0c;已经成为开发工程师的必修课&#xff0c;我们经常会从职位描述上看到诸…

论文浅尝 | 利用类比推理优化知识图谱向量表示

链接&#xff1a;https://arxiv.org/pdf/1705.02426.pdf本文的主要创新点就是把类比推理应用到 KG embedding 中&#xff0c;通过对模型的 score function 添加某些约束来捕获 KG 中类比结构的信息&#xff0c;进而优化 KG 中实体和关系的 embedding 表示&#xff0c;并在 FB15…

推荐 10 个饱受好评且功能独特的开源人工智能项目

来自&#xff1a;开源中国链接&#xff1a;https://my.oschina.net/editorial-story/blog/1592254推荐 10 个饱受好评且功能独特的开源人工智能项目关于人工智能的项目&#xff0c;相信大家都看过或者用过不少了&#xff0c;但它们的大多数看上去都十分“高大上”&#xff0c;让…