17.亿级流量电商详情页系统实战---缓存雪崩问题以及解决方案

本文探讨了缓存雪崩的现象及其对系统造成的影响,如redis集群崩溃、资源耗尽和数据源压力过大。缓存雪崩可能导致服务全面崩溃,造成经济损失。解决方案包括事前的高可用性架构、事中的资源隔离和限流,以及事后的数据恢复和快速预热。文章强调了多级缓存、备份和恢复策略的重要性,以及利用Hystrix进行服务隔离。
摘要由CSDN通过智能技术生成

缓存雪崩

雪崩的原因和现象

缓存雪崩,不是单指redis集群崩溃,宕机,而是说整个缓存服务体系(包括缓存服务,redis集群、缓存服务中的本地缓存、数据源)
在这里插入图片描述

1、redis集群彻底崩溃
2、缓存服务大量对redis的请求hang住,占用资源
3、缓存服务大量的请求打到源头服务去查询mysql,直接打死mysql
4、源头服务因为mysql被打死也崩溃,对源服务的请求也hang住,占用资源
5、缓存服务大量的资源全部耗费在访问redis和源服务无果,最后自己被拖死,无法提供服务
6、nginx无法访问缓存服务,redis和源服务,只能基于本地缓存提供服务,但是缓存过期后,没有数据提供

行业里真实的缓存雪崩的经验和教训

某电商,之前就是出现过,整个缓存的集群彻底崩溃了,因为主要是集群本身的bug,导致自己把自己给弄死了,虽然当时也是部署了双机房的,但是还是死了

电商大量的,几乎所有的应用都是基于那个缓存集群去开发的

导致各种服务的线程资源全部被耗尽,然后用在了访问那个缓存集群时的等待、超时和报错上了

然后导致各种服务就没有资源对外提供服务咯

然后各种降级措施也没做好,直接就是整体系统的全盘崩溃

导致网站就没法对外出售商品咯,导致了很大数额的经济的损失

缓存的几大问题

1.缓存一致性
2.缓存失效规则
3.缓存穿透
4.缓存崩溃
5.热点缓存
6.缓存预热,预热的时候,并发冲突问题,例如之前学的多个storm实例计算出不同的热点商品集合,如何让多节点部署的缓存服务,并发预热
7.缓存数据恢复和备份
8.缓存高可用

解决方案

在这里插入图片描述

1、事前解决方案

发生缓存雪崩之前,事情之前,怎么去避免redis彻底挂掉

redis本身的高可用性,复制,主从架构,操作主节点,读写,数据同步到从节点,一旦主节点挂掉,从节点跟上
redis集群部署方式

双机房部署,一套redis cluster,部分机器在一个机房,另一部分机器在另外一个机房
两套redis cluster,两套redis cluster之间做一个数据的同步,redis集群是可以搭建成树状的结构的

怎么搭建梳妆结构

一旦说单个机房出了故障,至少说另外一个机房还能有些redis实例提供服务

2、事中解决方案

redis cluster已经彻底崩溃了,已经开始大量的访问无法访问到redis了

(1)ehcache本地缓存

所做的多级缓存架构的作用上了,ehcache的缓存,应对零散的redis中数据被清除掉的现象,另外一个主要是预防redis彻底崩溃

多台机器上部署的缓存服务实例的内存中,还有一套ehcache的缓存

ehcache的缓存还能支撑一阵

(2)对redis访问的资源隔离

(3)对源服务访问的限流以及资源隔离

3、事后解决方案

(1)redis数据可以恢复,做了备份,redis数据备份和恢复,redis重新启动起来
(2)redis数据彻底丢失了,或者数据过旧,快速缓存预热,redis重新启动起来
(2.1)快速预热时的并发问题

redis对外提供服务

缓存服务里,熔断策略,自动可以恢复,half-open,发现redis可以访问了,自动恢复了,自动就继续去访问redis了

基于hystrix的高可用服务这块技术之后,先讲解缓存服务如何设计成高可用的架构

基于Hystrix 对缓存数据和源数据访问,做资源隔离

