操作的Consul和隔离

Consul and isolation of operations

一些业务逻辑正在以下列方式使用 Consul KV:

显然,这些检查是对 Consul 集群的 3 个单独请​​求。我如何确定此示例中的所有 3 个都被隔离(锁定)?

我想确定一下,例如。 val2 在 检查后 没有出现(由另一个 thread/user 执行)。

如果您需要同步访问某些内容,那么您需要一种称为 lock 的同步机制。在你的情况下(不同的进程)更正确的称呼它 "distributed lock".

你可以自己实现,但实际上Consul里面有,见https://www.consul.io/docs/commands/lock.html

因此,您的代码中所有以某种方式访问​​ (read/modify) val1val2 的业务逻辑必须包含在锁定 asquisition/releasing 机制中:

  • 申请锁
  • 检查 val1 是否存在
  • 检查 val2 是否存在
  • 如果验证正常,将对象放入 /val1/val2/
  • 解除锁定