分布式系统中 REST API 的幂等性和竞争条件

Pra*_*yat 5 rest distributed-computing distributed-system race-condition idempotent

什么可能是实现幂等性并处理竞争条件的替代解决方案。

例如。考虑将客户添加到记录系统的请求。客户详细信息将以电子邮件 ID 作为关键属性。并假设有 API 来创建客户。

考虑一种情况,由于来自客户端的重复请求,在时间 T1,两个请求可能会登陆服务器以创建相同电子邮件 ID 的客户,例如“xyz@abc.com”。

请求 1,时间 T1,电子邮件 ID“xyz@abc.com” 请求 2,时间 T1,电子邮件 ID“xyz@abc.com”

我正在寻找分布式系统如何在 REST API 调用中处理幂等性和竞争条件的方法?我知道有不同的方法,例如,

  • 数据库约束
  • 分布式锁

DB Constraint on column email id,很容易解决这个问题。也可以选择分布式锁或使用 no-sql 方法在将记录存储之前检查缓存中的电子邮件 ID。

考虑到分布式特性,还有哪些其他可扩展的方法?

为什么要避免约束是,它对索引、性能和规模都有影响。