Я использую ConsistentHashingRouter для распределения данных от актора к набору других акторов. Каждое сообщение содержит кортеж вроде этого (items: Set[Int], msg: String)
. Я написал класс case, который реализует ConsistentHashable с определением набора целых чисел в качестве последовательного хэш-ключа, подобного этому.
case class Message(items: Set[Int], msg: String) extends ConsistentHashable {
def consistentHashKey = items
}
Теперь, когда я позволяю какому-то актеру-производителю отправлять много сообщений на маршрутизатор, маршрутизатор довольно неравномерно распределяет их по целевым узлам.
Я пробовал это с другим количеством целевых актеров. Во всех случаях актор с наибольшим количеством полученных сообщений получил вдвое больше сообщений, чем актор с наименьшим количеством полученных сообщений.
При использовании хеширования я ожидаю, что сообщения будут равномерно распределяться между целями, или я что-то здесь упускаю?