Введение
В этом модуле мы рассмотрим очереди сообщений и потоковую обработку. С ростом интернет-служб и доступности постоянных потоков данных в режиме реального времени появилась задача обрабатывать такие потоки данных практически в реальном времени.
Потоки должны просматриваться как бесконечные последовательности небольших сообщений, поступающих постоянно, без перерывов. Данные не передаются на хранение, а системы потоковой обработки, отвечающие за обработку таких потоков, должны иметь возможность постоянно принимать и обрабатывать данные.
Для начала рассмотрим основные идеи, на которых основаны идеи очередей сообщений. Здесь же мы обсудим абстракции, которые предоставляются системами очередей сообщений и полезны для распределенной потоковой обработки. Примером распределенной системы очередей сообщений, набирающей в последнее время большую популярность, является Kafka от Apache.
Далее мы рассмотрим системы потоковой обработки и выясним мотивы таких систем для обработки потоков данных в режиме реального времени. Главная проблема потоковой обработки — это управление состоянием. Определенные рабочие нагрузки потоковой обработки изначально выполняются без отслеживания состояния, так как могут выполняться в отдельных сообщениях потоков и за счет этого довольно легко масштабируются. Координации данных или состояния между выполняемыми параллельно процессами нет.
Рабочие нагрузки потоковой обработки с отслеживанием состояния требуют управления состоянием, которое обновляют сообщения. Процессы потоков с отслеживанием состояния сложнее управлять и масштабироваться. Это особенно верно, когда частота сообщений, поступающих в поток, увеличивается или число одновременных потоков, которые необходимо обрабатывать. Такие методы, как оконная фильтрация потоков, позволяют обрабатывать сразу несколько потоков сообщений пакетами.
В финале мы сведем все воедино и рассмотрим ряд архетипов обработки больших данных, которые обсуждались в индустрии за последние несколько лет. Сторонники лямбда-архитектуры предлагают многоуровневый подход с использованием пакетного уровня для обновления состояния данных и высокоточной системы пакетной обработки и высокой пропускной способностью и большой задержкой. Новейшие данные при этом обрабатывает система потоковой обработки с низкой задержкой, не дающая такой высокой точности. Альтернативой является архитектура Kappa, которая полностью отказывается от пакетной обработки и использует для получения необходимых результатов системы потоковой обработки.
Цели обучения
Изучив этот модуль, вы сможете:
- Дадим определение очереди сообщений и вспомним базовую архитектуру
- Вспомним характеристики и предоставим плюсы и минусы очереди сообщений
- Разберем базовую архитектуру Apache Kafka
- Обсудим роли тем и разделов, а также способы обеспечения масштабируемости и отказоустойчивости
- Обсудим общие требования систем потоковой обработки
- Вспомним, как развивалась потоковая обработка
- Рассмотрим основные компоненты Apache Samza
- Обсудим, как Apache Samza обеспечивает потоковую обработку с отслеживанием состояния
- Обсудим различия между лямбда- и каппа-архитектурами
- Обсудим поводы для внедрения очередей сообщений и потоковой обработки в примере с LinkedIn
Необходимые компоненты
- Понимание темы облачных вычислений, в том числе знакомство с моделями и некоторыми поставщиками облачных служб.
- Знание технологий, лежащих в основе облачных вычислений.
- Представление о том, как поставщики облачных служб управляют оплатой и выставлением счетов за использование облака.
- Знание понятия центров обработки данных и их назначения.
- Знания в области настройки, поддержки и подготовки центров обработки данных.
- Представление о том, как подготавливаются и измеряются облачные ресурсы.
- Знакомство с понятием виртуализации.
- Знание различных типов виртуализации.
- Представление о виртуализации ЦП.
- Представление о виртуализации памяти.
- Представление о виртуализации ввода-вывода.
- Знания различных типов данных и об их хранении
- Знакомство с распределенными файловыми системами и принципами их работы.
- Знакомство с базами данных NoSQL и хранилищем объектов, а также с принципами их работы
- Представление о том, что такое распределенное программирование и почему оно подходит для облачной среды
- Представление о MapReduce и о том, каким образом эта модель позволяет выполнять вычисления с большими объемами данных
- Представление о Spark и отличии этой платформы от MapReduce
- Представление о GraphLab и отличии этой платформы от MapReduce и Spark