Главная страница

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


Скачать 7.59 Mb.
НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Дата21.06.2022
Размер7.59 Mb.
Формат файлаpdf
Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
ТипДокументы
#609074
страница17 из 39
1   ...   13   14   15   16   17   18   19   20   ...   39
137
Как происходит сжатие
Каждый.из.журналов.условно.делится.на.две.части.(рис..5.7):
‰
‰
«чистая».—.сжатые.ранее.сообщения..Она.содержит.только.по.одному.значению.
для.каждого.ключа.—.последнему.на.момент.предыдущего.сжатия;
‰
‰
«грязная».—.сообщения,.записанные.после.последнего.сжатия.
Рис. 5.7. Журнал с «чистым» и «грязным» разделами
Если.при.запуске.Kafka.сжатие.было.активировано.(с.помощью.довольно.не- удачно.названного.параметра.
log.cleaner.enabled
),.то.каждый.из.брокеров.будет.
запущен.с.потоком.диспетчера.сжатия.и.несколькими.потоками.сжатия,.которые.
отвечают.за.выполнение.задач.сжатия..Каждый.из.этих.потоков.выбирает.раздел.
с.максимальным.отношением.числа.«грязных».сообщений.к.полному.размеру.раз- дела.и.очищает.его.
Для.сжатия.раздела.поток.очистки.читает.его.«грязную».часть.и.создает.ассоци- ативный.массив.(карту).в.оперативной.памяти..Каждая.запись.этого.массива.со- стоит.из.16-байтного.хеша.ключа.сообщения.и.8-байтного.смещения.предыдущего.
сообщения.с.тем.же.ключом..Это.значит,.что.каждая.запись.массива.использует.
только.24.байта..Если.мы.предположим,.что.в.сегменте.размером.1.Гбайт.каждое.
сообщение.занимает.1.Кбайт,.то.сегмент.может.содержать.1.млн.сообщений,.а.для.
его.сжатия.понадобится.ассоциативный.массив.всего.в.24.Мбайт.(возможно,.даже.
намного.меньше.—.при.повторении.ключей.одни.и.те.же.хеш-записи.будут.часто.
использоваться.повторно.и.займут.меньше.памяти)..Весьма.эффективно!
При.настройке.Kafka.администратор.задает.объем.памяти,.который.потоки.сжатия.
могут.задействовать.для.этой.карты.смещений..И.хотя.у.каждого.потока.будет.
своя.карта,.соответствующий.параметр.задает.для.всех.них.общий.объем.памяти..
Если.задать.его.равным.1.Гбайт.при.пяти.потоках.очистки,.каждый.из.них.полу- чит.200.Мбайт.памяти.для.своего.ассоциативного.массива..Для.Kafka.необяза- тельно,.чтобы.вся.«грязная».часть.раздела.помещалась.в.выделенное.для.этого.
ассоциативного.массива.пространство,.но.по.крайней.мере.один.полный.сегмент.
туда.помещаться.должен..Если.это.не.так,.Kafka.зафиксирует.в.журнале.ошибку.
и.администратору.придется.или.выделить.больше.памяти.под.карты.смещений,.

