用户发送写入请求。
然后,有人发送对该资源的读请求。读请求在写请求之前到达,因此读请求数据是陈旧的,但无法知道它是否陈旧。同样,您也可以对同一资源发出两个写请求,但后一个写请求会先到达。
当像这样的竞争条件发生时,如何在分布式系统中提供强大的一致性?
发布于 2020-04-09 21:03:22
什么是一致性?你说有两次写入是“乱序”的,但是是什么建立了这种顺序呢?建立这种顺序的东西是你一致性的基础。
一个简单的基础是一个代号;因此,任何对象O都会增加一个版本N。当您检索O时,也会检索N。当您写入时,您将写入O.N。如果对象在写入O.N时处于O.N+1状态,则它是陈旧的,并生成一个错误。在一段时间内,O的多个版本仍然可用。
当然,您不能在任何广泛分布的系统中轻易地复制对象,因为O的两个断开连接的所有者可能会允许不同的操作,而这些操作是不可能统一的。例如,Etcd在有限的时间内解决了这个问题。区块链在更广泛的意义上解决了这个问题。
https://stackoverflow.com/questions/61116460
复制相似问题