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

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


Скачать 7.59 Mb.
НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Дата21.06.2022
Размер7.59 Mb.
Формат файлаpdf
Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
ТипДокументы
#609074
страница24 из 39
1   ...   20   21   22   23   24   25   26   27   ...   39
191
ЦОД,.так.что.в.каждом.из.них.будет.находиться.два.конфликтующих.события..
Приложениям.в.каждом.из.ЦОД.необходимо.знать,.что.делать.в.такой.ситуа- ции:.следует.ли.выбрать.одно.из.событий.как.правильное?.Если.да,.то.должны.
существовать.согласованные.правила.выбора,.чтобы.приложения.из.обоих.ЦОД.
приняли.одинаковое.решение..Или.следует.счесть,.что.оба.события.правильные,.
просто.отправить.пользователю.две.книги,.а.дальше.пусть.другой.отдел.разби- рается.с.возвратом?.Amazon.обычно.так.и.решает.подобные.проблемы,.но.при.
торговле.акциями.это.невозможно..При.каждом.сценарии.использования.есть.
свой.способ.минимизации.конфликтов.и.обработки.возникающих.конфликтных.
ситуаций..Важно.лишь.не.забывать,.что.при.такой.архитектуре.конфликты.не-
избежны.и.их.придется.как-то.решать.
Если.вам.удастся.решить.проблемы.с.асинхронными.операциями.чтения.одних.
и.тех.же.данных.из.нескольких.мест.и.записи.в.них,.то.данная.архитектура.—.очень.
неплохой.вариант..Это.наиболее.масштабируемая,.отказоустойчивая,.гибкая.и.за- тратоэффективная.архитектура.из.известных.нам..Так.что.имеет.смысл.поискать.
возможности.избежать.циклов.репликации,.ограничить.пользователей.в.основном.
одним.ЦОД.и.найти.способ.решения.конфликтов.при.их.возникновении.
Часть.проблемы.зеркального.копирования.по.типу.«активный.—.активный»,.
особенно.в.случае.более.чем.двух.ЦОД,.состоит.в.том,.что.вам.понадобится.про- цесс.зеркального.копирования.для.каждой.пары.ЦОД.и.каждого.направления..
При.пяти.ЦОД.придется.поддерживать.работу.как.минимум.20.процессов.зер- кального.копирования,.а.вероятнее.всего.40,.поскольку.для.высокой.доступности.
необходима.избыточность.
Кроме.того,.необходимо.избегать.зацикливания.—.бесконечного.зеркального.копи- рования.одного.и.того.же.события.туда.и.обратно..Для.этого.можно.выделить.для.
каждой.логической.темы.отдельную.тему.в.каждом.ЦОД.и.не.реплицировать.темы,.
производителем.которых.является.удаленный.ЦОД..Например,.логическая.тема.
users.будет.называться.SF.users.в.одном.ЦОД.и.NYC.users.—.в.другом..При.зеркаль- ном.копировании.SF.users.будет.скопирована.из.Сан-Франциско.(SF).в.Нью-Йорк.
(NYC),.а.NYC.users.—.из.Нью-Йорка.в.Сан-Франциско..В.результате.все.события.
будут.зеркально.копироваться.однократно,.но.в.каждом.из.этих.ЦОД.будут.в.на- личии.обе.темы,.SF.users.и.NYC.users,.то.есть.информация.по.всем.пользователям..
Потребителям.придется.читать.данные.из.*.users,.чтобы.получить.события.по.всем.
пользователям..Эту.схему.можно.рассматривать.как.отдельное.пространство.имен.
для.каждого.ЦОД,.включающее.все.его.темы..В.нашем.примере.речь.идет.о.про- странствах.имен.NYC.и.SF.
Отметим,.что.в.ближайшем.будущем.(возможно,.еще.до.того,.как.к.вам.в.руки.
попадет.эта.книга).в.Apache.Kafka.появятся.заголовки.записей
1
..Это.позволит.по- мечать.записи.ЦОД,.в.котором.они.впервые.появились,.предотвращая.с.помощью.
1.
Были.добавлены.в.версии.0.11.0.0..См..KAFKA-4208..—.Примеч. пер.

