Введение

Завершено

В этом модуле мы рассмотрим очереди сообщений и потоковую обработку. С ростом интернет-служб и доступности постоянных потоков данных в режиме реального времени появилась задача обрабатывать такие потоки данных практически в реальном времени.

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

Для начала рассмотрим основные идеи, на которых основаны идеи очередей сообщений. Здесь же мы обсудим абстракции, которые предоставляются системами очередей сообщений и полезны для распределенной потоковой обработки. Примером распределенной системы очередей сообщений, набирающей в последнее время большую популярность, является Kafka от Apache.

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

Рабочие нагрузки потоковой обработки с отслеживанием состояния требуют управления состоянием, которое обновляют сообщения. Процессы потоков с отслеживанием состояния сложнее управлять и масштабироваться. Это особенно верно, когда частота сообщений, поступающих в поток, увеличивается или число одновременных потоков, которые необходимо обрабатывать. Такие методы, как оконная фильтрация потоков, позволяют обрабатывать сразу несколько потоков сообщений пакетами.

В финале мы сведем все воедино и рассмотрим ряд архетипов обработки больших данных, которые обсуждались в индустрии за последние несколько лет. Сторонники лямбда-архитектуры предлагают многоуровневый подход с использованием пакетного уровня для обновления состояния данных и высокоточной системы пакетной обработки и высокой пропускной способностью и большой задержкой. Новейшие данные при этом обрабатывает система потоковой обработки с низкой задержкой, не дающая такой высокой точности. Альтернативой является архитектура Kappa, которая полностью отказывается от пакетной обработки и использует для получения необходимых результатов системы потоковой обработки.

Цели обучения

Изучив этот модуль, вы сможете:

  • Дадим определение очереди сообщений и вспомним базовую архитектуру
  • Вспомним характеристики и предоставим плюсы и минусы очереди сообщений
  • Разберем базовую архитектуру Apache Kafka
  • Обсудим роли тем и разделов, а также способы обеспечения масштабируемости и отказоустойчивости
  • Обсудим общие требования систем потоковой обработки
  • Вспомним, как развивалась потоковая обработка
  • Рассмотрим основные компоненты Apache Samza
  • Обсудим, как Apache Samza обеспечивает потоковую обработку с отслеживанием состояния
  • Обсудим различия между лямбда- и каппа-архитектурами
  • Обсудим поводы для внедрения очередей сообщений и потоковой обработки в примере с LinkedIn

Необходимые компоненты

  • Понимание темы облачных вычислений, в том числе знакомство с моделями и некоторыми поставщиками облачных служб.
  • Знание технологий, лежащих в основе облачных вычислений.
  • Представление о том, как поставщики облачных служб управляют оплатой и выставлением счетов за использование облака.
  • Знание понятия центров обработки данных и их назначения.
  • Знания в области настройки, поддержки и подготовки центров обработки данных.
  • Представление о том, как подготавливаются и измеряются облачные ресурсы.
  • Знакомство с понятием виртуализации.
  • Знание различных типов виртуализации.
  • Представление о виртуализации ЦП.
  • Представление о виртуализации памяти.
  • Представление о виртуализации ввода-вывода.
  • Знания различных типов данных и об их хранении
  • Знакомство с распределенными файловыми системами и принципами их работы.
  • Знакомство с базами данных NoSQL и хранилищем объектов, а также с принципами их работы
  • Представление о том, что такое распределенное программирование и почему оно подходит для облачной среды
  • Представление о MapReduce и о том, каким образом эта модель позволяет выполнять вычисления с большими объемами данных
  • Представление о Spark и отличии этой платформы от MapReduce
  • Представление о GraphLab и отличии этой платформы от MapReduce и Spark