Hazelcast 中新的 PNCOUNTER 和 IAtomicLong 之间的主要区别是什么?

What is the main difference between the new PNCOUNTER and IAtomicLong in Hazelcast?

我无法理解 hazelcast 5.0 的新功能 这些数据结构之间的主要区别是什么?因为pncounter是一个复制数据的计数器,当没有更多更新时它们组合在一起,我想了解hazelcast的PNCounter如何控制hazelcast的并发。

复制人计数最大值是关于您在 hazelcast 上拥有的最大节点数运行?

内部如何运作?因为我需要了解这是如何工作的,所以我正在使用一个计数器来计算多个客户端的 activity,我们为不同的活动创建了 1000 个甚至更多的 pn 计数器,因为我不知道一个 pn 计数器是否会工作。

客户端是否知道需要连接哪个计数器或者计数器是否遵循一定的逻辑流程?不懂这个功能,很想知道pncounter和atomiclong的区别

对我来说,它就像 atomiclong,它可以复制的功能。

这一切都归结为 CAP Theorem

总而言之,出于一致性可用性抗分区性,您可以从 3 个中选择 2 个。由于 Hazelcast 是自然分布的,因此您可以在 一致性可用性.

之间做出选择

IAtomicLong is a member of CP Subsystem API

-- https://docs.hazelcast.com/imdg/4.2/data-structures/iatomiclong

A Conflict-free Replicated Data Type (CRDT) is a distributed data structure that achieves high availability by relaxing consistency constraints. There may be several replicas for the same data and these replicas can be modified concurrently without coordination. This means that you may achieve high throughput and low latency when updating a CRDT data structure. On the other hand, all of the updates are replicated asynchronously.

-- https://docs.hazelcast.com/imdg/4.2/data-structures/pn-counter

总而言之,IAtomicLong 牺牲了可用性以换取一致性。结果总是正确的,但不一定总是可用。

PNCounter 做出相反的权衡。它总是可用的(当然取决于集群的节点数量)但它最终是一致的,因为它是异步复制的。