192 Глава 8 • Зеркальное копирование между кластерами информации.из.этого.заголовка.бесконечные.циклы.зеркального.копирования,.а.так- же.организовывать.обработку.событий.из.разных.ЦОД.по.отдельности..Эту.функ- циональность.можно.реализовать.и.с.помощью.структурированного.формата.
данных.для.значений.записей.(мой.излюбленный.пример.—.Avro),.включая.теги.
и.заголовки.в.самое.событие..Однако.это.потребует.дополнительных.усилий.при.
зеркальном.копировании,.поскольку.ни.одна.из.существующих.утилит.зеркального.
копирования.не.будет.поддерживать.пользовательский.формат.заголовка.
Архитектура типа «активный — резервный»
В.некоторых.случаях.единственное.требование.к.мультикластерной.архитектуре.—.
наличие.сценария.действий.в.случае.аварийного.сбоя..Допустим,.у.вас.есть.два.
кластера.в.одном.ЦОД..Один.кластер.используется.для.всех.приложений,.а.вто- рой,.содержащий.практически.все.события.из.первого,.предназначен.для.приме- нения.при.полной.недоступности.первого..Или,.возможно,.для.вас.важна.отказо- устойчивость.в.географическом.смысле..Работа.всего.бизнеса.осуществляется.
из.ЦОД.в.Калифорнии,.но.на.случай.землетрясения.вы.хотели.бы.иметь.второй.
ЦОД.в.Техасе,.большую.часть.времени.практически.не.работающий..В.техасском.
ЦОД,.вероятно,.будут.бездействующие.(«холодные»).копии.всех.приложений,.
которые.администраторы.могут.запустить.в.случае.чрезвычайной.ситуации.и.ко- торые.будут.применять.второй.кластер.(рис..8.4)..Зачастую.это.требование.за- кона,.а.не.реальный.план.действий,.но.все.равно.лучше.быть.готовым.к.подобной.
ситуации.
Рис. 8.4. Архитектура типа «активный — резервный»
Преимущества.подобной.схемы.—.простота.настройки.и.возможность.использо- вания.практически.в.любом.сценарии..Нужно.просто.установить.второй.кластер.
и.настроить.процесс.зеркального.копирования,.который.перебрасывал.бы.данные.
из.одного.кластера.в.другой..И.никаких.проблем.с.доступом.к.данным,.обработкой.
конфликтов.и.другими.архитектурными.особенностями.

