Сервис Amazon Kinesis Data Streams позволяет создавать собственные приложения для обработки или анализа потоковых данных при решении узкоспециальных задач. В соответствии с настройками в поток данных Amazon Kinesis могут непрерывно поступать данные из сотен тысяч источников. Например, можно передавать данные об истории посещений веб-сайтов, логи приложений и ленты социальных сетей. Ваши приложения Amazon Kinesis смогут считывать и обрабатывать данные из потока за доли секунды с момента их поступления.

На следующей архитектурной диаграмме сервис Amazon Kinesis Data Streams используется в качестве шлюза в системе обработки больших данных. Данные из различных источников помещаются в поток Amazon Kinesis, после чего могут использоваться различными приложениями Amazon Kinesis. В этом примере одно приложение (обозначено желтым) обрабатывает потоковые данные в режиме реального времени. Другое приложение (обозначено красным) выполняет простую агрегацию данных и отправляет обработанные данные в Amazon S3. Данные в Amazon S3 дополнительно обрабатываются и сохраняются в Amazon Redshift для комплексного анализа. Третье приложение (обозначено зеленым) передает исходные данные в Amazon S3, после чего они архивируются и отправляются в Amazon Glacier для экономически выгодного долгосрочного хранения. Примечательно, что вся эта непрерывная обработка данных выполняется одновременно и параллельно. Amazon Kinesis Data Streams позволяет использовать в своем решении любое количество потребителей потока данных без потери производительности.

kinesis-architecture-crop

Сегмент – это основная единица передачи данных потока Amazon Kinesis. Один сегмент обеспечивает передачу входных данных со скоростью 1 МБ/с и передачу выходных данных со скоростью 2 МБ/с. Один сегмент поддерживает до 1000 записей в секунду. При создании потока вы задаете требуемое количество сегментов. Например, можно создать поток с двумя сегментами. Этот поток обеспечит передачу входных данных со скоростью 2 МБ/с и передачу выходных данных со скоростью 4 МБ/с, поддерживая до 2000 записей в секунду. Мониторинг метрик сервиса Amazon Kinesis Data Streams можно выполнять на уровне сегментов, динамически добавляя или удаляя сегменты из потока по мере того, как скорость передачи данных меняется при изменении числа сегментов потока.

Запись – это единица данных, хранящихся в потоке Amazon Kinesis. Запись состоит из порядкового номера, ключа секции и BLOB-объекта данных. Блоб данных – это содержательная составляющая данных, которые ваш источник добавляет в поток. Максимальный размер BLOB-объекта данных(полезных данных, полученных после декодирования по схеме Base64) составляет 1 мегабайт (МБ).

Ключ секции используется для разделения и маршрутизации записей данных в различные сегменты потока. Ключ секции определяется источником данных, когда он размещает данные в потоке Amazon Kinesis. Предположим, что у вас есть поток Amazon Kinesis с двумя сегментами (сегмент 1 и сегмент 2). Можно настроить ваш источник данных на использование двух ключей секций (ключа A и ключа B), чтобы все записи данных с ключом A добавлялись в сегмент 1, а все записи данных с ключом B добавлялись в сегмент 2.

Порядковый номер – это уникальный идентификатор для каждой записи данных. Порядковый номер назначается сервисом Amazon Kinesis Data Streams в момент получения от источника данных вызова API PutRecord или PutRecords для добавления данных в поток данных Amazon Kinesis. Порядковый номер для одного и того же ключа секции со временем обычно увеличивается: чем больше времени прошло между запросами PutRecord или PutRecords, тем большее значение будет у порядкового номера.


Зарегистрировавшись в Amazon Web Services, можно начать работу с Amazon Kinesis Data Streams. Для этого нужно выполнить следующие действия.

  • Создать поток Amazon Kinesis с помощью консоли управления Amazon Kinesis или API CreateStream Amazon Kinesis.
  • Настроить источники данных для непрерывной передачи данных в поток Amazon Kinesis.
  • Создать приложения Amazon Kinesis для считывания и обработки данных из потока Amazon Kinesis.

Источники данных могут передавать данные в потоки данных Amazon Kinesis посредством API Amazon Kinesis Data Streams, библиотеки источников Amazon Kinesis (KPL) или агента Amazon Kinesis.

 

В Amazon Kinesis Data Streams имеется два API для размещения данных в потоке Amazon Kinesis: PutRecord и PutRecords. API PutRecord позволяет одним вызовом добавить одну запись данных, а API PutRecords позволяет одним вызовом добавить несколько записей данных.

Библиотека источников Amazon Kinesis (KPL) – это простая и удобно настраиваемая библиотека, позволяющая добавлять данные в поток Amazon Kinesis. Библиотека источников Amazon Kinesis (KPL) предоставляет простой и надежный асинхронный интерфейс, позволяющий быстро достичь высокой скорости передачи данных от источника при минимальных клиентских ресурсах.

