Что такое AWS Kinesis? Шаблон проектирования, варианты использования и сравнение

Опубликовано: 2022-07-01

Мы живем в эпоху интеграции между приложениями, мгновенных уведомлений и мгновенных обновлений данных. В таком сценарии становится более важным создавать, поддерживать и модифицировать системы реального времени.

За прошедшие годы были разработаны различные полезные инструменты, помогающие создавать и поддерживать такие кросс-платформенные системы. RabbitMQ, Kafka и AWS Kinesis — это три таких инструмента, которые помогли разработчикам и инженерам беспрепятственно работать с данными в реальном времени. Все эти системы создавались и поддерживались с учетом разных целей. Таким образом, они имеют свои преимущества и ограничения в зависимости от выполняемой работы.

В этой статье будет подробно рассказано об AWS Kinesis и о том, как он работает.

Kinesis — это потоковый сервис, созданный на основе AWS. Его можно использовать для обработки всех видов данных — от журналов, данных IoT, видеоданных, практически любого формата данных. Это позволяет запускать различные модели машинного обучения и обрабатывать данные в режиме реального времени по мере их прохождения через вашу систему. Следовательно, это упрощает работу с традиционными базами данных, повышая при этом общую эффективность.

Оглавление

Ознакомьтесь с нашими популярными курсами MBA

Магистр делового администрирования Университета Золотых Ворот Магистр делового администрирования (MBA) Ливерпульская школа бизнеса MBA бизнес-школы Дикина
MBA в области цифрового маркетинга Университета Декин Executive MBA от SSBM Посмотреть все курсы MBA

Шаблон дизайна Pub/Sub

Прежде чем мы углубимся в то, как именно можно использовать Kinesis, важно узнать немного больше о модели дизайна, которую он использует. В данном случае мы говорим о дизайне издателя и подписчика, который часто называют шаблоном проектирования pub/sub. Этот шаблон проектирования был разработан для того, чтобы издатель — отправитель сообщения — отправлял события в Kinesis — шину событий. Затем эта шина событий успешно распределяет входные данные по всем подписчикам.

Один из ключевых моментов, о котором следует помнить, заключается в том, что издатели, по сути, понятия не имеют о существовании каких-либо подписчиков. Весь обмен сообщениями и их транспортировка полностью управляются AWS Kinesis.

Иными словами, шаблон дизайна pub/sub используется для эффективной передачи сообщений без создания сильно связанного дизайна. Вместо этого Kinesis фокусируется на использовании независимых компонентов и построении на их основе общего распределенного рабочего процесса.

По сути, AWS Kinesis — это мощный инструмент потоковой передачи, который предлагает явные преимущества, особенно по сравнению с другими инструментами потоковой передачи в реальном времени. Одним из таких преимуществ является то, что это управляемая служба, поэтому разработчикам не нужно заниматься системным администрированием. Это позволяет разработчикам больше сосредоточиться на своем коде и системах и меньше на административных обязанностях.

Теперь давайте рассмотрим некоторые варианты использования Kinesis.

Вариант использования AWS Kinesis — потоковая передача данных

AWS Kinesis полезен для больших и малых компаний, которые хотят управлять своими данными и интегрировать их на разных платформах. Kinesis полезен в крупномасштабных и небольших сценариях для организаций, которые хотят управлять своими данными и интегрировать их на разных платформах.

Давайте рассмотрим два крупных случая использования, когда компании использовали AWS Kinesis для беспрепятственного управления большими объемами данных в режиме реального времени.

Нетфликс

Netflix использует AWS Kinesis для ежедневной обработки нескольких ТБ данных журнала. Netflix требуется централизованное приложение, которое регистрирует все данные в режиме реального времени. Используя Kinesis, Netflix разработал Dredge, который обогащает контент метаданными в режиме реального времени. Таким образом, данные обрабатываются мгновенно, когда они проходят через Kinesis. Это устраняет один утомительный этап загрузки данных в базу данных для дальнейшей обработки.

Веритон

Veriton предоставляет услуги искусственного интеллекта и машинного обучения. Он использует видеопотоки AWS Kinesis для обработки данных клиентов. Veriton также применяет модели машинного обучения и ИИ к контенту в режиме реального времени, чтобы улучшить его с помощью метрик и метаданных. Используя эту дополнительную информацию, Veritone упрощает поиск видеопотоков Kinesis, просматривая звук, распознавание лиц, тегированные данные и т. д.

Это лишь два из многочисленных примеров того, как сегодня компании используют AWS Kinesis для более эффективной работы с потоковыми данными в реальном времени.

Давайте перейдем к техническим аспектам и основным компонентам потока AWS Kinesis.

Изучайте курсы по искусственному интеллекту и машинному обучению в лучших университетах мира. Заработайте программы Masters, Executive PGP или Advanced Certificate Programs, чтобы ускорить свою карьеру.

Потоки против пожарного шланга

AWS Kinesis предлагает разработчикам два основных продукта — Kinetic Streams и Kinesis Firehose.

Для работы с Kinesis Stream вам потребуется библиотека Kinesis Producer. Это позволит вам поместить все данные в реальном времени в ваш поток. Кроме того, вы можете подключить эту библиотеку практически к любому приложению или процессу. Однако Kinesis Streams не является полностью управляемым сервисом. Таким образом, команда разработчиков должна будет масштабировать его вручную, когда это необходимо. Кроме того, данные, загруженные в поток, будут оставаться там в течение семи дней.

