Сейчас мы работаем над проектом, который реализует и использует Azure Eventhub. Мы используем хост обработчика событий для обработки данных из Eventhub. У нас есть 32 раздела, распределенных по 3 узлам, и мы задаемся вопросом, как Хост обработчика событий распределяет и балансирует разделы между получателями / узлами - особенно при использовании ключа раздела.
В настоящее время у нас есть 4 разных клиента (синий, оранжевый, фиолетовый и светло-синий), которые отправляют нам данные разных размеров. Как вы видите, синий клиент слева отправляет ок. 132 тыс. Строк данных, в то время как светло-голубой клиент справа только отправляет 28. Наша теория состояла в том, что с учетом ключа раздела, основанного на клиенте (coloridentification), мы увидим, что данные о клиентах будут размещаться только в одном узле. Вместо этого мы можем видеть, что данные как-то равномерно распределены по 3 узлам, как показано ниже:
Узел 1:
Узел 2:
Узел 3:
Есть ли что-то мы неправильно поняли, как работает использование ключа раздела? Из того, что мы прочитали в документации, затем, когда мы не указываем ключи раздела, будет использоваться «циклический» подход - но даже с использованием ключа раздела он каким-то образом распределяет их равномерно. Мы как-то подчеркиваем узлы - у синего клиента огромный объем данных, а у другого почти ничего нет? Или что происходит?
Чтобы представить нашу теорию, мы нарисовали следующее:
Итак, мы подчеркиваем верхний узел с синим клиентом, что в итоге должно переместить раздел на средний узел?