Агент Amazon Kinesis – это встроенное приложение Java, позволяющее легко собирать и отправлять данные в поток Amazon Kinesis. Агент можно устанавливать в серверных средах Linux, таких как веб-серверы, лог-серверы и серверы баз данных. Агент отслеживает определенные файлы и непрерывно отправляет данные в поток.


Приложение Amazon Kinesis – это потребитель данных, который считывает и обрабатывает данные из потока Amazon Kinesis. Можно создать приложения Amazon Kinesis с помощью API Amazon Kinesis либо клиентской библиотеки Amazon Kinesis (KCL).

Клиентская библиотека Amazon Kinesis (KCL) – это встроенная библиотека, позволяющая легко создавать приложения Amazon Kinesis для считывания и обработки данных из потока Amazon Kinesis. Она берет на себя такие сложные задачи, как адаптация к изменениям объема потока, балансировка нагрузки потоковых данных, координация распределенных сервисов и отказоустойчивая обработка данных. KCL позволяет разработчику при разработке приложений Amazon Kinesis сосредоточить свое внимание на бизнес-логике.

Связующая библиотека Amazon Kinesis – это встроенная библиотека, позволяющая легко интегрировать Amazon Kinesis с другими сервисами AWS и инструментами сторонних разработчиков. Для использования связующей библиотеки Amazon Kinesis требуется клиентская библиотека Amazon Kinesis (KCL). Текущая версия этой библиотеки обеспечивает подключение к Amazon DynamoDB, Amazon Redshift, Amazon S3 и Elasticsearch. Кроме того, библиотека содержит примеры подключений для каждого типа, а также файлы построения Apache Ant для запуска примеров.

Amazon Kinesis Storm Spout – это встроенная библиотека, позволяющая легко интегрировать Amazon Kinesis Data Streams с Apache Storm. Текущая версия Amazon Kinesis Storm Spout извлекает данные из потока Amazon Kinesis и выводит их в виде кортежей. Чтобы использовать Amazon Kinesis Data Streams в качестве надежного и масштабируемого сервиса захвата потока, хранения и воспроизведения, необходимо добавить Spout в топологию Storm.


Amazon Kinesis Data Streams интегрирован с Amazon CloudWatch, что позволяет собирать, просматривать и анализировать метрики CloudWatch для потоков данных Amazon Kinesis и для сегментов внутри этих потоков. Дополнительную информацию о метриках Amazon Kinesis Data Streams см. на странице Мониторинг сервиса Amazon Kinesis с помощью Amazon CloudWatch.

Amazon Kinesis Data Streams интегрирован с сервисом AWS Identity and Access Management (IAM), который позволяет безопасно управлять доступом пользователей к сервисам и ресурсам AWS. Например, можно создать политику, которая будет позволять только определенному пользователю или группе размещать данные в потоке Amazon Kinesis. Дополнительную информацию об управлении доступом и контроле потока Amazon Kinesis см. на страницеУправление доступом к ресурсам Amazon Kinesis с помощью IAM.

Amazon Kinesis Data Streams интегрирован с сервисом AWS CloudTrail, который записывает вызовы API AWS для всего аккаунта и предоставляет файлы журналов. Дополнительную информацию о регистрации вызовов API, а также список поддерживаемых API Amazon Kinesis см. на странице Регистрация вызовов API Amazon Kinesis с помощью AWS CloudTrail.

Частный доступ к API Kinesis Data Streams можно получить из облака Amazon Virtual Private Cloud (VPC), создав адреса VPC. При использовании адресов VPC маршрутизация между VPC и Kinesis Data Streams осуществляется сетью AWS без помощи интернет-шлюза, шлюза NAT или VPN-подключения. Последнее поколение адресов VPC, применяемых Kinesis Data Streams, работает на основе AWS PrivateLink – технологии, которая обеспечивает частное соединение между сервисами AWS, используя в VPC эластичные сетевые интерфейсы (ENI) с частными IP-адресами. Дополнительную информацию см. в документации AWS PrivateLink.

Данные, которые передаются в Kinesis Data Streams, можно шифровать, используя шифрование на стороне сервера или шифрование на стороне клиента. Шифрование на стороне сервера является полностью управляемой возможностью, автоматически шифрующей и дешифрующей данные по мере их передачи в поток и получения из него. Кроме того, можно шифровать данные на стороне клиента, перед тем как они будут переданы в поток. Подробнее см. в разделе Безопасность на странице вопросов и ответов по Kinesis Data Streams.

Amazon Kinesis позволяет помечать потоки данных Amazon Kinesis с помощью тегов для облегчения управления ресурсами и расходами. Тег – это пользовательская метка, выраженная в виде пары «ключ-значение», которая упрощает организацию ресурсов AWS. Например, можно назначить теги потокам данных Amazon Kinesis по центрам затрат, что позволит разделить их на категории и отслеживать расходы Amazon Kinesis на основе центров затрат. Дополнительную информацию по этой теме см. на странице Использование тегов в Amazon Kinesis Data Streams.