分布式系统幂等性
一、原文链接
https://tech.meituan.com/distributed-system-mutually-exclusive-idempotence-cerberus-gtis.html
二、互斥性问题
多线程中的解决方案
- ReetrantLock,利用CAS+CLH队列实现
- synchronized关键字,JVM底层实现
多进程中的解决方案
- 信号量(P-wait/V-signal)操作
分布式中的解决方案
- 基本要求:有锁存储空间;唯一标识;两种状态
进阶要求:
- 可重入
- 惊群效应:占有锁的线程释放,避免唤醒所有等待的线程
- 公平锁和非公平锁(开销较好)
- 阻塞锁(临界区操作耗时长)和自旋锁(临界区操作耗时短)
- Redis实现(之前已经有介绍过)
三、幂等性问题
- 原理:将每一个不同的业务操作赋予其唯一性
- 通过对不同操作所对应的唯一的内容特性生成一个唯一的全局ID来实现:相同的操作生成相同的全局ID,不同的操作生成不同的全局ID。