一些业务逻辑正在以下列方式使用Consul KV:
val1
是否存在val2
是否存在/val1/val2/
显然,这些检查是对Consul集群的3个单独请求。如何确保此示例中的所有3个都被隔离(锁定)?
我想确保例如。在检查后,val2
不会出现(由另一个线程/用户执行)。
答案 0 :(得分:1)
如果您需要同步访问某些内容,则需要一个名为lock的同步机制。在你的情况下(不同的过程),更正确地称它为#34;分布式锁定"。
您可以自己实施,但实际上Consul将其包含在内,请参阅https://www.consul.io/docs/commands/lock.html
因此,以某种方式访问(读取/修改)val1
和val2
的代码的所有部分中的业务逻辑必须包含在锁定请求/释放机制中: