Главная страница
Навигация по странице:

  • Рис. 1.7.

  • Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly


    Скачать 7.59 Mb.
    НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
    Дата21.06.2022
    Размер7.59 Mb.
    Формат файлаpdf
    Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
    ТипДокументы
    #609074
    страница4 из 39
    1   2   3   4   5   6   7   8   9   ...   39
    23
    а.потребитель.(подписчик).подписывается.на.определенные.классы.сообщений..
    В.системы.типа.«публикация/подписка».для.упрощения.этих.действий.часто.
    включают.брокер.—.центральный.пункт.публикации.сообщений.
    С чего все начинается
    Множество.сценариев.использования.публикации/подписки.начинается.одина- ково.—.с.простой.очереди.сообщений.или.канала.обмена.ими.между.процессами..
    Например,.вы.создали.приложение,.которому.необходимо.отправлять.куда-либо.
    мониторинговую.информацию,.для.чего.приходится.создавать.прямое.соединение.
    между.вашим.приложением.и.приложением,.отображающим.показатели.в.инстру- ментальной.панели,.и.«проталкивать».последние.через.это.соединение.(рис..1.1).
    Рис. 1.1. Отдельный непосредственный издатель показателей
    Это.простое.решение.простой.задачи,.удобное.для.начала.мониторинга..Но.вскоре.
    вам.захочется.анализировать.показатели.за.больший.период.времени,.а.в.инстру- ментальной.панели.это.не.слишком.удобно..Вы.создадите.новый.сервис.для.получе- ния.показателей,.их.хранения.и.анализа..Для.этого.измените.свое.приложение.так,.
    чтобы.оно.могло.записывать.их.в.обе.системы..К.тому.времени.у.вас.появится.еще.
    три.генерирующих.показатели.приложения,.каждое.из.которых.будет.точно.так.же.
    подключаться.к.этим.двум.сервисам..Один.из.коллег.предложит.идею.активных.
    опросов.сервисов.для.оповещения,.так.что.вы.добавите.к.каждому.из.приложений.
    сервер,.выдающий.показатели.по.запросу..Вскоре.у.вас.появятся.дополнительные.
    приложения,.использующие.эти.серверы.для.получения.отдельных.показателей.
    в.различных.целях..Архитектура.станет.напоминать.рис..1.2,.возможно,.соедине- ниями,.которые.еще.труднее.отслеживать.
    Некоторая.недоработка.тут.очевидна,.так.что.вы.решаете.ее.исправить..Создаете.
    единое.приложение,.получающее.показатели.от.всех.имеющихся.приложений.
    и.включающее.сервер,.предназначенный.для.запроса.этих.показателей.для.всех.
    систем,.которым.они.нужны..В.результате.сложность.архитектуры.снижается.
    (рис..1.3)..Поздравляем,.вы.создали.систему.обмена.сообщениями.по.типу.«пу- бликация/подписка»!

    24 Глава 1 • Знакомьтесь: Kafka
    Рис.
    1.2.
    Множество издателей показателей, использующих прямые соединения

    Обмен сообщениями по типу «публикация/подписка» 25
    Рис.
    1.3.
    Система публикации
    /подписки на показатели

    26 Глава 1 • Знакомьтесь: Kafka
    Отдельные системы организации очередей
    В.то.время.как.вы.боролись.с.показателями,.один.из.ваших.коллег.аналогичным.
    образом.трудился.над.журнальными.сообщениями..А.еще.один.работал.над.от- слеживанием.действий.пользователей.на.веб-сайте.клиентской.части.и.передачей.
    этой.информации.разработчикам,.занимающимся.машинным.обучением,.парал- лельно.с.формированием.отчетов.для.начальства..Вы.все.шли.одним.и.тем.же.
    путем.создания.систем,.расцепляющих.издателей.информации.и.подписчиков.на.
    нее..Подобная.инфраструктура.с.тремя.отдельными.системами.публикации/под- писки.показана.на.рис..1.4.
    Использовать.ее.намного.удобнее,.чем.прямые.соединения.(как.на.рис..1.2),.но.
    возникает.существенное.дублирование..Компании.приходится.сопровождать.не- сколько.систем.организации.очередей,.в.каждой.из.которых.имеются.собственные.
    ошибки.и.ограничения..А.между.тем.вы.знаете,.что.скоро.появятся.новые.сценарии.
    использования.обмена.сообщениями..Необходима.единая.централизованная.систе- ма,.поддерживающая.публикацию.обобщенных.типов.данных,.которая.могла.бы.
    развиваться.по.мере.расширения.вашего.бизнеса.
    Открываем для себя систему Kafka
    Apache.Kafka.—.система.публикации.сообщений.и.подписки.на.них,.предназначен- ная.для.решения.поставленной.задачи..Ее.часто.называют.распределенным.жур- налом.фиксации.транзакций.или,.в.последнее.время,.распределенной.платформой.
    потоковой.обработки..Файловая.система.или.журнал.фиксации.транзакций.базы.
    данных.предназначены.для.обеспечения.долговременного.хранения.всех.транзак- ций.таким.образом,.чтобы.можно.было.их.воспроизвести.с.целью.восстановления.
    согласованного.состояния.системы..Аналогично.данные.в.Kafka.хранятся.долго,.
    и.их.можно.читать.когда.угодно..Кроме.того,.они.могут.распределяться.по.системе.
    в.качестве.меры.дополнительной.защиты.от.сбоев,.равно.как.и.ради.повышения.
    производительности.
    Сообщения и пакеты
    Используемая.в.Kafka.единица.данных.называется.сообщением.(message)..Если.ра- нее.вы.работали.с.базами.данных,.то.можете.рассматривать.сообщение.как.аналог.
    строки.(row).или.записи.(record)..С.точки.зрения.Kafka.сообщение.представляет.
    собой.просто.массив.байтов,.так.что.для.нее.содержащиеся.в.нем.данные.не.име- ют.формата.или.какого-либо.смысла..В.сообщении.может.быть.дополнительный.
    элемент.метаданных,.называемый.ключом.(key)..Он.также.представляет.собой.
    массив.байтов.и,.как.и.сообщение,.не.несет.для.Kafka.никакого.смысла..Ключи.
    используются.при.необходимости.лучше.управлять.записью.сообщений.в.разделы..
    Простейшая.схема.такова:.генерация.единообразного.хеш-значения.ключа.с.по-

    Открываем для себя систему Kafka 27
    Рис.
    1.4.
    Несколько систем публикации
    /подписки

    28 Глава 1 • Знакомьтесь: Kafka следующим.выбором.номера.раздела.для.сообщения.путем.деления.указанного.
    значения.по.модулю.общего.числа.разделов.в.теме..Это.гарантирует.попадание.
    сообщений.с.одним.ключом.в.один.раздел..Мы.обсудим.ключи.подробнее.в.главе.3.
    Для.большей.эффективности.сообщения.в.Kafka.записываются.пакетами..Пакет.
    (batch).представляет.собой.просто.набор.сообщений,.относящихся.к.одной.теме.
    и.одному.разделу..Передача.каждого.сообщения.туда.и.обратно.по.сети.привела.бы.
    к.существенному.перерасходу.ресурсов,.а.объединение.сообщений.в.пакет.эту.про- блему.уменьшает..Конечно,.необходимо.соблюдать.баланс.между.временем.задерж- ки.и.пропускной.способностью:.чем.больше.пакеты,.тем.больше.сообщений.можно.
    обрабатывать.за.единицу.времени,.но.тем.дольше.распространяется.отдельное.со- общение..Пакеты.обычно.подвергаются.сжатию,.что.позволяет.передавать.и.хранить.
    данные.более.эффективно.за.счет.некоторого.расхода.вычислительных.ресурсов.
    Схемы
    Хотя.сообщения.для.Kafka.—.всего.лишь.непрозрачные.массивы.байтов,.рекоменду- ется.накладывать.на.содержимое.сообщений.дополнительную.структуру.—.схему,.
    которая.позволяла.бы.с.легкостью.их.разбирать..Существует.много.вариантов.за- дания.схемы.сообщений.в.зависимости.от.потребностей.конкретного.приложения..
    Упрощенные.системы,.например,.нотация.объектов.JavaScript.(JavaScript.Object.
    Notation,.JSON).и.расширяемый.язык.разметки.(Extensible.Markup.Language,.
    XML),.просты.в.использовании,.их.удобно.читать.человеку..Однако.им.не.хватает.
    таких.свойств,.как.ошибкоустойчивая.работа.с.типами.и.совместимость.разных.
    версий.схемы..Многим.разработчикам.Kafka.нравится.Apache.Avro.—.фреймворк.
    сериализации,.изначально.предназначенный.для.Hadoop..Avro.обеспечивает.ком- пактный.формат.сериализации,.схемы,.отделенные.от.содержимого.сообщений.и.не.
    требующие.генерации.кода.при.изменении,.а.также.сильную.типизацию.данных.
    и.эволюцию.схемы.с.прямой.и.обратной.совместимостью.
    Для.Kafka.важен.единообразный.формат.данных,.ведь.он.дает.возможность.рас- цеплять.код.записи.и.чтения.сообщений..При.тесном.сцеплении.этих.задач.при- ходится.модифицировать.приложения-подписчики,.чтобы.они.могли.работать.
    не.только.со.старым,.но.и.с.новым.форматом.данных..Только.после.этого.можно.
    будет.использовать.новый.формат.в.публикующих.сообщения.приложениях..
    Благодаря.применению.четко.заданных.схем.и.хранению.их.в.общем.репозитории.
    сообщения.в.Kafka.можно.читать,.не.координируя.действия..Мы.рассмотрим.схемы.
    и.сериализацию.подробнее.в.главе.3.
    Темы и разделы
    Сообщения.в.Kafka.распределяются.по.темам.(topics,.иногда.называют.топиками)..
    Ближайшая.аналогия.—.таблица.базы.данных.или.каталог.файловой.системы..Темы.
    в.свою.очередь.разбиваются.на.разделы.(partitions)..Если.вернуться.к.описанию.
    журнала.фиксации,.то.раздел.представляет.собой.отдельный.журнал..Сообщения.

    Открываем для себя систему Kafka 29
    записываются.в.него.путем.добавления.в.конец,.а.читаются.от.начала.к.концу..
    Заметим:.поскольку.тема.обычно.состоит.из.нескольких.разделов,.нет.никаких.
    гарантий.упорядоченности.сообщений.в.пределах.всей.темы.—.лишь.в.пределах.
    отдельного.раздела..На.рис..1.5.показана.тема.с.четырьмя.разделами,.в.конец.каж- дого.из.которых.добавляются.сообщения..Благодаря.разделам.Kafka.обеспечивает.
    также.избыточность.и.масштабируемость..Любой.из.разделов.можно.разместить.на.
    отдельном.сервере,.что.означает.возможность.горизонтального.масштабирования.
    системы.на.несколько.серверов.с.целью.достижения.производительности,.далеко.
    выходящей.за.пределы.возможностей.одного.сервера.
    Рис. 1.5. Представление темы с несколькими разделами
    При.обсуждении.данных,.находящихся.в.таких.системах,.как.Kafka,.часто.использу- ется.термин.поток данных.(stream)..Чаще.всего.поток.данных.считается.отдельной.
    темой,.независимо.от.количества.разделов.представляющей.собой.отдельный.по- ток.данных,.перемещающихся.от.производителей.к.потребителям..Обычно.сообще- ния.рассматривают.подобным.образом.при.обсуждении.потоковой.обработки,.при.
    которой.фреймворки,.в.частности.Kafka.Streams,.Apache.Samza.и.Storm,.работают.
    с.сообщениями.в.режиме.реального.времени..Их.принцип.работы.подобен.принципу.
    работы.офлайн-фреймворков,.в.частности.Hadoop,.предназначенных.для.работы.
    с.блоками.данных..Обзор.темы.потоковой.обработки.приведен.в.главе.11.
    Производители и потребители
    Пользователи.Kafka.делятся.на.два.основных.типа:.производители.(генераторы).
    и.потребители..Существуют.также.продвинутые.клиентские.API.—.API.Kafka.
    Connect.для.интеграции.данных.и.Kafka.Streams.для.потоковой.обработки..Продви- нутые.клиенты.используют.производители.и.потребители.в.качестве.строительных.
    блоков,.предоставляя.на.их.основе.функциональность.более.высокого.уровня.
    Производители.(producers).генерируют.новые.сообщения..В.других.системах.
    обмена.сообщениями.по.типу.«публикация/подписка».их.называют.издателями.
    (publishers).или.авторами.(writers)..В.целом.производители.сообщений.создают.
    их.для.конкретной.темы..По.умолчанию.производителю.не.важно,.в.какой.раздел.
    записывается.конкретное.сообщение,.он.будет.равномерно.поставлять.сообще-

    30 Глава 1 • Знакомьтесь: Kafka ния.во.все.разделы.темы..В.некоторых.случаях.производитель.направляет.со- общение.в.конкретный.раздел,.для.чего.обычно.служат.ключ.сообщения.и.объект.
    Partitioner
    ,.генерирующий.хеш.ключа.и.устанавливающий.его.соответствие.с.кон- кретным.разделом..Это.гарантирует.запись.всех.сообщений.с.одинаковым.ключом.
    в.один.и.тот.же.раздел..Производитель.может.также.воспользоваться.собственным.
    объектом.
    Partitioner
    .со.своими.бизнес-правилами.распределения.сообщений.по.
    разделам..Более.подробно.поговорим.о.производителях.в.главе.3.
    Потребители.(consumers).читают.сообщения..В.других.системах.обмена.сообще- ниями.по.типу.«публикация/подписка».их.называют.подписчиками.(subscribers).
    или.читателями.(readers)..Потребитель.подписывается.на.одну.тему.или.более.
    и.читает.сообщения.в.порядке.их.создания..Он.отслеживает,.какие.сообщения.он.
    уже.прочитал,.запоминая.смещение.сообщений..Смещение.(offset).(непрерывно.
    возрастающее.целочисленное.значение).—.еще.один.элемент.метаданных,.который.
    Kafka.добавляет.в.каждое.сообщение.при.генерации..Смещения.сообщений.в.кон- кретном.разделе.не.повторяются..Благодаря.сохранению.смещения.последнего.
    полученного.сообщения.для.каждого.раздела.в.хранилище.ZooKeeper.или.самой.
    Kafka.потребитель.может.приостанавливать.и.возобновлять.свою.работу,.не.за- бывая,.в.каком.месте.он.читал.
    Потребители.работают.в.составе.групп потребителей.(consumer.groups).—.одного.
    или.нескольких.потребителей,.объединившихся.для.обработки.темы..Организа- ция.в.группы.гарантирует.чтение.каждого.раздела.только.одним.членом.группы..
    На.рис..1.6.представлены.три.потребителя,.объединенные.в.одну.группу.для.об- работки.темы..Два.потребителя.обрабатывают.по.одному.разделу,.а.третий.—.два..
    Соответствие.потребителя.разделу.иногда.называют.принадлежностью.(ownership).
    раздела.данному.потребителю.
    Рис. 1.6. Чтение темы группой потребителей
    Таким.образом,.потребители.получают.возможность.горизонтального.масштаби- рования.для.чтения.темы.с.большим.количеством.сообщений..Кроме.того,.в.случае.

    Открываем для себя систему Kafka 31
    сбоя.отдельного.потребителя.оставшиеся.члены.группы.перераспределят.разделы.
    так,.чтобы.взять.на.себя.его.задачу..Потребители.и.группы.потребителей.подробнее.
    описываются.в.главе.4.
    Брокеры и кластеры
    Отдельный.сервер.Kafka.называется.брокером.(broker)..Брокер.получает.сообще- ния.от.производителей,.присваивает.им.смещения.и.отправляет.их.в.дисковое.
    хранилище..Он.также.обслуживает.потребители.и.отвечает.на.запросы.выборки.из.
    разделов,.возвращая.записанные.на.диск.сообщения..В.зависимости.от.конкретного.
    аппаратного.обеспечения.и.его.производительности.отдельный.брокер.может.с.лег- костью.обрабатывать.тысячи.разделов.и.миллионы.сообщений.в.секунду.
    Брокеры.Kafka.предназначены.для.работы.в.составе.кластера.(cluster)..Один.из.
    брокеров.кластера.функционирует.в.качестве.контроллера.(cluster.controller)..Кон- троллер.кластера.выбирается.автоматически.из.числа.работающих.членов.кластера..
    Контроллер.отвечает.за.административные.операции,.включая.распределение.
    разделов.по.брокерам.и.мониторинг.отказов.последних..Каждый.раздел.принад- лежит.одному.из.брокеров.кластера,.который.называется.его.ведущим.(leader)..
    Раздел.можно.назначить.нескольким.брокерам,.в.результате.чего.произойдет.ее.
    репликация.(рис..1.7)..Это.обеспечивает.избыточность.сообщений.в.разделе,.так.
    что.в.случае.сбоя.ведущего.другой.брокер.сможет.занять.его.место..Однако.все.
    потребители.и.производители,.работающие.в.этом.разделе,.должны.соединяться.
    с.ведущим..Кластерные.операции,.включая.репликацию.разделов,.подробно.рас- смотрены.в.главе.6.
    Рис. 1.7. Репликация разделов в кластере

    32 Глава 1 • Знакомьтесь: Kafka
    Ключевая.возможность.Apache.Kafka.—.сохранение информации.(retention).в.те- чение.длительного.времени..В.настройки.брокеров.Kafka.включается.длитель- ность.хранения.тем.по.умолчанию.—.или.в.течение.определенного.промежутка.
    времени.(например,.7.дней),.или.до.достижения.темой.определенного.размера.
    в.байтах.(например,.1.Гбайт)..Превысившие.эти.пределы.сообщения.становятся.
    недействительными.и.удаляются,.так.что.настройки.сохранения.соответствуют.
    минимальному.количеству.доступной.в.каждый.момент.информации..Можно.за- давать.настройки.сохранения.и.для.отдельных.тем,.чтобы.сообщения.хранились.
    только.до.тех.пор,.пока.они.нужны..Например,.тема.для.отслеживания.действий.
    пользователей.можно.хранить.несколько.дней,.в.то.время.как.параметры.при- ложений.—.лишь.несколько.часов..Можно.также.настроить.для.тем.вариант.
    хранения.сжатых журналов.(log.compacted)..При.этом.Kafka.будет.хранить.лишь.
    последнее.сообщение.с.конкретным.ключом..Это.может.пригодиться.для.таких.
    данных,.как.журналы.изменений,.в.случае,.когда.нас.интересует.только.последнее.
    изменение.
    Несколько кластеров
    По.мере.роста.развертываемых.систем.Kafka.может.оказаться.удобным.наличие.
    нескольких.кластеров..Вот.несколько.причин.этого.
    ‰
    ‰
    Разделение.типов.данных.
    ‰
    ‰
    Изоляция.по.требованиям.безопасности.
    ‰
    ‰
    Несколько.центров.обработки.данных.(ЦОД).(восстановление.в.случае.ката- клизмов).
    При.работе,.в.частности,.с.несколькими.ЦОД.часто.выдвигается.требование.копи- рования.сообщений.между.ними..Таким.образом,.онлайн-приложения.могут.повсе- местно.получить.доступ.к.информации.о.действиях.пользователей..Например,.если.
    пользователь.меняет.общедоступную.информацию.в.своем.профиле,.изменения.
    должны.быть.видны.вне.зависимости.от.ЦОД,.в.котором.отображаются.результаты.
    поиска..Или.данные.мониторинга.могут.собираться.с.многих.сайтов.в.одно.место,.
    где.расположены.системы.анализа.и.оповещения..Механизмы.репликации.в.класте- рах.Kafka.предназначены.только.для.работы.внутри.одного.кластера,.репликация.
    между.несколькими.кластерами.не.осуществляется.
    Проект.Kafka.включает.для.этой.цели.утилиту.MirrorMaker..По.существу,.это.
    просто.потребитель.и.производитель.Kafka,.связанные.воедино.очередью..Данная.
    утилита.получает.сообщения.из.одного.кластера.Kafka.и.публикует.их.в.другом..
    На.рис..1.8.демонстрируется.пример.использующей.MirrorMaker.архитектуры,.
    в.которой.сообщения.из.двух.локальных.кластеров.агрегируются.в.составной.кла- стер,.который.затем.копируется.в.другие.ЦОД..Пускай.простота.этого.приложения.
    не.создает.у.вас.ложного.впечатления.о.его.возможностях.по.созданию.сложных.
    конвейеров.данных,.которые.мы.подробнее.рассмотрим.в.главе.7.

    Открываем для себя систему Kafka 33
    Рис.
    1.8.
    Архитектура с несколькими ЦОД

    34 Глава 1 • Знакомьтесь: Kafka
    Почему Kafka?
    Существует.множество.систем.публикации.сообщений.и.подписки.на.них..Чем.же.
    Apache.Kafka.лучше.других?
    Несколько производителей
    Kafka.может.без.каких-либо.проблем.работать.с.несколькими.производителями.
    вне.зависимости.от.того,.используют.они.одну.тему.или.несколько..Это.делает.
    платформу.идеальной.для.агрегирования.данных.из.множества.клиентских.си- стем.и.обеспечения.их.согласованности..Например,.у.сайта,.выдающего.пользо- вателям.контент.посредством.множества.микросервисов,.может.быть.отдельная.
    тема.для.просмотров.страниц,.в.которую.все.сервисы.записывают.данные.в.еди- ном.формате..Приложения-потребители.затем.будут.получать.единый.поток.
    данных.просмотров.страниц.для.всех.приложений.сайта,.причем.им.не.нужно.
    будет.согласовывать.получение.сообщений.из.нескольких.тем,.по.одному.для.
    каждого.приложения.
    Несколько потребителей
    Помимо.того.что.Kafka.имеет.несколько.производителей,.она.спроектирована.
    с.учетом.возможности.для.нескольких.потребителей.читать.любой.один.поток.со- общений,.не.мешая.друг.другу..Этим.она.отличается.от.множества.других.систем.
    организации.очередей,.в.которых.сообщение,.полученное.одним.клиентом,.стано- вится.недоступным.для.других..Несколько.потребителей.Kafka.могут.работать.
    в.составе.группы.и.совместно.использовать.поток.данных,.что.гарантирует.обра- ботку.любого.конкретного.сообщения.этой.группой.лишь.один.раз.
    Сохранение информации на диске
    Kafka.не.только.может.работать.с.несколькими.потребителями..Долговременное.
    хранение.означает,.что.потребители.не.обязательно.должны.работать.в.режиме.
    реального.времени..Сообщения.записываются.на.диск.и.хранятся.там.в.соответ- ствии.с.настраиваемыми.правилами,.которые.можно.задавать.для.каждой.темы.
    по.отдельности..Благодаря.этому.различные.потоки.сообщений.будут.храниться.
    в.течение.разного.времени.в.зависимости.от.потребностей.потребителя..Долго- временное.хранение.также.означает,.что.при.отставании.потребителя.вследствие.
    или.медленной.обработки,.или.резкого.роста.трафика.опасности.потери.данных.
    не.возникнет..Еще.оно.означает.возможность.обслуживать.потребители.при.ко- ротком.отключении.приложений.от.сети,.не.беспокоясь.о.резервном.копировании.
    или.вероятной.потере.сообщений.в.производителе..Потребители.можно.останавли- вать,.при.этом.сообщения.будут.сохраняться.в.Kafka..Это.позволяет.потребителям.

    Экосистема данных
    1   2   3   4   5   6   7   8   9   ...   39


    написать администратору сайта