秒杀并发架构实战课程笔记

视频地址:https://ke.qq.com/course/3275764?_bid=167&_wv=3&taid=10872245856631796&term_id=103405163&from=iosapp

一、并发设计

1. 直接减库存

image.png

存在问题:多个线程会有超卖问题

2.加进程互斥锁

image.png

image.png

存在问题:单机单进程没问题,多机(负载均衡)会有问题

3.redis 分布式锁之setnx 命令

cunz
fe

存在问题:没有处理异常,锁没有超时时间

4. 加上处理异常,加上超时时间

image.png

存在问题:加索和超时时间是两条命令,并非原子性

5.用原子性命令

cun'z

存在问题:


image.png

高并发时,问题很大。假如高并发情况下,第一个线程执行需要15s(并发情况下服务器的执行速度会大幅降低),但当执行到了第10s的时候,锁因为超时被释放了,第二个线程就下来了。假设第二个线程执行需要8s,那么第一个线程执行到了第15s时,就会删掉锁,这时候,第二个线程还没执行完,但是锁已经被第一个线程delete掉了,这时候外面的线程又进来了,可能第二个线程又会释放掉第三个线程的锁,这样就全乱套了,这样会导致锁失效了,线程都进来减库存了,还是会有超卖的情况。

6. 将进程id当成锁的value,在执行完检查当前进程的id是否与redis的key的值相等,相等才能释放锁,相当于进程只能释放自己加的锁。

image.png

存在问题:
如果在第一个线程判断相等之后,程序卡顿,比如gc,此时刚好10s锁超时,那么第二个线程加锁成功,此时第一个进程再执行delete操作,依然会释放别的进程的锁。

7.锁续命

分线程里面检查超时时间之后,持有锁的进程是否还继续持有该锁,有则重设超时时间。
很复杂,要用成熟的中间件:redisson。

只需要三行:


image.png

原理:


image.png

利用了lua语言原子性。

存在问题:

1.主从架构锁失效问题;

线程1获取锁成功之后,redis master挂了,cluster 被推选为master,线程2又可以获取锁成功;此时又可能发生超卖问题;

解决方式:用zookeeper做分布式锁,key-value 树形结构
区别(集群架构):redis:满足AP ; zookeeper: 满足CAP
C 一致性,A 可用性,P分区容错性,zookeeper 会在返回客户端结果之前同步所有从节点,如果在写了某节点的时候master挂了,zookeeper的选举机制会保证写成功的节点变为新的leader,意味着key不会丢失。

还有一种解决方式:RedLock(存在一些琐碎的问题,不推荐。)


image.png

节点都是对等的,没有主从关系。

2.锁实现了串行,但带来了性能问题

解决方式:分段锁。
将库存分布到多个锁里面,相当于多个队列。


image.png

二、并发问题的解决问题

1.缓存数据库双写不一致(时间线非顺序,线程1更新缓存时卡顿,线程2更新了缓存后,线程1又改回去了)

image.png

加分布式锁,有性能问题。

解决方式:

一般:读写锁:读和读的线程互斥,写和写互斥。

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

推荐阅读更多精彩内容