如何将 hazelcast 请求路由到正确的分区?
How does hazelcast request gets routed to right partition?
我是 Hazelcast 的初学者,正在努力理解以下内容。
在具有 3 个集群的正常对等设置中,每个集群都是一个单独的分区。根据请求,如何选择正确的分区?是否有任何路由器可以帮助每个请求?如何处理请求?
谢谢
Hazelcast 的核心是基于 "Distributed Hash Table",没有主节点。它与节点之间的两个共享知识一起工作:
- 在参与集群的节点的有序列表上
- 哈希函数
对于 1/,Hazelcast 使用从最老到最年轻的节点列表。这个信息是"easy"得到的,不需要通过一些选举来同步。 2/ 只是一些 code/configuration.
分布式哈希表的原理很简单:假设你有三个节点,顺序为 A B 和 C。如果你想知道哪个节点负责密钥 K,你只需对密钥进行散列,然后取模 3 .有0就是A节点,有1就是B节点,有2就是C节点
当然,这只是Hazelcast的一个简化视图:比如每个结构被拆分成X个分区,每个节点拥有多个分区。此外,每个分区都被复制。因此对于每个分区,有一个 "master" 个节点和几个 "backup" 个节点。但是你明白了:没有主节点,没有路由节点,每个数据所属的每个节点"knows"。
Hazelcast 不使用一致性哈希,因此 Jeremie B
给出的答案并不完全准确。
Hazelcast 中有几个重要的概念:
- 分区 - 默认情况下有 271 个分区,它们均匀分布在节点之间。每个节点拥有 "primary" 个分区并包含备份 "partitions".
- 散列函数 - 允许将键映射到分区,因此在简化版本中它看起来像这样
hash(key) % partitionCount = partition
- Partition table - 保留分区和节点之间的映射,或者更准确地说是分区和副本之间的映射。每个分区的第一个副本是 "primary" 分区,第二个,第三个......是备份。
为了联系到正确的节点:
- 一个 "smart" 客户端跟踪 "Partition Table"。
- 它使用哈希算法计算存储密钥的分区。
- 它在 "Partition Table" 中查找该分区并连接到包含给定副本的节点。
还有一个虚拟客户端的概念,它不知道应该连接到哪个节点。虚拟客户端发出的请求由它连接的节点路由到正确的节点(如果它不是巧合的正确节点)。
我是 Hazelcast 的初学者,正在努力理解以下内容。
在具有 3 个集群的正常对等设置中,每个集群都是一个单独的分区。根据请求,如何选择正确的分区?是否有任何路由器可以帮助每个请求?如何处理请求?
谢谢
Hazelcast 的核心是基于 "Distributed Hash Table",没有主节点。它与节点之间的两个共享知识一起工作:
- 在参与集群的节点的有序列表上
- 哈希函数
对于 1/,Hazelcast 使用从最老到最年轻的节点列表。这个信息是"easy"得到的,不需要通过一些选举来同步。 2/ 只是一些 code/configuration.
分布式哈希表的原理很简单:假设你有三个节点,顺序为 A B 和 C。如果你想知道哪个节点负责密钥 K,你只需对密钥进行散列,然后取模 3 .有0就是A节点,有1就是B节点,有2就是C节点
当然,这只是Hazelcast的一个简化视图:比如每个结构被拆分成X个分区,每个节点拥有多个分区。此外,每个分区都被复制。因此对于每个分区,有一个 "master" 个节点和几个 "backup" 个节点。但是你明白了:没有主节点,没有路由节点,每个数据所属的每个节点"knows"。
Hazelcast 不使用一致性哈希,因此 Jeremie B
给出的答案并不完全准确。
Hazelcast 中有几个重要的概念:
- 分区 - 默认情况下有 271 个分区,它们均匀分布在节点之间。每个节点拥有 "primary" 个分区并包含备份 "partitions".
- 散列函数 - 允许将键映射到分区,因此在简化版本中它看起来像这样
hash(key) % partitionCount = partition
- Partition table - 保留分区和节点之间的映射,或者更准确地说是分区和副本之间的映射。每个分区的第一个副本是 "primary" 分区,第二个,第三个......是备份。
为了联系到正确的节点:
- 一个 "smart" 客户端跟踪 "Partition Table"。
- 它使用哈希算法计算存储密钥的分区。
- 它在 "Partition Table" 中查找该分区并连接到包含给定副本的节点。
还有一个虚拟客户端的概念,它不知道应该连接到哪个节点。虚拟客户端发出的请求由它连接的节点路由到正确的节点(如果它不是巧合的正确节点)。