В этом посте рассказывается об Amazon Kinesis. Если вы не знаете, что это, взгляните на этот пост.

Впервые взглянув на KCL, я подумал: «Какой бардак! Приложение Java, которое будет вызывать мое приложение Node.js через консольную строку. Это хорошо?".

Почему Amazon разработала Java-приложение для вызова моего узлового приложения через консоль? И они нашли очень красивое название для этого обходного пути: «Multi Language Daemon Protocol».

Вкратце, KCL будет читать записи из Kinesis и вызывать файл, который я настроил в app.properties, при следующих событиях:

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

Чтобы узнать больше о Kinesis и Node.js, я настоятельно рекомендую эту статью.

Но хорошо, поскольку они настоятельно рекомендуют использовать KCL, даже с этими недостатками, я взглянул на KCL. А KCL - отличный выбор для разработки вашего стримингового клиента. Вам не нужно будет обрабатывать параллелизм и хранить прочитанные вами элементы, вам нужно только предоставить функцию для обработки каждой записи.

Я перечислю некоторые особенности KCL:

  • Сохранить последний прочитанный элемент: KCL создаст и обновит таблицу DynamoDB с именем вашего приложения (установленным в app.properties). В этой таблице указывается, какой элемент был прочитан последним (контрольная точка) для каждого шарда.
  • Обработка использования нескольких KCL: каждый сегмент может быть прочитан только одним KCL. Но KCL может обрабатывать несколько шардов. Например, если ваш поток имеет 10 шардов и 2 KCL выполняются для одного и того же приложения, каждый KCL будет автоматически назначен на 5 шардов. Если вы запустите дополнительный KCL, один из них будет назначен 4 осколкам, а два других - 3 осколкам (автоматически).
  • KCL автоматически генерирует метрики CloudWatch. Он генерирует множество метрик, которые можно найти в CloudWatch в разделе Custom Metrics, найдите имя приложения. Для получения дополнительной информации о показателях KCL CloudWatch прочтите эту статью.

Несколько советов при использовании KCL:

  • Перед запуском KCL необходимо установить учетные данные. Можно использовать роли IAM, файл учетных данных, переменные среды и другие. Вы можете найти дополнительную информацию о настройке Учетные данные AWS здесь. Необходимо установить AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY (если роль IAM не используется).
  • Разрешения: KCL должен иметь разрешение на создание и обновление метрик CloudWatch, создание и обновление таблиц DynamoDB и чтение записей из Kinesis.
  • Следите за файлом, который будет запускать KCL. Если у вас есть синтаксическая ошибка в этом файле при ошибке в функции вне записи процесса, это может повлиять на то, как обрабатываются записи.
  • Вы должны гарантировать, что ваше приложение вызывает completeCallback () при инициализации, завершении работы и processRecords. Если вы не позвоните, KCL не сможет инициировать какое-либо другое событие для вашего приложения.
  • Используйте контрольные точки при обработке ваших записей, но помните, что completeCallback () должен вызываться внутри обратного вызова контрольной точки.