Обрабатывать несколько потоков Kinesis в рамках одного процесса Java - PullRequest
0 голосов
/ 05 февраля 2019

Я хотел бы обработать несколько потоков Kinesis с использованием KCL в одном и том же Java-процессе.

Идея проста: создать новый экземпляр KCL для каждого потока, а затем запустить рабочих одновременно.

Мой вопрос заключается в том, используют ли в этом случае все экземпляры KCL один и тот же пул потоков, и является ли эта идея хорошей / распространенной практикой при работе с потоковой обработкой.

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Конечно, вы можете сделать это - просто раскрутите несколько экземпляров KCL Worker , каждый из которых указывает на отдельный поток (со своей конфигурацией и т. Д.).Каждый экземпляр Worker должен управлять своими собственными потоками ShardConsumer независимо от других Workers.

Однако более распространенной / рекомендуемой практикой является запуск каждого Worker в своем собственном процессе - это обеспечивает большую разделенность, что улучшит:

  1. случаи сбоев - предотвращение влияния одного сбоя на всех работников
  2. развертываний / обновлений - больший контроль над количеством рабочих для одновременного обновления
  3. управление оборудованием - одинWorker на процесс легче распределить по нескольким небольшим хостам, особенно когда ваши требования к обработке возрастают
  4. сложность разработки - хотя KCL поддерживает несколько Workers в одном процессе, гораздо проще разрабатывать для каждого Worker как отдельный процесс
...