我是Hazelcast的初学者,并试图理解以下内容。
在具有3个集群的普通对等设置中,每个集群都是单独的分区。根据请求,如何选择正确的分区?有没有可以帮助每个请求的路由器?如何提供请求?
由于
答案 0 :(得分:3)
Hazelcast的核心基于“分布式哈希表”,没有主节点。它适用于节点之间的两种共享知识:
对于1 /,Hazelcast使用从最老到最年轻的节点列表。这些信息“容易”获取,不需要通过某种选举进行同步。 2 /只是一些代码/配置。
DHT的原理很简单:想象一下,你有三个节点,排序为AB和C.如果你想知道哪个节点负责一个密钥K,你只需对密钥进行散列,并取此值为模3。你有0,它是节点A,如果你有1,它是节点B,2,它是节点C.
当然,它只是Hazelcast的简化视图:例如,每个结构都分为X个分区,每个节点拥有多个分区。而且,每个分区都被复制。因此,对于每个分区,有一个“主”节点和几个“备份”节点。但你明白了这一点:没有主节点,没有路由节点,每个节点都“知道”每个数据所属的位置。
答案 1 :(得分:3)
Hazelcast不使用一致性散列,因此Jeremie B
给出的答案并不准确。
Hazelcast中有几个重要的概念:
hash(key) % partitionCount = partition
要联系正确的节点:
还有一个虚拟客户端的概念,它不知道它应该连接到哪个节点。虚拟客户端发出的请求由它连接的节点路由到右侧节点(如果它不是正确的节点,则重合)。