138 Глава 5 • Внутреннее устройство Kafka или.использовать.меньше.потоков.очистки..Если.помещается.лишь.несколько.сег- ментов,.Kafka.начнет.со.сжатия.самых.старых.сегментов.ассоциативного.массива..
Остальные.останутся.«грязными»,.им.придется.подождать.следующего.сжатия.
После.того.как.поток.очистки.сформирует.карту.смещений,.он.начнет.считывать.
«чистые».сегменты,.начиная.с.самого.старого,.и.сверять.их.содержимое.с.картой.
смещений..Для.каждого.сообщения.поток.очистки.проверяет,.существует.ли.ключ.
сообщения.в.карте.смещений..Если.его.нет,.значит,.значение.только.что.прочитан- ного.сообщения.актуальное,.поэтому.сообщение.копируется.в.сменный.сегмент..
Если.же.ключ.в.карте.присутствует,.оно.пропускается,.поскольку.далее.в.этом.
разделе.есть.сообщение.с.таким.же.ключом,.но.с.более.свежим.значением..После.
копирования.всех.сообщений,.содержащих.актуальные.ключи,.мы.меняем.сменный.
сегмент.местами.с.исходным.и.переходим.к.следующему.сегменту..В.конце.этого.
процесса.для.каждого.ключа.остается.одно.значение.—.наиболее.новое.(рис..5.8).
Рис. 5.8. Сегмент раздела до и после сжатия
Удаленные события
Допустим,.мы.всегда.сохраняем.последнее.сообщение.для.каждого.ключа..Тогда.что.
делать,.если.нужно.удалить.все.сообщения.для.конкретного.ключа,.например,.если.
пользователь.перестал.у.нас.обслуживаться.и.мы.по.закону.обязаны.убрать.все.его.
следы.из.системы?
Чтобы.удалить.ключ.из.системы.полностью,.без.сохранения.даже.последнего.со- общения,.приложение.должно.сгенерировать.сообщение,.содержащее.этот.ключ,.
и.пустое.значение..Наткнувшись.на.подобное.сообщение,.поток.очистки.сначала.
выполнит.обычное.сжатие.и.сохранит.только.сообщение.с.пустым.значением..
Это.особое.сообщение,.известное.как.отметка об удалении.(tombstone),.будет.хра- ниться.в.течение.настраиваемого.промежутка.времени..На.всем.его.протяжении.по- требители.смогут.видеть.это.сообщение.и.будут.знать,.что.значение.удалено..Так.что.

Резюме 139
потребитель,.копирующий.данные.из.Kafka.в.реляционную.базу.данных,.увидит.
отметку.об.удалении.и.будет.знать,.что.нужно.убрать.пользователя.из.базы.данных..
По.истечении.этого.промежутка.времени.поток.очистки.удалит.сообщение.—.отметку.
об.удалении,.и.ключ.пропадет.из.раздела.Kafka..Важно.выделить.достаточно.времени,.
чтобы.потребители.успели.увидеть.его,.ведь.если.потребитель.не.функционировал.
несколько.часов.и.пропустил.это.сообщение,.он.просто.не.увидит.ключа.и.не.будет.
знать,.что.тот.был.удален.из.Kafka.и.нужно.удалить.его.из.базы.данных.
Когда выполняется сжатие тем
Подобно.тому.как.при.стратегии.
delete
.никогда.не.удаляются.активные.в.на- стоящий.момент.сегменты,.при.стратегии.
compact
.никогда.не.сжимается.текущий.
сегмент..Сжатие.сообщений.возможно.только.в.неактивных.сегментах.
В.версии.0.10.0.и.более.старых.Kafka.начинает.сжатие,.когда.50.%.темы.содержит.
«грязные».сообщения..Задача.заключается.в.том,.чтобы.не.сжимать.слишком.ча- сто.—.это.может.негативно.повлиять.на.производительность.чтения/записи.для.
данной.темы,.но.и.не.хранить.слишком.много.«грязных».сообщений,.поскольку.они.
занимают.место.на.диске..Разумный.компромисс.состоит.в.том,.чтобы.дождаться,.
когда.«грязные».записи.займут.50.%.используемого.темой.дискового.пространства,.
после.чего.сжать.их.за.один.раз..Этот.параметр.настраивает.администратор.
В.будущих.версиях.мы.планируем.добавить.период.отсрочки,.на.протяжении.кото- рого.гарантируется,.что.сообщения.не.будут.сжаты..Благодаря.этому.приложениям,.
которым.необходимо.просмотреть.каждое.записанное.в.тему.сообщение,.хватит.
времени,.даже.если.они.несколько.отстают.
Резюме
Тема.внутреннего.устройства.Kafka.намного.обширнее,.чем.можно.было.охватить.
в.этой.главе..Но.мы.надеемся,.что.вы.смогли.прочувствовать.реализованные.во.вре- мя.работы.над.Kafka.проектные.решения.и.оптимизации.и,.вероятно,.разобрались.
в.некоторых.малопонятных.видах.ее.поведения.и.настроек.
Если.внутреннее.устройство.Kafka.вас.действительно.интересует,.никакого.дру- гого.выхода,.кроме.чтения.кода,.нет..Среди.разработчиков.Kafka.(почтовая.рас- сылка.
dev@kafka.apache.org
).—.очень.дружелюбного.сообщества.—.всегда.найдется.
кто-нибудь,.готовый.ответить.на.вопросы.о.функционировании.платформы..А.во.
время.чтения.кода,.возможно,.вы.сумеете.исправить.одну-две.ошибки.—.проекты.
с.открытым.исходным.кодом.всегда.приветствуют.любую.помощь.