上百节课详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程介绍: 讲解一个真实的、复杂的大型企业级亿级高并发项目,是java架构实战课程。 通过本套课程的学习,可以积累大量架构设计经验,迈入架构师行列。 课程特色: 1、完整的大型电商详情页系统架构:不再只是关注电商详情页架构中的缓存架构部分,而是关注全链路、全流程的完整架构,对完整的架构进行设计以及开发,包括了动态渲染系统、OneService系统、前端页面、大型工程运维四个部分。 2、基于更加完整的业务架构来讲解,从最源头的商品服务、价格服务、库存服务开始,从业务数据的变更到缓存数据的生产,将整个商品详情页系统架构串联起来。虽然上游服务的业务还是做了大幅度的简化,但是业务架构更加完整,能够让同学们站在更加完整的角度来学习和理解整个架构。 3、完整的微服务架构的项目实战:微服务完整的架构中,一定是包含了微服务建模/模型设计、基础技术架构、持续交付流水线、容器部署几个环节的,而市面上已有的微服务课程,几乎很少有完全涵盖这些环节的,更不用说微服务架构的实战了。课程中,将会讲解完整的微服务架构,包括基于Spring Cloud作为微服务架构的基础技术架构,基于DevOps思想与Jenkins构建持续交付流水线以及自动化测试套件,基于Docker作为容器部署和运行微服务。同时最有价值的地方在于,可以基于完全真实的亿级流量电商详情页系统的项目背景下,来实战这整套微服务架构,相当于是一个真实的微服务架构项目实战。 4、多机房部署架构下的4级缓存架构:大公司里真实的亿级流量高并发系统,都是采取了多个机房的部署架构,以实现高可用以及异地灾备。课程会重点讲解,在多机房部署架构下,如何设计和实现高并发系统的4级缓存架构。 5、复杂业务场景下的多层次消息队列架构:在复杂的业务场景下,需要设计多层次的消息队列架构,包括了去重队列、优先级队列、刷数据队列等多个层次的复杂架构设计与实现。 6、后台服务的多线程并发架构设计:对于后台运行的服务,需要采用多线程并发设计大幅度提升系统的资源利用率以及吞吐量。 7、Redis集群的批量数据查询性能优化:对于分布式的Redis集群,数据在多个实例中分布式存储,如果要优化大批量数据的批量查询性能,就需要采用hash tag分片路由+mget单分批大批量读取的优化设计。 8、高可用架构设计:整套大型系统如何实现高可用架构的设计和部署?需要对整个读链路进行多级降级机制的设计,并且还需要进行基于Hystrix的依赖调用隔离 9、基础设施技术涵盖了大型系统中常用的各种技术,包括了:LVS+KeepAlived、Nginx+Lua、Twemproxy+SSDB+Redis(磁盘+内存的分布式与读写分离双KV集群)、RabbitMQ消息中间件 10、直接可以二次开发的代码:本次升级,采取了大型电商网站商品详情页系统完整的全链路架构,包括基础设施如何部署,以及整体代码架构,都是完全按照公司里来做的。虽然本次升级依然是专注于架构,而不是业务,基本还是没有包含什么业务,但是本次课程最后做完产出的架构和代码,都是可以直接拿到手,在架构里填充进你们自己的业务就可以进行二次开发的,工业价值非常高!同时强调一下,本课程不会提供电商业务代码的二次开发,因为本课程几乎不包含太多的电商业务代码,主要讲解架构,所谓的代码二次开发,是对架构代码进行二次开发,在架构中填入你们自己的业务!!! 11、大公司的OneService一站式入口服务:基于商品详情页依赖数十个服务的业务特点,深入讲解了如何设计与开发大公司中常见的一站式入口服务,代理后端数十个服务,作为统一入口,打造服务闭环。 12、大型电商网站的前端页面的核心业务逻辑:完整讲解了大型电商网站的前端页面如何与后端整套系统配合的业务逻辑,包括了动态渲染系统直接渲染首屏的商品基本信息,滚屏时Ajax异步加载分段存储的商品介绍,Ajax异步调用OenService系统来加载时效性要求很高的价格、库存等数据。 13、大型电商网站的工程运维实践:在大型系统中,一定是需要对整套工程的运维流程做良好的设计的,包括了线下压测、线上压测、灰度发布、高峰期限流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值