
Cloudflare оптимізує DNS-збірки Zone Builder, зменшуючи пам'ять і затримки
Планувальник цільових DNS-збірок і єдиний планувальник Cloudflare зменшили пікову пам'ять Zone Builder на 85% і вдвічі скоротили медіанну затримку завершення збірки, а 92.95% збірок оминають повну перебудову зони.
Cloudflare змінила свій DNS Zone Builder так, щоб для кожної зміни обирати найменшу безпечну збірку замість повної перебудови зон, що зменшило пікову пам'ять на 85% і вдвічі скоротило медіанну затримку завершення збірки. Планувальник цільових збірок і єдиний планувальник також дозволили 92.95% збірок уникнути повної перебудови зони.
Чому повні збірки стали витратними
Zone Builder перетворює зміни в базі даних на дані для авторитетних DNS-серверів Cloudflare і записує зміни в Quicksilver. Повна збірка читає, кодує і порівнює кожен запис та утримує всю зону в пам'яті, що витратно для зон із десятками мільйонів записів. Зараз Zone Builder отримує приблизно 700 змін DNS-записів на секунду, що більше, ніж приблизно 250 у 2022 році, плюс приблизно 100 інших подій.
Цільові збірки та п'ять типів збірок
Події тепер також включають змінені поля зони і налаштування, коли вони доступні. Планувальник відносить кожну зміну до одного з п'яти типів збірок: лише ресурси; ресурси і метадані; apex і метадані; очищення; або повна зона. Повні збірки використовуються лише тоді, коли безпечність меншої роботи не можна довести. За 24 години 86.81% були лише ресурсами, 2.54% ресурсами і метаданими, 2.30% apex і метаданими, 1.30% очищенням і 7.04% повною зоною. Два типи метаданих раніше були повними збірками, тому повні збірки зменшилися приблизно на 40%.
Спільні імена та планування
Quicksilver зберігає один ключ метаданих, спільний для кожної зони Cloudflare з тим самим доменним ім'ям. Цільові збірки перебудовують цей ключ із поточного кандидатного набору за потреби і записують записи зони перед метаданими, що посилаються на них. Єдиний планувальник об'єднує поставлену в чергу роботу для тієї самої зони, тому зміна A-запису і зміна wildcard-запису можуть стати однією збіркою. Він утримує повідомлення Kafka приєднаними, доки результати не будуть безпечно записані, і не дає одній завантаженій зоні захопити всіх виконавців через інтервал перебудови для однієї зони.
Результати перевірки, пам'яті та затримок
Тести еквівалентності порівнюють повні і цільові збірки побайтово. Дзеркальний Zone Builder споживає бойові події Kafka і читає бойовий стан бази даних, записуючи в окреме середовище Quicksilver; порівнювач перевіряє 20% вибірку. Після впровадження сукупна пам'ять робочого набору зменшилася з середнього значення 49 GiB до 7 GiB, а піки з 79 GiB до 12 GiB. У порівнянні пліч-о-пліч найбільший піковий сплеск затримки p99 зменшився з 14.6 хвилини до 1.21 хвилини. Після коротших очікувань агрегатора і інтервалу перебудови медіанна затримка завершення збірки зменшилася з приблизно 7.7 секунди до приблизно 3.3 секунди.
Джерела: Cloudflare
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.