6
Надежная доставка данных
Надежная.доставка.данных.относится.к.числу.тех.неотъемлемых.свойств.системы,.
проектирование.которых.нельзя.оставить.на.потом..Как.и.производительность,.
она.должна.учитываться.в.системе,.начиная.с.самой.первой.схемы.работы..Надеж- ность.не.получится.«прикрутить».к.уже.готовому.продукту..Более.того,.это.свой- ство.всей.системы,.а.не.отдельного.компонента,.так.что.хотя.мы.будем.говорить.
о.гарантиях.надежности.Apache.Kafka,.но.нужно.учитывать.всю.систему.в.целом.
и.сценарии.ее.использования..В.том,.что.касается.надежности,.интегрируемые.
с.Kafka.системы.так.же.важны,.как.и.сама.Kafka..А.поскольку.надежность.отно- сится.к.системе.в.целом,.ответственность.за.нее.не.может.лежать.на.одном.чело- веке..Все.—.администраторы.Kafka,.администраторы.Linux,.администраторы.сети.
и.систем.хранения,.а.также.разработчики.приложения.—.должны.сотрудничать.
для.создания.надежного.продукта.
Apache.Kafka.очень.гибка.в.том,.что.касается.надежной.доставки.данных..У.Kafka.
есть.множество.сценариев.использования,.начиная.от.отслеживания.нажатий.на.
веб-сайте.и.заканчивая.оплатой.по.кредитным.картам..Некоторые.из.этих.сцена- риев.требуют.максимальной.надежности,.а.для.других.важнее.быстродействие.
и.простота..Kafka.спроектирована.в.расчете.на.довольно.широкие.возможности.
настройки,.а.ее.клиентский.API.достаточно.гибок.для.любых.компромиссов..
Его.гибкость.может.оказаться.ахиллесовой.пятой.Kafka.—.легко.можно.счесть.на- дежной.на.самом.деле.ненадежную.систему.
Эту.главу.мы.начнем.с.обсуждения.различных.видов.надежности.и.их.значения.
в.контексте.Apache.Kafka..Затем.поговорим.о.механизме.репликации.Kafka.и.его.
вкладе.в.надежность.системы..Потом.обсудим.брокеры.и.темы.Kafka.и.их.настройку.
для.различных.сценариев..Затем.рассмотрим.клиенты,.производители.и.потреби- тели,.а.также.их.правильное.использование.в.различных.ситуациях,.связанных.
с.надежностью..И.наконец,.обсудим.тему.проверки.надежности.системы,.поскольку.
недостаточно.верить,.что.система.надежна,.—.необходимо.знать.это.наверняка.