Мультикластерные архитектуры 193
Недостатки.же.таковы:.простаивает.отличный.кластер,.да.и.переключение.с.одного.
кластера.Kafka.на.другой.на.практике.не.такая.уж.простая.вещь..Определяющий.
фактор.—.то,.что.в.настоящий.момент.невозможно.переключиться.с.одного.класте- ра.Kafka.на.другой.без.потери.данных.или.дублирования.событий..А.часто.и.того.
и.другого..Можно.минимизировать.эти.неприятные.эффекты,.но.не.исключить.их.
полностью.
Очевидно,.что.кластер,.не.выполняющий.никакой.полезной.работы,.а.лишь.про- стаивающий.в.ожидании.аварийного.сбоя,.—.пустая.трата.ресурсов..Поскольку.
аварийные.сбои.—.событие.редкое.(или.по.крайней.мере.должно.быть.таковым),.
большую.часть.времени.этот.кластер.машин.вообще.ничего.не.будет.делать..Неко- торые.компании.пытаются.справиться.с.этой.проблемой.за.счет.так.называемого.
DR-кластера.(disaster.recovery,.кластер.для.переключения.в.случае.аварийного.
сбоя),.намного.меньшего,.чем.кластер.для.промышленной.эксплуатации..Но.это.
довольно.рискованное.решение,.ведь.нет.уверенности,.что.такой.минималистичный.
кластер.сможет.справиться.с.реальной.нагрузкой.при.нештатной.ситуации..Другие.
компании.предпочитают,.чтобы.в.обычное.время,.когда.нет.нештатных.ситуаций,.
резервный.кластер.приносил.пользу,.и.делегируют.ему.рабочую.нагрузку.«только.
для.чтения»,.то.есть.фактически.используют.архитектуру.с.топологией.типа.«звез- да»,.где.у.«звезды».только.один.луч.
Более.насущный.вопрос:.а.как,.собственно,.переключиться.на.DR-кластер.в.Apache.
Kafka?
Какой.бы.из.существующих.методов.вы.ни.выбрали,.команда.специалистов.по.
обеспечению.надежности.должна.регулярно.практиковаться.в.его.выполнении..
Прекрасно.работающий.сегодня.план.может.перестать.действовать.после.обнов- ления,.а.существующий.инструментарий.—.оказаться.устаревшим.при.новых.
сценариях.применения..Тренировки.по.восстановлению.после.сбоя.следует.про- водить.не.реже.чем.раз.в.квартал..А.хорошие.команды.специалистов.по.обеспече- нию.надежности.делают.это.гораздо.чаще..Знаменитая.утилита.Chaos.Monkey.
компании.Netflix,.вызывающая.аварийные.сбои.в.случайные.моменты.времени,.
доводит.этот.тезис.до.абсолюта:.любой.день.может.оказаться.днем.тренировки.
восстановления.после.сбоя.
Посмотрим.теперь,.что.включает.в.себя.восстановление.после.сбоя.
Потери данных и несогласованности при внеплановом восстановлении после сбоя
Поскольку.все.программные.решения.для.зеркального.копирования.Kafka.асин- хронны.(мы.обсудим.синхронные.решения.в.следующем.разделе),.то.в.DR-кластере.
не.будет.последних.сообщений.из.основного.кластера..Следует.всегда.контро- лировать.отставание.DR-кластера.от.основного.и.не.позволять.ему.отставать.
слишком.сильно..Но.при.перегруженной.системе.стоит.ожидать,.что.DR-кластер.

194 Глава 8 • Зеркальное копирование между кластерами будет.отставать.от.основного.на.несколько.сотен.или.даже.тысяч.сообщений..
Если.ваш.кластер.Kafka.обрабатывает.миллион.сообщений.в.секунду,.а.отстава- ние.DR-кластера.от.основного.равно.5.мс,.то.DR-кластер.даже.при.наилучшем.
сценарии.будет.отставать.на.5000.сообщений..Так.что.будьте.готовы.к.потере.
данных.в.случае.незапланированного.переключения..Если.же.переключение.
запланировано,.можно.остановить.основной.кластер.и.подождать,.пока.в.ходе.
зеркального.копирования.будут.скопированы.оставшиеся.сообщения,.прежде.
чем.переключать.приложения.на.DR-кластер,.исключив.таким.образом.потерю.
данных..На.случай.незапланированного.переключения.учтите,.что.в.Kafka.сейчас.
нет.понятия.транзакций,.так.что.если.часть.событий.из.нескольких.тем.связаны.
друг.с.другом.(например,.продажи.и.позиции.заказа),.то.часть.событий.может.по- ступить.в.DR-кластер.вовремя.(для.переключения),.а.часть.—.нет..Приложения.
должны.уметь.обрабатывать.позиции.заказов.без.соответствующих.продаж.после.
переключения.на.DR-кластер.
Начальное смещение для приложений после аварийного переключения
Вероятно,.сложнее.всего.при.переключении.на.другой.кластер.гарантировать,.что.
приложения.начнут.потреблять.данные.с.нужного.места..Существует.несколько.
возможных.решений.этой.проблемы..Некоторые.просты,.но.могут.вызвать.до- полнительную.потерю.данных.или.обработку.дубликатов,.другие.сложнее,.но.
позволяют.минимизировать.потери.данных.и.повторную.обработку..Рассмотрим.
некоторые.из.них.
‰
‰
Автоматический сброс смещения..У.потребителей.Apache.Kafka.имеется.пара- метр,.определяющий.их.поведение.при.отсутствии.ранее.зафиксированных.
смещений,.—.приступить.к.чтению.с.начала.или.с.конца.раздела..В.случае.ис- пользования.старых.потребителей,.фиксирующих.смещения.в.ZooKeeper,.если.
не.производится.зеркальное.копирование.этих.смещений.в.рамках.плана.DR,.
необходимо.выбрать.один.из.этих.параметров:.либо.читать.с.начала.имеющихся.
данных.и.обрабатывать.большое.количество.дубликатов,.либо.перескочить.
в.конец.раздела,.пропустив.при.этом.некое.(надеемся,.небольшое).число.со- бытий.
‰
‰
Репликация темы для смещений..Потребители.новых.(0.9.и.выше).версий.Kafka.
будут.фиксировать.смещения.в.специальную.тему.
__consumer_offsets
..Если.
зеркально.копировать.ее.в.DR-кластер,.то.потребители.смогут.начать.читать.
данные.из.DR-кластера.с.тех.смещений,.на.которых.они.закончили.чтение..
Все.просто,.но.не.без.некоторых.нюансов.
Во-первых,.нет.никаких.гарантий,.что.смещения.в.основном.и.дополнительном.
кластерах.будут.совпадать..Допустим,.что.данные.хранятся.в.основном.кластере.
только.три.дня.и.вы.начинаете.зеркально.копировать.тему.через.неделю.после.ее.
создания..В.этом.случае.первым.смещением.в.основном.кластере.будет,.напри- мер,.смещение.57000000.(старые.события.за.первые.четыре.дня.уже.удалены),.
а.первое.смещение.в.DR-кластере.—.0..Так.что.попытка.потребителя.прочитать.

