Amazon Kinesis
Amazon Kinesis — это облачный сервис потоковой обработки данных в реальном времени, предоставляемый Amazon Web Services (AWS). Он предназначен для сбора, хранения, обработки и анализа больших объёмов потоковых данных (стримов) от тысяч источников, таких как логи веб-приложений, данные с IoT-устройств, метрики инфраструктуры, транзакции и данные социальных сетей. Kinesis позволяет обрабатывать данные с минимальной задержкой (от секунд до нескольких минут) и масштабироваться под любые объёмы входящего трафика без необходимости управления серверной инфраструктурой.
История
Сервис Amazon Kinesis был впервые анонсирован компанией Amazon в 2013 году на конференции re:Invent. Первоначально он назывался Amazon Kinesis Streams и представлял собой управляемую платформу для потоковой обработки данных. В 2014 году сервис стал общедоступным. В последующие годы AWS расширила функциональность, добавив:
- Amazon Kinesis Firehose (2015) — сервис для автоматической загрузки потоковых данных в хранилища AWS (S3, Redshift, Elasticsearch Service) и сторонние системы (Splunk, Datadog, New Relic).
- Amazon Kinesis Analytics (2016) — сервис для выполнения аналитических запросов к потокам данных в реальном времени с использованием стандартного SQL.
- Amazon Kinesis Video Streams (2017) — сервис для потоковой передачи видео с камер и других устройств, а также для его обработки с помощью машинного обучения.
- Amazon Kinesis Data Streams (KDS) — переименование оригинального сервиса, в котором были расширены возможности масштабирования и управления шардами.
Архитектура и компоненты
Amazon Kinesis состоит из четырёх основных компонентов, каждый из которых решает свою задачу в обработке потоковых данных.
Amazon Kinesis Data Streams (KDS)
Это основной сервис для построения собственных приложений потоковой обработки. Он работает по модели «производитель-потребитель»:
- Производители (Producers): Отправляют записи данных в поток. Каждая запись состоит из ключа раздела (partition key), который определяет, в какой шард (shard) попадут данные, и тела записи (blob) — собственно данных.
- Шарды (Shards): Основная единица пропускной способности потока. Каждый шард обеспечивает пропускную способность до 1 МБ/с на запись и до 2 МБ/с на чтение. Количество шардов можно динамически увеличивать или уменьшать, что позволяет масштабировать поток под нагрузку.
- Потребители (Consumers): Приложения (например, Lambda-функции, EC2-инстансы, приложения на Spark или Flink), которые читают данные из шардов. KDS поддерживает два режима чтения: стандартный (shared throughput) и улучшенный (enhanced fan-out) с выделенными каналами для каждого потребителя.
KDS гарантирует упорядоченность записей внутри одного шарда, но не гарантирует глобальный порядок по всему потоку.
Amazon Kinesis Data Firehose
Это полностью управляемый сервис для загрузки потоковых данных в целевые хранилища без необходимости писать код потребителя. Он автоматически:
- Принимает данные от производителей (через API, SDK, агенты или напрямую из KDS).
- Преобразует данные (конвертация формата, сжатие, шифрование).
- Доставляет данные в указанное хранилище с заданной периодичностью (например, каждые 60 секунд или при накоплении 5 МБ данных).
Firehose не поддерживает повторное чтение данных — после доставки данные удаляются из буфера.
Amazon Kinesis Data Analytics
Это сервис для выполнения аналитических запросов к потокам данных в реальном времени. Он использует Apache Flink в качестве движка обработки. Пользователь может писать SQL-запросы или код на Java/Scala для выполнения таких операций, как:
- Агрегация (сумма, среднее, максимум, минимум) за временные окна.
- Фильтрация.
- Обогащение данных из статических источников (например, из базы данных DynamoDB).
- Обнаружение аномалий.
Результаты анализа могут быть записаны обратно в KDS, Firehose или другие сервисы AWS.
Amazon Kinesis Video Streams
Этот сервис предназначен для потоковой передачи видео и аудио в реальном времени. Он обеспечивает:
- Приём: Поддержка протоколов RTSP, WebRTC, HLS.
- Хранение: Видео хранится в зашифрованном виде в течение заданного срока (от 1 до 10 лет).
- Обработка: Интеграция с сервисами AWS AI/ML (например, Amazon Rekognition для распознавания лиц, объектов, сцен) и с собственными моделями машинного обучения.
- Воспроизведение: Возможность воспроизведения видео в реальном времени и из архива через веб-плеер или API.
Применение
Amazon Kinesis используется в различных сценариях, где требуется обработка данных в реальном времени:
- Мониторинг и логирование: Сбор и анализ логов веб-серверов, приложений, инфраструктуры. Например, выявление ошибок 500 в реальном времени и отправка уведомлений.
- Аналитика в реальном времени: Анализ поведения пользователей на сайте или в мобильном приложении: какие страницы просматривают, какие товары добавляют в корзину, какие действия совершают.
- Обработка IoT-данных: Сбор данных с миллионов датчиков, устройств и сенсоров. Например, мониторинг температуры, вибрации, давления на промышленном оборудовании.
- Финансовые транзакции: Обнаружение мошеннических операций в реальном времени, обработка биржевых котировок, мониторинг платежей.
- Социальные сети и медиа: Анализ трендов, мониторинг упоминаний бренда, обработка потоков видео с камер наблюдения или трансляций.
Интеграция с другими сервисами AWS
Kinesis тесно интегрирован с экосистемой AWS:
- AWS Lambda: Lambda-функции могут выступать как потребители KDS или как производители для Firehose. Это позволяет строить бессерверные (serverless) пайплайны обработки данных.
- Amazon S3: Firehose может доставлять данные в S3 для долгосрочного хранения и последующего анализа с помощью Athena или EMR.
- Amazon Redshift: Firehose может загружать данные напрямую в Redshift для аналитики.
- Amazon DynamoDB: Kinesis Data Analytics может обогащать потоки данными из DynamoDB.
- Amazon CloudWatch: Kinesis может отправлять метрики и логи в CloudWatch для мониторинга.
Преимущества и ограничения
Преимущества
- Полностью управляемый сервис: AWS берёт на себя управление инфраструктурой, масштабирование, мониторинг и обеспечение отказоустойчивости.
- Масштабируемость: Пропускная способность легко масштабируется за счёт добавления шардов (для KDS) или настройки конфигурации Firehose.
- Низкая задержка: Обработка данных происходит в реальном времени с задержкой от секунд до нескольких минут.
- Надёжность: Данные реплицируются в нескольких зонах доступности (Availability Zones) в рамках региона AWS.
- Гибкость: Поддержка различных форматов данных (JSON, CSV, Avro, Parquet), возможность написания собственных потребителей и аналитических запросов.
Ограничения
- Сложность настройки: Для сложных сценариев (например, обработка данных с помощью Apache Flink) требуется глубокая экспертиза в потоковой обработке.
- Стоимость: Стоимость может быть высокой при больших объёмах данных, особенно при использовании Enhanced Fan-Out в KDS.
- Зависимость от AWS: Сервис является проприетарным и не может быть развёрнут вне облака AWS.
- Задержка при записи: В KDS запись данных может блокироваться при превышении пропускной способности шарда, что требует мониторинга и масштабирования.
Безопасность
Amazon Kinesis поддерживает шифрование данных в покое (с помощью AWS KMS) и в транзите (с помощью TLS). Доступ к потокам контролируется через политики IAM (Identity and Access Management). Также поддерживается аудит доступа через AWS CloudTrail.
Источники
- Документация Amazon Web Services: «Amazon Kinesis Data Streams Developer Guide», «Amazon Kinesis Data Firehose Developer Guide», «Amazon Kinesis Data Analytics Developer Guide», «Amazon Kinesis Video Streams Developer Guide».
- Официальный блог AWS: анонсы и обновления сервиса Amazon Kinesis.
- Книга «Streaming Data: Understanding the Real-Time Pipeline» by Andrew G. Psaltis.
- Материалы конференции AWS re:Invent: доклады, посвящённые потоковой обработке данных.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →