Как обеспечить, чтобы каждый экземпляр приложения выбирал уникальный раздел - PullRequest
0 голосов
/ 24 мая 2019

Контекст:

Мы хотели бы иметь несколько приложений Job Creator, которые создают рабочие места.Также хотелось бы иметь ряд легко управляемых приложений Job Executor, которые будут выполнять эти задания.Некоторые задания могут выполняться дольше, чем другие.В настоящее время изучается возможность использования Event Hub в качестве уровня обмена сообщениями.

У меня есть вопрос о том, как достичь ниже

  • меньшей сложности при эксплуатации
  • нагрузка распределяется равномерно по заданиюexecutors

  1. Приложение Job Executor для автоматического получения работы с уникальных разделов Event Hub, чтобы было проще развертывать / масштабировать реплики в Kubernetes вместо настройки чтения отдельных экземпляров.из определенных разделов.

Предположим, что нижеприведенный код используется для получения заданий,

client = EventHubClient.from_connection_string(connection_str)
receiver = client.add_receiver(consumer_group="$default", partition="0", offset=Offset('@latest'))
 try:
    client.run()
    logger = logging.getLogger("azure.eventhub")
    received = receiver.receive(timeout=5, max_batch_size=100)

На основании приведенного выше кода Python SDK, номер раздела должен быть указан во время инициализации.Предпочел бы, чтобы экземпляры приложения Job Executor работали как competing consumers так же, как в очереди RabbitMQ или клиенте чтения тем Kafka.

Также, каков эффективный способ распределения рабочей нагрузки / рабочих мест между разделами;может сделать хеширование (в приложении создателя работы или в приложении Job-Router), но есть ли лучший способ?Или есть ограничение балансировки нагрузки с помощью системы обмена сообщениями / асинхронной передачи на основе разделов?

Ссылки:

  1. https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-features#consumer-groups
  2. https://www.tutorialspoint.com/apache_kafka/apache_kafka_consumer_group_example.htm
  3. https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/eventhub/azure-eventhubs#receive-event-data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...