高并发下缓存击穿(一)

首先厘清这样几个概念:高并发、缓存、击穿

高并发

高并发很好理解,它指的是服务在同一时刻被大量请求访问,举个例子,大麦网上某歌星的演唱会门票,在今晚10点整开票,那对于大麦网就需要有机制应对10点这个时刻大量请求访问服务的场景;或者淘宝双十一,大家在0点准备清空之前屯好的商品。

缓存

以一个Web应用的架构为例:nginx服务器 + Web服务器 + 缓存 + 数据库
nginx服务器往往作为统一入口和负载均衡,成为接收web请求的第一个模块。当我们在设计一定规模的Web服务时,往往把同一套服务代码部署到多个Web服务器上,目的是保证系统性能和避免Web服务挂掉使得整个应用不能使用,此时,nginx作为反向代理,向客户端暴露唯一访问入口。同时,nginx可以根据每个节点的网络流量和当前状态等指标,判断网络请求应流向哪一台Web服务器。


nginx作为反代

Web服务器不必多说,根据项目情况可能由前后端两个不同的服务或服务器组成,当然也可能没有分离而在一台服务器中。常用的Web容器比如Tomcat、Apache等。

缓存是为了提升系统数据读取性能的重要中间件,常用的有Redis和Memcache。根据业务需求可能是分布式或单例。对缓存有一个初步的认识可以从认识程序执行开始:程序源码本身存放在硬盘上,当执行程序时,代码会被读入到内存,再交由cpu运算与执行,这期间cpu会对硬盘上的数据库进行CRUD操作,但是我们知道,硬盘的读写速度比cpu的计算速度要慢很多,所以我们选择内存去存放一些可能被反复读写的数据,以提升整个程序执行的性能。以Redis举例,它作为一个非关系型数据库,所有数据以键值对的形式存储,相较于Mysql、Oracle等关系型数据库,IO会高效很多,同时它基于内存而大型数据库是基于硬盘,所以从计算机物理结构来说性能也更高一筹。由于Redis基于内存,数据的存储能力自然不能和硬盘相比,所以我们的数据在缓存中有三个元素非常关键:Key、Value、Expire,也就是键值和过期机制。


Redis集群在Web架构中

数据库的概念大家一定最熟悉,在本文提到的Web架构中,开发人员会根据业务场景需要,对数据库和Redis进行“双写”,也就是说,对于一些读写相对频繁的内容,开发人员会即写入数据库,也写入Redis。

缓存击穿

以上说了这么多,到底缓存击穿是个怎样的场景呢,听起来很fancy,实际很好理解:
在存在缓存机制的情况下,大量的Web请求(高并发)连带的数据操作,没有经过缓存而是直接怼到了数据库上,造成数据库宕机。
比如天猫网在双十一当天会在页面显示目前全网成交的交易额。那么整个网站上每一笔消费都会对该数据产生影响,即存在写入也存在读取(因为要显示出来)。那么一定有这样一个时刻,比如说0点,瞬间有十几万甚至上百万的请求要同时读取和写入该field。如果没有缓存,每一个请求连带的数据操作都需要应用与数据库生成connection,而数据库的最大连接数是有限的,一旦超过数据库会直接宕机,所以这个过程中一定有缓存的存在。但我们细想一下,即便有了缓存,在0点那个时刻,由于还没有请求访问过“交易总额”这个字段,也就是说理论上缓存中还没有写入这个key-value,那么在最开始的时刻,是否也有数据库宕机的可能呢?另外,我们有说道缓存中的数据会有过期机制,即便“交易总额”被缓存了下来,一旦过期,岂不是数据库又会直面所有数据操作?
是的,要回答以上两个问题,就需要了解缓存击穿的常用解决方案:互斥锁、异步构建缓存和布隆过滤器,下一章继续……

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容