文章目录
  1. 1. 一、原文链接
  2. 2. 二、互斥性问题
  3. 3. 三、幂等性问题

一、原文链接

https://tech.meituan.com/distributed-system-mutually-exclusive-idempotence-cerberus-gtis.html

二、互斥性问题

多线程中的解决方案

  • ReetrantLock,利用CAS+CLH队列实现
  • synchronized关键字,JVM底层实现

多进程中的解决方案

  • 信号量(P-wait/V-signal)操作

分布式中的解决方案

  • 基本要求:有锁存储空间;唯一标识;两种状态
  • 进阶要求:

    • 可重入
    • 惊群效应:占有锁的线程释放,避免唤醒所有等待的线程
    • 公平锁和非公平锁(开销较好)
    • 阻塞锁(临界区操作耗时长)和自旋锁(临界区操作耗时短)
  1. Redis实现(之前已经有介绍过)

三、幂等性问题

  • 原理:将每一个不同的业务操作赋予其唯一性
  • 通过对不同操作所对应的唯一的内容特性生成一个唯一的全局ID来实现:相同的操作生成相同的全局ID,不同的操作生成不同的全局ID。
文章目录
  1. 1. 一、原文链接
  2. 2. 二、互斥性问题
  3. 3. 三、幂等性问题