Kinesis Firehose реализовать немного проще. Данные, переданные в Kinesis Firehose, отправляются в Amazon Redshift, Amazon S3 и даже Elasticsearch — все с использованием механизма AWS Kinesis. После этого вы можете обработать его в соответствии с вашими требованиями. Если данные хранятся в Amazon S3 или любой другой системе хранения AWS, вы можете оставить их там на любое время.

Настройка трансляции в Kinesis

Прежде чем приступить к работе с Kinesis, необходимо настроить поток, открыв интерфейс командной строки AWS. В командной оболочке введите следующую команду, чтобы создать поток с именем DataProcessingStream.

– имя-потока DataProcessingStream \

–количество осколков 1 \

–регион eu-west-1

Создание потокового конвейера с помощью Python

После того, как вы настроили поток в Kinesis, вы должны начать создавать производителя и потребителя. Основные компоненты Kinesis помогают создать уровень доступа для интеграции других систем, программного обеспечения и приложений.

В этом руководстве мы будем работать с библиотекой Python boto3 для подключения к Kinesis.

Создание продюсера

Используйте приведенный ниже код для создания производителя с помощью языка программирования Python:

импорт бото3

импортировать json

журнал импорта

logging.basicConfig(уровень = logging.INFO)

сеанс = boto3.Session(region_name='eu-west-1')

клиент = session.client('kinesis')

test_data = {'data_tag': 'DataOne', 'score': '10', 'char': 'Database Warrior'}

ответ = client.put_record(

StreamName='DataProcessingStream',

Данные = json.дампы ({

«тег_данных»: test_data['тег_данных'],

«оценка»: test_data['оценка'],

«char»: test_data['char']

}),

Ключ раздела = 'a01'

)

logging.info («Введите новую оценку данных: %s», test_data)

Чтобы получить данные, вам нужен еще один скрипт для прослушивания данных, передаваемых производителям. Для этого вы можете использовать ShardIterator, чтобы получить доступ ко всем данным, поступающим в Kinesis. Таким образом, вы можете получить доступ к текущим и будущим записям в Kinesis.

Создание потребителя

Используйте приведенный ниже код для создания потребителя Python:

импорт бото3

импортировать json

импорт системы

журнал импорта

logging.basicConfig(уровень = logging.INFO)

сеанс = boto3.Session(region_name='eu-west-1')

клиент = session.client('kinesis')

aws_kinesis_stream = client.describe_stream(StreamName='DataProcessingStream)

shard_id = aws_kinesis_stream['StreamDescription']['Shards'][0]['ShardId']

stream_response = client.get_shard_iterator(

StreamName='DataProcessingStream',

ShardId=shard_id,

ShardIteratorType='TRIM_HORIZON'

)

iterator = stream_response['ShardIterator']

пока верно:

пытаться:

aws_kinesis_response = client.get_records (ShardIterator = итератор, предел = 5)

iterator = aws_kinesis_response['NextShardIterator']

для записи в aws_kinesis_response['Records']:

если «Данные» в записи и len(record['Data']) > 0:

logging.info("Получен новый показатель данных: %s", json.loads(record['Data']))

кроме KeyboardInterrupt:

sys.exit()

В приведенном выше примере мы только распечатываем данные.

Проблемы с Kinesis Pipelines

Kinesis действительно полезен, но не обходится без проблем и недостатков. Одна из серьезных проблем, с которой вы столкнетесь при работе с Kinesis, может быть названа «наблюдаемостью».

По мере работы с несколькими компонентами AWS создаваемая вами система будет становиться все более сложной. Например, если вы используете функции Lambda в качестве производителя и потребителя и подключаете их к разным системам хранения AWS, становится очень сложно управлять и отслеживать зависимости и ошибки.

Читайте наши популярные статьи, связанные с MBA

Зарплата финансового аналитика - первокурсники и опытные Лучшие вопросы и ответы на собеседованиях для HR Варианты карьеры MBA Marketing в США
Лучшие варианты карьеры в США после MBA в области управления персоналом 7 лучших вариантов карьеры в продажах Самые высокооплачиваемые финансовые рабочие места в США: от среднего до самого высокого
7 лучших вариантов карьеры в сфере финансов в США: обязательны к прочтению Топ-5 маркетинговых трендов 2022 года Зарплата MBA в США в 2022 году [все специализации]

В заключение

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

Магистр наук upGrad в области машинного обучения и искусственного интеллекта , предлагаемый в сотрудничестве с IIIT-B и LJMU, представляет собой 18-месячный комплексный курс, призванный помочь вам начать с самых основ исследования данных и достичь всех важнейших концепций NLP, Deep Обучение, обучение с подкреплением и многое другое. Более того, вы можете работать над отраслевыми проектами, всесторонней карьерной поддержкой, персонализированным наставничеством, возможностями для общения с коллегами и многим другим, что поможет вам освоить машинное обучение и искусственный интеллект.

1. Может ли AWS Kinesis извлекать данные?

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

2. Может ли один поток Kinesis иметь несколько потребителей?

Да, используя итераторы сегментов, вы можете предоставлять несколько потребителей в одном потоке Kinesis.

3. С какой очередью работает AWS Kinesis?

AWS Kinesis работает по принципу FIFO (First In First Out) в своих операциях и обработке данных.