我使用 ConsistentHashingRouter 将数据从一个参与者分发到一组其他参与者。每条消息都包含一个这样的元组(items: Set[Int], msg: String)
。我编写了一个实现 ConsistentHashable 的案例类,将整数集定义为像这样的一致哈希键。
case class Message(items: Set[Int], msg: String) extends ConsistentHashable {
def consistentHashKey = items
}
现在,当我让一些生产者参与者向路由器发送大量消息时,路由器将它们非常不均匀地分配给目标节点。
我尝试了不同数量的目标演员。在所有情况下,收到消息最多的参与者收到的消息量是收到消息最少的参与者的两倍多。
使用散列时,我希望消息在目标之间均匀分布,或者我在这里遗漏了什么?