【问题标题】:Why the G-Counter cannot do decreasing operation?为什么 G-Counter 不能做减法运算?
【发布时间】:2019-04-20 04:56:15
【问题描述】:

我读过一些关于 CRDT 的文章。并且知道G-Counter 是 CvRDT 的实现。它只能做递增操作。但是,算法中的每个节点都有自己的槽。如果将其转换为 CmRDT 并且每个节点都广播其操作而不是整个状态,那么 G-Counter 可以递减吗?为什么或为什么不?

【问题讨论】:

    标签: crdt


    【解决方案1】:

    G-Counter 名称来自 grow-only 计数器。它是由它的语义定义的,它并不特定于 CvRDT 或 CmRDT。因此,没有什么可以反对使用递增/递减操作构建基于操作的计数器,问题是,它不再是 只是 G-Counter ;)

    【讨论】:

    • 如果 G-Counter 可以修改为通过递增/递减操作进行计数(可能命名为 Some-Counter),为什么我们需要双倍空间(两个 G-Counter)而不是一个来构建 PN -计数器?
    • G-Counter 的语义只定义了递增操作(因此命名为仅增长计数器),而 PN-Counter 具有递增/递减操作(使正负计数成为可能)。就语义而言,这就是全部。现在实现:基于状态的PN-Counter通常由两个G-Counter实现,以保持合并方法的收敛性。然而,没有什么需要基于操作的计数器来使用相同的实现。事实上,大多数可交换计数器都是作为简单值实现的。 Cv- 和 CmRDT 的语义可能相同,但实现方式不同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2022-01-25
    相关资源
    最近更新 更多