Мультикластерные архитектуры 195
из.DR-кластера.смещение.57000003,.потому.что.именно.его.он.должен.читать.
следующим,.приведет.к.сбою.
Во-вторых,.даже.если.начать.зеркально.копировать.сразу.же.после.создания.
темы,.так.что.и.темы.основного.кластера,.и.DR-темы.будут.начинаться.со.
смещения.0,.а.повторы.попыток.отправки.производителем.могут.привести.
к.расхождению.смещений..Проще.говоря,.не.существует.варианта.зеркального.
копирования.Kafka,.которое.сохраняло.бы.смещения.при.переходе.от.основного.
к.DR-кластеру.
В-третьих,.даже.если.смещения.сохраняются.в.точности,.из-за.отставания.DR- кластера.от.основного.кластера.и.отсутствия.в.настоящий.момент.в.Kafka.тран- закций.информация.о.фиксации.потребителем.Kafka.смещения.может.прибыть.
раньше.или.позже.записи.с.данным.смещением..При.переключении.после.сбоя.
потребитель.может.обнаружить.смещения.без.соответствующих.им.записей..
Или.может.оказаться,.что.последнее.зафиксированное.смещение.в.DR.старше,.
чем.последнее.зафиксированное.смещение.основного.кластера.(рис..8.5).
Необходимо.смириться.с.некоторым.количеством.дубликатов,.если.последнее.
зафиксированное.смещение.в.DR-кластере.старше,.чем.зафиксированное.в.ос- новном.кластере,.или.если.смещения.в.записях.DR-кластера.опережают.смеще- ния.в.основном.из-за.повторов.попыток.отправки..Вам.придется.также.решить,.
что.делать.со.случаями,.когда.для.последнего.зафиксированного.смещения.в.DR- кластере.не.существует.соответствующей.записи,.—.начать.обработку.с.начала.
темы.или.перескочить.к.ее.концу?
Как.видите,.у.данного.подхода.есть.ограничения..Тем.не.менее.этот.вариант.по- зволяет.переключиться.на.другой.DR-кластер.при.меньшем.числе.дубликатов.
или.пропущенных.событий.по.сравнению.с.другими.подходами,.оставаясь.при.
этом.простым.в.реализации.
‰
‰
Переключение по времени..При.использовании.действительно.новых.(0.10.0.
и.выше).версий.потребителей.Kafka.каждое.сообщение.включает.метку.даты/
времени,.соответствующую.времени.отправки.сообщения.в.Kafka..В.еще.более.
новых.версиях.(0.10.1.0.и.выше).брокеры.включают.индекс.и.API.для.поиска.
смещения.по.метке.даты/времени..Таким.образом,.если.вы.переключились.на.
DR-кластер.и.знаете,.что.проблемы.начались.в.4:05,.то.можете.сказать.потреби- телям,.что.нужно.начинать.обработку.данных.с.4:03..Конечно,.будет.несколько.
дубликатов,.относящихся.к.этим.двум.минутам,.но.другие.варианты.еще.хуже..
К.тому.же.такое.поведение.системы.гораздо.легче.объяснить.сотрудникам:.
«Мы.откатились.к.времени.4:03».звучит.намного.лучше,.чем.«Мы.откатились.
к,.возможно,.последним.зафиксированным.смещениям»..Так.что.это.зачастую.
неплохой.компромисс..Единственный.вопрос:.как.сообщить.потребителям.о.не- обходимости.начинать.обработку.данных.с.4:03?
Один.из.вариантов:.добавить.настраиваемый.пользователем.параметр,.который.
задавал.бы.начальное.время.для.приложения..При.задании.этого.параметра.
приложение.может.воспользоваться.новыми.API.для.извлечения.смещений.
по.времени,.перейти.к.этому.моменту.и.начать.потребление.данных.с.нужной.
точки,.фиксируя.смещения.обычным.образом.

