Веб-версияОткрыть в Telegram

ПостНиколай Ижиков — One More Way to Make Backup in Ignite

15 ноября 2025
D
Data Engineering Digest
Ссылка
нажмите — покажем
Николай Ижиков — One More Way to Make Backup in Ignite Сложность: 3/3 (Обязательно к прослушиванию, если вам интересна работа с OLTP-нагрузкой и технические подробности снятия бэкапов) Николай Ижиков, Platform V DataGrid Tech Lead, а также контрибьютор в Apache Kafka и участник PMC Apache ignite, рассказывает нам, как реализованы бэкапы в Platform V DataGrid, а главное — про cache dumps. YouTube: https://www.youtube.com/watch?v=A3EkvdGK4Jg VK Видео: https://vkvideo.ru/video-147464741_456239442 🔍 Условия: Кластер процессинга: 32 узла, 700 ГБ RAM на узел, 40к RPS на узел. Кластер токенизатора: 5 узлов, 550 ГБ RAM на узел, 500к RPS. ⚙️Падение СУБД 1️⃣ Однонодовая СУБД — после падения приложение не работает, Запросы не обслуживаются, данные теряются при простое. 2️⃣ Распределенная СУБД — спектр последствий разный. Может снижаться перфоманс, может теряться часть данных. ⚙️Метрики восстановления после аварии Recovery Point Objective — целевая точка восстановления, после которой мы теряем данные. Мы оцениваем время, в течение которого мы теряем данные за этой точкой. Recovery Time Objective — с её помощью мы оцениваем время, затраченное на восстановление системы после аварии. 🛠 Способы формирования бэкапов (рекомендуется изучить презентацию к докладу): 1️⃣ Apache Ignite: ребаланс данных, позволяет сохранить данные, если количество упавших нод меньше бэкап-фактора. 2️⃣ DataGrid: при ребалансе данных распределение партиций такое, что у стойки есть дублер. Позволяет восстановиться при падении стойки. 3️⃣ Apache Ignite: CDC обеспечивает асинхронную логическую репликацию данных. RPO ➡️ секунды, RTO ➡️ 0. Данные реплицируются в другой кластер через WAL, доступ к данным открывается после перемещения сегмента в архив. Из-за этого RPO сдвигается. 4️⃣ Data Grid: Online CDC внутри ноды есть буфер данных, который наполняется событиями и из него данные стримятся в соседний кластер. RPO ➡️ 0, RTO ➡️ 0. Растет потребление памяти, при переполнении используется классический CDC через WAL. 5️⃣ Снапшоты в Apache Ignite: системный процесс PME делает stop the world. Начатые транзакции заканчиваются, новые стоят на паузе. В этот момент происходит копирование партиций, изменения пишутся отдельно, после снятия резервной копии изменения накладываются поверх снимка. RPO ➡️ часы, RTO ➡️ 0 6️⃣ Apache Ignite: инкрементальный снапшот снимает только изменения в данных, но часто. Система не блокируется. RPO ➡️ минуты, RTO ➡️ минуты. В докладе даны ссылки на статьи по этому механизму. 🔮 Cache dump 📝Задачи и качества метода: 1️⃣ консистентный бэкап in-memory кэшей с учетом транзакций без прерывания пользовательской нагрузки; 2️⃣ Восстановление данных на любую топологию; 3️⃣ Поддержка CLI; 4️⃣ API offline обработка ⚙️⚙️ Механизм снятия дампа: 1️⃣ Stop the world 2️⃣ Данные консистентны; запуск писателей дампа 3️⃣ Для сохранения консистентности установка listener'ов на изменения кэша 4️⃣ Запуск транзакций 5️⃣ Итерация по партициям и запись row by row 6️⃣ Запись данных listener'ом 🪛 Тонкости: 1️⃣ Откатиться, если где-то ошибка — Distributed Process. 2️⃣ Не перегрузить ноды системным процессом - прежде всего операции пользователя. 3️⃣ Запоминание изменений каждого ключа — это дорого по памяти. 📝 Эффективная фильтрация: 1️⃣ Итератор по партиции не транзакционный Listener должен сохранить entry до изменения 2️⃣ Итератор сортированный (B+дерево) 3️⃣ У каждой записи есть уникальная версия. Версия выдается на primary. ❔Ответы на вопросы: Q: cache dump можно снимать не только для in-memory cache, но и для персистентного кэша? A: Можно, вопрос целесообразности. Для persistent cache есть более подходящие способы. Q: Уточнение по процессу: если версия ключа более новая, то итератор её пропускает. Как все значения ключей попадают в запись бэкапа? A: Если версия старше версии в момент снятия, то эти данные либо пришли после запуска процесса снятия бэкапа, либо старые данные были изменены во время снятия и эти изменения записаны listener'ом.
11 · 1.8K ·

Рядом в ленте

DData Engineering Digest✨ Валентин Пановский — Миграция на Iceberg: как кролик съел зеленую сливу и не умер Сложность: 1/3 (Интересная историческая справка в начале , нет сложного кодаDData Engineering Digest✨ Татьяна Дидова — Как мы тестировали 5 способов загрузки данных в Greenplum и что из этого вышло Сложность: 1/3 (Желателен минимальный опыт работы с Greenplum.
это сообщение
DData Engineering DigestБронислав Житников — NiFi. Пишем код для codeless-системы Сложность: 2/3 (Если NiFi не трогали - пропускайте данный доклад. Это отличное подспорье для углубленнDData Engineering DigestПродолжение предыдущего поста. Выводы и ответы на вопросы не влезли) 📝 Чего избегать: 1️⃣ С осторожностью соединять процессоры 2️⃣ Не усложнять процессор в пого
DData Engineering DigestData Engineering Digest@DataEngineeringDigest · канал · Новости
1 175подписчиков474средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем