Что такое 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) в своих операциях и обработке данных.