196 Глава 8 • Зеркальное копирование между кластерами
Рис.
8.5.
Переключение при сбое приводит к появлению зафиксированных смещений без соответствующих записей

Мультикластерные архитектуры 197
Этот.параметр.—.замечательная.вещь,.если.сразу.писать.все.приложения.таким.
образом..Но.что.если.вы.уже.создали.приложение.без.него?.Можно.без.особых.
проблем.написать.небольшую.утилиту,.которая.будет.принимать.на.входе.мет- ку.даты/времени,.извлекать.для.нее.смещения.с.помощью.новых.API,.после.
чего.фиксировать.смещения.для.списка.разделов.и.тем.как.конкретной.группы.
потребителей..Мы.надеемся.добавить.такую.утилиту.в.Kafka.в.ближайшем.
будущем,.но.вы.можете.написать.ее.и.самостоятельно..При.запуске.подобной.
утилиты.необходимо.приостановить.работу.группы.потребителей.и.возобновить.
ее.непосредственно.после.завершения.работы.утилиты.
Это.вариант.можно.рекомендовать.для.тех,.кто.использует.новые.версии.Kafka,.
хочет.быть.уверенным.в.том,.что.при.аварийном.переключении.система.будет.
вести.себя.правильно,.и.не.против.написать.немного.собственного.кода.в.про- цессе.
‰
‰
Внешнее хранение соответствий смещений..Одна.из.главных.проблем.при.зер- кальном.копировании.темы.для.смещений.состоит.в.возможных.расхождениях.
смещений.в.основном.и.DR-кластере..Из-за.этого.некоторые.компании.предпо- читают.использовать.внешнее.хранилище.данных,.например.Apache.Cassandra,.
для.хранения.соответствий.смещений.одного.кластера.смещениям.другого..
Они.настраивают.свои.утилиты.зеркального.копирования.Kafka.так,.что.при.
генерации.события.для.отправки.в.DR-кластер.оба.смещения.отправляются.
во.внешнее.хранилище..Или.же.сохраняют.оба.смещения.только.в.случае.из- менения.различия.между.ними..Например,.если.смещение.495.на.основном.кла- стере.соответствует.смещению.500.в.DR-кластере,.мы.записываем.во.внешнее.
хранилище.пару.(495,.500)..Если.в.дальнейшем.разница.меняется.и.смещение.
596.соответствует.уже.смещению.600,.то.записываем.новое.соответствие.(596,.
600)..Необходимости.хранить.все.промежуточные.соответствия.смещений.
между.495.и.596.нет,.мы.просто.предполагаем,.что.разница.остается.неизмен- ной.и.смещение.550.в.основном.кластере.будет.соответствовать.смещению.555.
в.DR-кластере..А.в.случае.переключения.на.резервный.кластер.вместо.задания.
соответствий.меток.даты/времени.(всегда.немного.неточных).используются.
соответствия.смещений.основного.кластера.смещениям.DR-кластера..При.
этом.реализуется.один.из.двух.описанных.ранее.методов,.чтобы.потребители.
начинали.чтение.с.новых.смещений.из.карты.соответствий..Однако.сохраняется.
проблема.с.фиксацией.смещений,.прибывших.раньше.самих.записей,.а.также.
смещений,.которые.не.были.вовремя.зеркально.скопированы.в.DR-кластер,.но.
часть.проблемных.случаев.все.равно.будет.охвачена.
Это.решение.довольно.сложно.и,.по.моему.мнению,.практически.никогда.
не.оправдывает.дополнительных.усилий..Оно.появилось.еще.в.те.времена,.
когда.не.существовало.индексов,.которые.можно.использовать.для.аварийного.
переключения..Сейчас.я.предпочел.бы.обновить.кластер.и.воспользоваться.
переключением.по.времени,.а.не.тратить.усилия.на.хранение.соответствий.
смещений,.все.равно.не.охватывающее.все.сценарии.аварийного.переклю- чения.

