70
Kafka в условиях повышенной нагрузки Выборнов Артём, Rambler&Co

Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

  • Upload
    ontico

  • View
    228

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузкиВыборнов Артём, Rambler&Co

Page 2: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)
Page 3: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)
Page 4: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Чем мы занимаемся?

• Сегментация аудитории• Эвристики• Классификация• Lookalike

• Прогноз трафика• Предсказание CTR• Аналитика• Рекомендации• ...

Page 5: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Было

Page 6: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Было

Page 7: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Было

Page 8: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Было

Page 9: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Стало

Page 10: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Стало

Page 11: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Стало

Page 12: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузки

• Как обеспечить семантику exactly once?

Page 13: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузки

• Как обеспечить семантику exactly once?• Какие существуют узкие места?

Page 14: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузки

• Как обеспечить семантику exactly once?• Какие существуют узкие места?• Какие метрики стоит мониторить?

Page 15: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Архитектура Kafka

Page 16: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Архитектура топика Kafka

Page 17: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Архитектура топика Kafka

Page 18: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Архитектура топика Kafka

Page 19: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Репликация

Page 20: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Репликация

Page 21: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров

Page 22: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров

• С потерями данных (Unclean leader election)• “Без потерь” данных (Clean leader election)

Page 23: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров

• С потерями данных (Unclean leader election) — Δ > const• “Без потерь” данных (Clean leader election) — Δ < const

Page 24: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров

• В любом случае теряете данные

Page 25: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров

• В любом случае теряете данные• Переизбрание может происходить когда всё идёт хорошо

Page 26: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров (без потерь)

(producer) request.required.acks = 0

Page 27: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

(producer) request.required.acks = 1

Переизбрание лидеров (без потерь)

Page 28: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

(producer) request.required.acks = -1

(kafka) min.insync.replicas.per.topic = topic:1

Переизбрание лидеров (без потерь)

Page 29: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

(producer) request.required.acks = -1

(kafka) min.insync.replicas.per.topic = topic:2

Переизбрание лидеров (без потерь)

Page 30: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров (без потерь)

• Нельзя писать в партицию, если количество живых реплик меньше числа insync.replicas

Page 31: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Переизбрание лидеров (без потерь)

• Нельзя писать в партицию, если количество живых реплик меньше числа insync.replicas

• Решение:• insync.replicas = 2• replication factor = 3

Page 32: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Отступы

Page 33: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Отступы

Page 34: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Сохранение отступов

• Автоматическое сохранение

Page 35: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Сохранение вручную (at least once)

Сохранение отступов

Page 36: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Сохранение отступов

• Сохранение вне Kafka (возможность exactly once)

Page 37: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Сохранение в HDFS (exactly once)

1. hdfs dfs -mv /tmp/file1 /logs/file2. hdfs dfs -mv /tmp/file2 /logs/file3. hdfs dfs -mv /tmp/offsets /runtime/offsets

Page 38: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Всё хорошо

• Producer получает ответ об успешной записи данных• Kafka реплицирует данные• Consumer атомарно сохраняет данные и отступы

Page 39: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Но начались проблемы

• Запаздывание логов

• Дубли сообщений (at least once)

Page 40: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Проблемы consumer’ов

• Медленная работа consumer’а на микробатчах

Page 41: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Проблемы consumer’ов

• Медленная работа consumer’а на микробатчах• Падения consumer’ов с ошибками:

• Не могу получить лидеров• Не могу получить отступы

Page 42: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Проблемы consumer’ов

• Медленная работа consumer’а на микробатчах• Падения consumer’ов с ошибками:

• Не могу получить лидеров• Не могу получить отступы

• Причина: Kafka медленно отвечает на простейшие запросы• Отдельные ноды отвечают по несколько минут

Page 43: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Выросла нагрузка на чтение

• 150 MByte/s → 600 MByte/s

600 MB/s

150 MB/s

Page 44: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Неравномерное распределение нагрузки

• Нагрузка на чтение в разрезе нод

150 MB/s

Page 45: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Неравномерное распределение нагрузки

• Неравномерно распределены партиции• Неравномерно распределены лидеры

Page 46: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Неравномерное распределение нагрузки

• Даже при нормальной работе кластера Kafka ошибается

Page 47: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Неравномерное распределение нагрузки

• Даже при нормальной работе кластера Kafka ошибается• Распределяем руками

Page 48: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Неравномерное распределение нагрузки

• Повышаем репликацию

Page 49: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Неравномерное распределение нагрузки

• Повышаем репликацию

Page 50: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Повышаем репликацию

Неравномерное распределение нагрузки

Page 51: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Повышаем репликацию• Помогаем Kafka не ошибаться

Неравномерное распределение нагрузки

Page 52: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Классические проблемы

• Сеть — часть нод в стойке с 1Gb uplink

Page 53: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Классические проблемы

• Сеть — часть нод в стойке с 1Gb uplink • Диски — Kafka не дружит с RAID 5

Page 54: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

В итоге

• Равномерно размазали нагрузку по нодам• Все ноды в стойках с 10Gb uplink• Не используем RAID 5• Kafka стала отвечать за разумное время• Нагрузка осталась высокой

Page 55: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Разгадка

• Повторное скачивание данных (at least once)

Page 56: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Разгадка

• Повторное скачивание данных (at least once)

• Отступы всех топиков camus попали в одну папку• Иногда терялись отступы после успешного фетча• Иногда успешно обновлялись

Page 57: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Нагрузка на чтение

Было

600 MB/s

Page 58: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Нагрузка на чтение

Стало

150 MB/s

Page 59: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Немного цифр

Page 60: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Мониторинг

• Узкие места• Сеть• Диски• Распределение нагрузки по нодам• Распределение лидеров толстых топиков

Page 61: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Нагрузка на чтение в разрезе нод

Мониторинг

150 MB/s

Page 62: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Мониторинг

• Узкие места• Сеть• Диски• Распределение нагрузки по нодам• Распределение лидеров толстых топиков

• Переизбрание лидеров

Page 63: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Мониторинг

• Узкие места• Сеть• Диски• Распределение нагрузки по нодам• Распределение лидеров толстых топиков

• Переизбрание лидеров• Рассинхронизация партиций

• Число несинхронных партиций (UnderReplicatedPartitions)• Максимальный лаг репликации (ReplicaFetcherManager.MaxLag)

Page 64: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Максимальный лаг репликации

Мониторинг

20 K

0

Page 65: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Мониторинг

• Узкие места• Сеть• Диски• Распределение нагрузки по нодам• Распределение лидеров толстых топиков

• Переизбрание лидеров• Рассинхронизация партиций

• Число несинхронных партиций (UnderReplicatedPartitions)• Максимальное отставание (ReplicaFetcherManager.MaxLag)

• Время ответа на простейшие запросы

Page 66: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

• Время ответа на запросы consumer’а

Мониторинг

10 s

Page 67: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузки

• Exactly once это про все элементы pipeline: producer, consumer, Kafka

Page 68: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузки

• Exactly once это про все элементы pipeline: producer, consumer, Kafka

• Узкие места: сеть, диски, баланс нагрузки

Page 69: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Kafka в условиях повышенной нагрузки

• Exactly once это про все элементы pipeline: producer, consumer, Kafka

• Узкие места: сеть, диски, баланс нагрузки• Стоит также мониторить: переизбрание лидеров,

отставание партиций, время ответа

Page 70: Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambler&Co)

Выборнов Артём• Почта: [email protected]• Рабочая почта: [email protected]