交易系统锁竞争消除实战手册

📚 共计 30 章节
01
锁竞争的本质
从交易系统的订单簿更新说起,理解锁竞争产生的根本原因。
根本原因订单簿
02
锁的代价
上下文切换、缓存行失效、线程阻塞,一个锁操作到底有多贵?
性能上下文切换
03
无锁数据结构
从AtomicInteger到LongAdder,Java中无锁原语的演进。
AtomicLongAdder
04
读写锁分离
ReentrantReadWriteLock在行情数据分发中的实战应用。
读写锁行情
05
锁分段技术
ConcurrentHashMap的设计思想,如何应用到交易引擎的账户余额管理。
分段账户
06
乐观锁与CAS
使用AtomicStampedReference解决交易系统中的ABA问题。
CASABA
07
锁消除与锁粗化
JVM在运行时如何自动优化你的锁代码。
JVM优化
08
偏向锁与轻量级锁
HotSpot虚拟机锁升级的完整路径与调优参数。
锁升级调优
09
自旋锁与自适应自旋
在低延迟交易场景下,自旋多少次才合适?
自旋低延迟
10
ThreadLocal
如何用线程封闭技术彻底消除锁竞争。
线程封闭无锁
11
无锁队列
Disruptor框架在订单撮合引擎中的核心原理。
Disruptor撮合
12
无锁栈与无锁链表
Treiber Stack与Michael-Scott Queue的实现与交易场景应用。
TreiberM&S
13
内存屏障与volatile
理解JMM,从硬件层面理解锁的底层依赖。
JMM硬件
14
伪共享(False Sharing)
@Contended注解如何拯救你的交易系统吞吐量。
伪共享@Contended
15
锁的粒度控制
从粗粒度锁到细粒度锁,交易系统中锁粒度的最佳实践。
粒度最佳实践
16
协程与用户态线程
Quasar Fiber在交易系统中的应用,能否替代锁?
协程Fiber
17
Actor模型
Akka框架在风控系统中的无锁消息传递实践。
AkkaActor
18
软件事务内存(STM)
Scala的STM库在交易状态管理中的探索。
STMScala
19
数据库锁消除
从悲观锁到乐观锁,交易系统数据库层的锁优化。
数据库乐观锁
20
分布式锁的陷阱
Redis Redlock与ZooKeeper在交易系统中的选型与坑。
分布式Redlock
21
锁的监控与诊断
使用jstack、async-profiler定位交易系统中的锁热点。
jstackasync-profiler
22
锁的压测方法
JMH微基准测试在锁竞争场景下的正确使用姿势。
JMH压测
23
案例一:订单簿深度合并
交易系统锁竞争案例:订单簿深度合并时的锁优化。
订单簿合并
24
案例二:资金账户批量扣减
交易系统锁竞争案例:资金账户批量扣减的锁消除方案。
账户批量
25
案例三:行情快照生成
交易系统锁竞争案例:行情快照生成中的读写锁优化。
快照读写锁
26
案例四:风控规则引擎
交易系统锁竞争案例:风控规则引擎中的无锁化改造。
风控无锁化
27
案例五:交易网关连接池
交易系统锁竞争案例:交易网关连接池的锁竞争消除。
连接池网关
28
案例六:清算对账系统
交易系统锁竞争案例:清算对账系统中的锁消除策略。
清算对账
29
架构设计:从单体锁到无锁架构
锁竞争消除的架构设计:从单体锁到无锁架构的演进路线图。
架构演进
30
总结与展望
未来交易系统中的锁竞争消除技术趋势(硬件事务内存、持久化内存等)。
HTM持久化内存