1. JVM 本地锁:实现简单,性能较差,单体故障问题。
  2. MySQL 行锁:事务隔离性、避免数据冲突,性能较差/
  3. 分布式锁:Redis 或者 ZooKeeper 或 Etcd 实现,分布式场景,灵活,性能高。

对于分布式锁:

  1. 当骑手抢单时需要先获取到该订单对应的锁;
  2. 如果获取锁失败,就说明已经有其他骑手已经接单了,直接提示抢单失败。