Гарантии надежности 141
Гарантии надежности
При.разговоре.о.надежности.речь.обычно.идет.в.терминах.гарантий,.означающих,.
что.поведение.системы.гарантированно.не.меняется.при.различных.обстоятель- ствах.
Вероятно,.лучшая.из.известных.гарантий.надежности.—.ACID,.стандартная.га- рантия.надежности,.поддерживаемая.практически.всеми.реляционными.базами.
данных..Этот.акроним.расшифровывается.как.Atomicity,.Consistency,.Isolation,.
Durability.—.атомарность,.согласованность,.изоляция.и.сохраняемость..Если.про- изводитель.СУБД.говорит,.что.их.база.данных.удовлетворяет.ACID,.значит,.она.
гарантирует.определенное.поведение.относительно.транзакций.
Благодаря.этим.гарантиям.люди.доверяют.реляционным.базам.данных,.имеющим- ся.в.наиболее.критичных.приложениях,.—.они.точно.знают,.что.обещает.система.
и.как.она.будет.вести.себя.в.различных.условиях..Эти.гарантии.понятны.и.позво- ляют.писать.на.их.основе.безопасные.приложения.
Понимание.того,.в.чем.состоят.предоставляемые.Kafka.гарантии,.чрезвычайно.
важно.для.желающих.создавать.надежные.приложения..Это.позволяет.разработ- чикам.системы.предугадать.ее.поведение.в.случае.различных.сбоев..Итак,.что.же.
гарантирует.Apache.Kafka?
‰
‰
Упорядоченность.сообщений.в.разделе..Если.сообщение.Б.было.записано.после.
сообщения.A.с.помощью.одного.производителя.в.одном.разделе,.то.Kafka.га- рантирует,.что.смещение.сообщения.Б.будет.превышать.смещение.сообщения.A.
и.потребители.прочитают.сообщение.Б.после.сообщения.A.
‰
‰
Сообщения.от.производителей.считаются.зафиксированными,.когда.они.за- писаны.во.все.согласованные.реплики.раздела,.но.не.обязательно.уже.сбро- шены.на.диск..Производители.могут.выбирать.разные.варианты.оповещения.
о.получении.сообщений:.при.полной.фиксации.сообщения,.записи.на.ведущую.
реплику.или.отправке.по.сети.
‰
‰
Зафиксированные.сообщения.не.будут.потеряны,.если.функционирует.хотя.бы.
одна.реплика.
‰
‰
Потребители.могут.читать.только.зафиксированные.сообщения.
Эти.основные.гарантии.можно.использовать.при.создании.надежной.системы,.но.
сами.по.себе.они.не.делают.ее.абсолютно.надежной..Создание.надежной.системы.
допускает.различные.компромиссы,.и.Kafka.дает.возможность.администраторам.
и.разработчикам.самим.определять,.насколько.надежная.система.им.требуется,.
с.помощью.задания.параметров.конфигурации,.контролирующих.эти.компро- миссы..Обычно.речь.идет.о.компромиссе.между.степенью.важности.надежного.
и.согласованного.хранения.сообщений.и.другими.важными.соображениями,.та- кими.как.доступность,.высокая.пропускная.способность,.малое.значение.задержки.

