Skip to content

Commit 0416cd8

Browse files
committed
feat:《拼团交易平台系统》第2-19节:独占锁和无锁化场景运用
1 parent d368cf6 commit 0416cd8

File tree

6 files changed

+28
-0
lines changed

6 files changed

+28
-0
lines changed

docs/.vuepress/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2297,6 +2297,7 @@ function getBarGroupBuyMarket() {
22972297
"第2-16节:引入RabbitMQ分布式多端消费.md",
22982298
"第2-17节:发送MQ结算消息.md",
22992299
"第2-18节:消费MQ结算消息.md",
2300+
"第2-19节:独占锁和无锁化场景运用.md",
23002301
]
23012302
},
23022303
{
Loading
Loading
Loading
Loading
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: 【更】第2-19节:独占锁和无锁化场景运用
3+
pay: https://t.zsxq.com/NxC2G
4+
---
5+
6+
# 《拼团交易平台系统》第2-19节:独占锁和无锁化场景运用
7+
8+
作者:小傅哥
9+
<br/>博客:[https://bugstack.cn](https://bugstack.cn)
10+
<br/>视频:[https://t.zsxq.com/o7toC](https://t.zsxq.com/o7toC)
11+
12+
> 沉淀、分享、成长,让自己和他人都能有所收获!😄
13+
14+
## 一、本章诉求
15+
16+
以独占锁抢占方式,迭代拼团结算通知互备执行任务。再以无锁化设计,处理用户拼团锁单,库存抢占处理,降低对数据库的行锁压力,提高整体吞吐量。
17+
18+
## 二、业务流程
19+
20+
如图,两种锁应对的场景;
21+
22+
<div align="center">
23+
<img src="https://bugstack.cn/images/article/project/group-buy-market/group-buy-market-2-19-01.png" width="550px">
24+
</div>
25+
26+
- 分段锁,颗粒度缩小到库存维度。先加(incr)后锁的操作,是一种无锁化设计。锁的目的只是作为兜底。这类似于我们操作账户,操作完写一条流水。incr 操作是原子的,基本不会产生一样的值。但在实际生产中,遇到过集群的运维配置问题,以及业务运营配置数据问题,导致 incr 得到的值相同。
27+
- 独占锁,在分布式架构系统设计中,会有多个实例部署。这些实例都会做job任务的执行,为了保障既能让任务互备,同时不要重复执行。这里要加独占锁,谁抢占到谁执行。执行完成后,释放锁,下一轮继续抢占。

0 commit comments

Comments
 (0)