根据定义,CRDT(无冲突复制数据类型)是无冲突的。因此,这意味着在一个节点上进行的任何更新最终都将应用于(合并)所有其他节点。
所以它让我假设如果环境处于正常状态(没有硬件故障等),CRDT 不能在逻辑上限制或拒绝或拒绝进行一些更新。
另一方面,根据定义,事务应该被接受或拒绝,如果不满足某些要求则回滚 - 如果检测到某些冲突。所以这意味着事务(基于冲突)不能用 CRDT(无冲突)实现。那正确吗?
让我们考虑一个例子——简单的银行账户。余额是一个非负数。我试图用 PN-Counter(正负计数器)来实现它。我想让它成为非负数 - 如果余额低于零,则限制支出。但似乎是不可能的。已使用 PN-Counter 实现,它将允许低于零。或者如果我想限制它 - 我需要同步(锁定)所有节点以获得确认。
如果可以使用 CRDT 实现简单的交易,您能否描述一下给定示例的可能性 - 非负数。