142 Глава 6 • Надежная доставка данных и.стоимость.аппаратного.обеспечения..Далее.мы.рассмотрим.механизм.репликации.
Kafka,.познакомим.вас.с.терминологией.и.обсудим.фундамент.надежности.плат- формы..После.этого.пройдемся.по.упомянутым.параметрам.конфигурации.
Репликация
В.основе.гарантий.надежности.Kafka.лежит.механизм.репликации,.предусматри- вающий.создание.нескольких.реплик.для.каждого.раздела..Kafka.обеспечивает.
сохраняемость.сообщений.в.случае.аварийного.сбоя.благодаря.записи.сообщений.
в.несколько.реплик.
Мы.детально.рассмотрели.механизм.репликации.Kafka.в.главе.5,.а.здесь.вкратце.
резюмируем.основные.положения.
Темы.Kafka.разбиваются.на.разделы,.представляющие.собой.основные.стандарт- ные.блоки.данных..Разделы.сохраняются.на.отдельные.диски..Kafka.гарантирует.
упорядоченность.событий.в.пределах.раздела,.который.может.быть.подключен.
(доступен).или.отключен.(недоступен)..У.каждого.раздела.может.быть.несколько.
реплик,.одна.из.которых.назначается.ведущей..Все.события.направляются.произ- водителями.в.ведущую.реплику.и.потребляются.из.нее..Другие.реплики.просто.
должны.быть.согласованы.с.ведущей.и.своевременно.реплицировать.все.недавние.
события..В.случае.недоступности.ведущей.реплики.одна.из.согласованных.стано- вится.новой.ведущей.
Реплика.считается.согласованной,.если.она.является.ведущей.репликой.раздела.
или.ведомой,.которая:
‰
‰
отправляла.в.ZooKeeper.контрольный.сигнал.в.последние.6.секунд.(настраива- ется),.что.означает.наличие.текущего.сеанса.связи.с.ZooKeeper;
‰
‰
извлекала.сообщения.из.ведущей.реплики.в.последние.10.секунд.(настраива- ется);
‰
‰
извлекала.наиболее.свежие.сообщения.из.ведущей.реплики.в.последние.10.се- кунд.(настраивается)..То.есть.недостаточно,.чтобы.ведомая.реплика.продолжала.
получать.сообщения.от.ведущей,.требуется.еще.и.отсутствие.задержки.
Если.реплика.теряет.соединение.с.ZooKeeper,.прекращает.извлекать.новые.со- общения.или.отстает.более.чем.на.10.секунд,.она.считается.рассогласованной..
И.снова.становится.согласованной.после.повторного.подключения.к.ZooKeeper.
и.догоняет.ведущую.вплоть.до.самого.свежего.сообщения..Обычно.это.происхо- дит.довольно.быстро.после.восстановления.сети.после.временных.неполадок,.но.
может.занять.и.много.времени,.если.брокер,.на.котором.находится.реплика,.долго.
не.работал.

Настройка брокера 143
Рассогласованные реплики
Картина, при которой одна или несколько реплик быстро перепрыгивают из согласованного состояния в рассогласованное и наоборот, — верный признак проблем с кластером. Причина часто заключается в неправильной настройке сборки мусора Java на брокере. Неправильная настройка сборки мусора может вызвать приостановку работы брокера на несколько секунд, за время которой он теряет подключение к ZooKeeper. А когда брокер Kafka теряет подключение к ZooKeeper, то становится рассогласованным с кластером, что и обусловливает описанное поведение.
Чуть-чуть.отстающая.согласованная.реплика.может.замедлять.работу.производи- телей.и.потребителей,.поскольку.они.считают.сообщение.зафиксированным.только.
после.его.получения.всеми.согласованными.репликами..А.когда.реплика.становит- ся.рассогласованной,.то.ждать.получения.ею.сообщений.не.надо..Она.по-прежнему.
отстает,.но.на.производительность.это.больше.не.влияет..Нюанс.в.том,.что.чем.
меньше.согласованных.реплик,.тем.ниже.фактический.коэффициент.репликации,.
а.следовательно,.выше.риск.простоя.или.потери.данных.
В.следующем.разделе.мы.увидим,.что.это.значит.на.практике.
Настройка брокера
На.поведение.Kafka.в.смысле.надежного.хранения.сообщений.влияют.три.пара- метра.конфигурации..Как.и.многие.другие.переменные.конфигурации.брокера,.
их.можно.использовать.на.уровне.брокера.для.управления.настройками.всех.тем.
системы,.а.также.на.уровне.отдельных.тем.
Возможность.управлять.связанными.с.надежностью.компромиссами.на.уровне.
отдельных.тем.означает,.что.один.и.тот.же.кластер.Kafka.можно.задействовать.
как.для.надежных,.так.и.для.ненадежных.тем..Например,.в.банке.администратор,.
вероятно,.захочет.установить.очень.высокий.уровень.надежности.по.умолчанию.
для.всего.кластера,.за.исключением.тем,.в.которых.хранятся.жалобы.пользователей,.
где.определенные.потери.данных.допустимы.
Рассмотрим.эти.параметры.по.очереди.и.выясним,.как.они.влияют.на.надежность.
хранения.данных.в.Kafka.и.на.какие.компромиссы.приходится.идти.
Коэффициент репликации
Соответствующий.параметр.уровня.темы.называется.
replication.factor
..А.на.
уровне.брокера.для.автоматически.создаваемых.тем.используется.параметр.
default.replication.factor

