Hazelcast IMap - 并发更新相同的键,不同的值
Hazelcast IMap - Concurrent updates to the same key, different value
没有测试,因为我被困在火车上并且 运行 没电了...
我需要确定 Hazelcast 的 IMap 并发更新是否线程安全更新相同的键但该键的不同值。
例如:
假设我有 2 个不同的线程更新同一个 IMap 键...
出于所有意图和目的,这张地图如下所示:
key: {value1: 1, value2: 2}
一个线程说,
"I am updating value1 to 3"
另一个线程说(同时)
"I am updating value2 to 4".
Hazelcast 如何处理这个问题?
最后的结果会不会像下面这样?
key: {value1: 3, value2: 4}
Hazelcast 使用分区。对密钥进行哈希处理以找到该条目的正确分区。
每个分区都是单线程的,只有一个分区线程处理每个分区。因此,单个键的两次更新由单个分区线程处理。
如果两个更新的键落在同一个分区中,这些操作将在单个分区线程上按顺序进行。如果每个密钥位于不同的分区中 - 不同的线程将处理每个更新。
我不太明白你的表示法:key: {value1: 1, value2: 2}
-> 它看起来像一个嵌套映射。
你还说:the same key but different values of that key.
-> 在一个映射中,每个键只有一个值(除非该值是一个集合或一个映射)
没有测试,因为我被困在火车上并且 运行 没电了...
我需要确定 Hazelcast 的 IMap 并发更新是否线程安全更新相同的键但该键的不同值。
例如:
假设我有 2 个不同的线程更新同一个 IMap 键...
出于所有意图和目的,这张地图如下所示:
key: {value1: 1, value2: 2}
一个线程说,
"I am updating value1 to 3"
另一个线程说(同时)
"I am updating value2 to 4".
Hazelcast 如何处理这个问题?
最后的结果会不会像下面这样?
key: {value1: 3, value2: 4}
Hazelcast 使用分区。对密钥进行哈希处理以找到该条目的正确分区。
每个分区都是单线程的,只有一个分区线程处理每个分区。因此,单个键的两次更新由单个分区线程处理。
如果两个更新的键落在同一个分区中,这些操作将在单个分区线程上按顺序进行。如果每个密钥位于不同的分区中 - 不同的线程将处理每个更新。
我不太明白你的表示法:key: {value1: 1, value2: 2}
-> 它看起来像一个嵌套映射。
你还说:the same key but different values of that key.
-> 在一个映射中,每个键只有一个值(除非该值是一个集合或一个映射)