Клиентская библиотека Kinesis: несколько воркеров для потока

У меня есть .war, в котором у нас есть приложение Kinesis, которое обрабатывает поток, содержащий один осколок. Мы развертываем два экземпляра войны в производстве. В результате я бы получил двух рабочих, работающих над одним потоком с одним осколком. Каков рекомендуемый способ решения этой проблемы? Я попытался развернуть две войны на своей машине разработчика локально, и, похоже, это нормально в том смысле, что каждая запись обрабатывается только один раз. Я знаю, что AWS рекомендует по одному экземпляру на сегмент. Из их документов:

Typically, when you use the KCL, you should ensure that the number of instances does not exceed the number of shards (except for failure standby purposes). Each shard is processed by exactly one KCL worker and has exactly one corresponding record processor, so you never need multiple instances to process one shard.

person Navin Viswanath    schedule 30.06.2015    source источник


Ответы (1)


Вы, вероятно, в большинстве случаев в порядке. KCL сделает это за вас.

http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-ddb.html

Случай, в котором вы хотите проверить, умирает ли работник после обработки некоторых записей, но до контрольной точки. В этом случае исполнитель, который вступает во владение, повторно обработает некоторые записи (с последней контрольной точки). Может ли ваше приложение обрабатывать записи?

см. http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-duplicates.html.

person Mircea    schedule 30.06.2015