144 Глава 6 • Надежная доставка данных
До.сих.пор.мы.предполагали,.что.коэффициент.репликации.тем.равен.3,.то.есть.
каждый.раздел.реплицируется.три.раза.на.трех.различных.брокерах..Это.было.
вполне.разумное.допущение,.соответствующее.умолчаниям.Kafka,.но.пользовате- ли.могут.менять.это.поведение..Даже.после.создания.темы.можно.добавлять.или.
удалять.реплики,.меняя.таким.образом.коэффициент.репликации.
Коэффициент.репликации.N.означает.возможность.потери.N.–.1.брокеров.при.
сохранении.надежности.чтения.из.темы.и.записи.в.нее..Так.что.повышение.коэф- фициента.репликации.означает.повышение.доступности.и.надежности.и.сниже- ние.количества.аварийных.ситуаций..В.то.же.время.для.обеспечения.равного.N.
коэффициента.репликации.вам.понадобится.как.минимум.N.брокеров.и.придется.
хранить.N.копий.данных,.то.есть.нужно.будет.в.N.раз.больше.дискового.простран- ства..Фактически.мы.повышаем.доступность.за.счет.дополнительного.аппаратного.
обеспечения.
Так.как.же.определить.правильное.число.реплик.для.темы?.Ответ.зависит.от.
степени.ее.важности.и.от.ресурсов,.которые.вы.готовы.потратить.для.повышения.
доступности..А.также.от.уровня.вашей.паранойи.
Если.вас.устраивает,.что,.возможно,.конкретная.тема.будет.недоступна.при.пере- запуске.отдельного.брокера.(это.нормально.при.обычном.функционировании.
кластера),.то.вполне.будет.достаточно.коэффициента.репликации.1..Не.забудьте.
убедиться,.что.ваше.начальство.и.пользователей.также.устраивает.этот.компро- мисс,.—.вы.экономите.на.жестких.дисках.или.серверах,.но.теряете.высокую.доступ- ность..Коэффициент.репликации.2.означает:.потеря.одного.брокера.не.страшна,.
что.представляется.вполне.достаточным..Однако.не.забывайте:.потеря.одного.
брокера.(особенно.на.старых.версиях.Kafka).может.сделать.кластер.нестабильным,.
вследствие.чего.придется.перезапустить.еще.один.брокер.—.контроллер.Kafka..
Это.значит,.что.при.коэффициенте.репликации.2.для.восстановления.после.воз- никшей.проблемы.может.понадобиться.перевести.систему.в.состояние.недоступ- ности..Непростой.выбор.
Поэтому.мы.рекомендуем.использовать.коэффициент.репликации.3.для.всех.тем,.
для.которых.важна.доступность..В.редких.случаях.это.считается.недостаточно.
безопасным.вариантом:.мы.встречали.банки,.в.которых.для.критично.важных.тем.
создавались.пять.реплик,.просто.на.всякий.случай.
Размещение.реплик.также.играет.важную.роль..По.умолчанию.Kafka.размещает.
каждую.реплику.раздела.на.отдельном.брокере..Однако.в.некоторых.случаях.этот.
вариант.недостаточно.безопасен..Если.все.реплики.раздела.размещены.на.брокерах.
в.одной.стойке,.в.случае.сбоя.коммутатора.top-of-rack.раздел.станет.недоступен.
вне.зависимости.от.коэффициента.репликации..Для.защиты.от.подобных.проблем.
на.уровне.стойки.мы.рекомендуем.распределять.брокеры.по.нескольким.стойкам.
и.использовать.параметр.конфигурации.брокеров.
broker.rack
,.чтобы.задавать.на- звание.стойки.для.каждого.брокера..При.заданных.названиях.стоек.Kafka.обеспечит.

Настройка брокера
1   ...   13   14   15   16   17   18   19   20   ...   39


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