РИТ++ 2017, Backend Conf
Зал Кейптаун, 6 июня, 18:00
Тезисы:
http://backendconf.ru/2017/abstracts/2542.html
Kafka - распределённый брокер сообщений, нашедший широкое применение как универсальная шина для больших данных. Kafka позволяет как реализовать realtime-обработку большого числа событий, так и построить батчевый pipeline по доставке логов.
Почему мы используем Kafka? Если коротко - унификация. А если чуть подробнее - десятки поставщиков, терабайты логов каждый день, онлайн- и офлайн-pipeline'ы - без единой высокопроизводительной шины данных с этим крайне сложно совладать.
Из доклада вы узнаете о том, почему мы перешли на Kafka, и как она вписалась в наш pipeline. Поймёте, как обеспечить exactly once доставку данных. Узнаете о том, как из-за одной опечатки в несколько раз выросла нагрузка на Kafka, и что мы из этого выяснили. Выясните, какие метрики Kafka стоит мониторить и как по ним понять, что что-то идёт не так.
30. Переизбрание лидеров (без потерь)
• Нельзя писать в партицию, если количество живых реплик
меньше числа insync.replicas
31. Переизбрание лидеров (без потерь)
• Нельзя писать в партицию, если количество живых реплик
меньше числа insync.replicas
• Решение:
• insync.replicas = 2
• replication factor = 3
41. Проблемы consumer’ов
• Медленная работа consumer’а на микробатчах
• Падения consumer’ов с ошибками:
• Не могу получить лидеров
• Не могу получить отступы
42. Проблемы consumer’ов
• Медленная работа consumer’а на микробатчах
• Падения consumer’ов с ошибками:
• Не могу получить лидеров
• Не могу получить отступы
• Причина: Kafka медленно отвечает на простейшие
запросы
• Отдельные ноды отвечают по несколько минут
54. В итоге
• Равномерно размазали нагрузку по нодам
• Все ноды в стойках с 10Gb uplink
• Не используем RAID 5
• Kafka стала отвечать за разумное время
• Нагрузка осталась высокой
56. Разгадка
• Повторное скачивание данных (at least once)
• Отступы всех топиков camus попали в одну папку
• Иногда терялись отступы после успешного фетча
• Иногда успешно обновлялись
65. Мониторинг
• Узкие места
• Сеть
• Диски
• Распределение нагрузки по нодам
• Распределение лидеров толстых топиков
• Переизбрание лидеров
• Рассинхронизация партиций
• Число несинхронных партиций (UnderReplicatedPartitions)
• Максимальное отставание (ReplicaFetcherManager.MaxLag)
• Время ответа на простейшие запросы
67. Kafka в условиях повышенной нагрузки
• Exactly once это про все элементы pipeline: producer,
consumer, Kafka
68. Kafka в условиях повышенной нагрузки
• Exactly once это про все элементы pipeline: producer,
consumer, Kafka
• Узкие места: сеть, диски, баланс нагрузки
69. Kafka в условиях повышенной нагрузки
• Exactly once это про все элементы pipeline: producer,
consumer, Kafka
• Узкие места: сеть, диски, баланс нагрузки
• Стоит также мониторить: переизбрание лидеров,
отставание партиций, время ответа