198 Глава 8 • Зеркальное копирование между кластерами
После аварийного переключения
Предположим,.что.аварийное.переключение.было.успешным..Все.прекрасно.ра- ботает.на.DR-кластере..Теперь.нам.нужно.что-то.сделать.с.основным.кластером..
Например,.сформировать.из.него.новый.DR-кластер.
Очень.заманчиво.просто.изменить.направление.процесса.зеркального.копирования.
и.начать.зеркально.копировать.данные.из.нового.основного.кластера.в.старый..
Однако.при.этом.возникают.два.важных.вопроса.
‰
‰
Как.узнать,.с.какого.места.начинать.зеркальное.копирование?.Нам.придется.
решить.ту.же.проблему,.которую.мы.описали.ранее,.применительно.ко.всем.
потребителям..И.не.забывайте,.что.для.всех.наших.решений.существуют.сце- нарии.использования,.при.которых.возникают.дубликаты.или.пропущенные.
данные.—.зачастую.и.то.и.другое.
‰
‰
Кроме.того,.по.обсуждавшимся.выше.причинам.вполне.возможно,.что.в.исход- ном.основном.кластере.содержатся.события,.отсутствующие.в.DR-кластере..
Если.начать.зеркальное.копирование.новых.данных.в.обратную.сторону,.эти.
дополнительные.события.никуда.не.денутся.и.два.кластера.окажутся.не.со- гласованными.
Поэтому.простейшим.решением.будет.сначала.почистить.исходный.кластер.—.
удалить.все.данные.и.зафиксированные.смещения,.после.чего.начать.зеркальное.
копирование.из.нового.основного.кластера.в.новый.DR-кластер..Благодаря.этому.
вы.получите.чистый.DR-кластер,.идентичный.новому.основному.
Несколько слов об обнаружении кластеров
При.планировании.резервного.кластера.очень.важно.учесть,.что.в.случае.аварий- ного.переключения.ваши.приложения.должны.будут.откуда-то.узнать,.как.начать.
взаимодействие.с.резервным.кластером..Если.вы.«зашили».имена.хостов.брокеров.
основного.кластера.в.свойства.производителей.и.потребителей,.то.это.будет.не- легко..Большинство.компаний.для.простоты.создают.имя.DNS,.которое.в.обычных.
обстоятельствах.указывает.на.брокеры.основного.кластера..В.случае.аварии.можно.
сделать.так,.чтобы.оно.ссылалось.на.резервный.кластер..Сервис.обнаружения.
(DNS.или.какой-то.другой).не.должен.включать.все.брокеры.—.клиентам.Kafka.
достаточно.успешно.обратиться.к.одному.брокеру,.чтобы.получить.метаданные.
кластера.и.обнаружить.все.остальные..Так.что.обычно.достаточно.включить.всего.
три.брокера..Независимо.от.метода.обнаружения.большинство.сценариев.вос- становления.после.сбоя.требуют.перезапуска.приложений-потребителей.после.
переключения,.чтобы.они.смогли.обнаружить.новые.смещения,.с.которых.нужно.
начинать.чтение.

Мультикластерные архитектуры
1   ...   20   21   22   23   24   25   26   27   ...   39


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