Вузлова точка, ідентифікована до прибуття трафіку
Центральність міжності
Для кожної пари вузлів у графі існує найкоротший шлях між ними. Центральність міжності вузла N = частка всіх найкоротших шляхів, що проходять через N.
Вузол із високою централістю міжності лежить на шляху між багатьма іншими парами. Якщо він уповільнюється, уповільнюються багато потоків. Якщо він виходить з ладу, багато потоків зупиняються.
Архітектурна інтерпретація: вузли з високою централістю міжності — це ті, на які кожен архітектурний огляд має звертати особливу увагу. Вони є одночасно вузловими точками, однократними точками відмови (SPOF) та компонентами, критичними за навантаженням. До них, як правило, належать:
- Провайдер DNS (між кожним клієнтом і кожним сервісом)
- Вхідний проксі (між кожним клієнтом і кожним бекендом)
- Первинний вузол бази даних (між кожним бекендом і кожним запитом на читання)
- Сервіс аутентифікації (між кожним користувачем і кожним авторизованим дією)
Виявлення без вимірювання: лише топологія графа ідентифікує вузли з високою міжцентральністю. Вам не потрібні дані про трафік; вам потрібна архітектурна схема. Вузол, що розташований між багатьма парами інших вузлів, є структурно критичним.
Операційний наслідок: вузли з високою міжцентральністю потребують непропорційно великих інвестицій у (1) запас потужності, (2) надлишковість, (3) спостережність та (4) сценарії реагування на інциденти.
Найменший розріз відключає найменшу частину
Теорема про мінімальний розріз простими словами
Мінімальний розріз (min-cut) між двома вузлами графа = найменша кількість ребер (або вузлів), які необхідно видалити, щоб розірвати з'єднання між ними.
Операційне тлумачення: min-cut обмежує найгірший випадок радіусу вибуху (blast radius). Якщо min-cut між 'clients' та 'database' дорівнює 1 ребру (єдиний проксі), то втрата цього ребра розриває з'єднання всіх клієнтів із базою даних. Якщо min-cut дорівнює 5, то для повного розірвання з'єднання потрібно одночасно втратити 5 компонентів; це невдача, але вона обмежена.
Проектування з урахуванням радіусу вибуху: збільшуйте min-cut на кожному важливому межі. Кілька проксі; кілька вузлів кешу; кілька мережевих шляхів між ЦОД. Кожне додавання збільшує min-cut на 1.
Візерунок «бульдока» (bulkhead pattern) у термінах графів: розділіть ресурси на окремі підграфи, які не мають спільного min-cut один з одним. Збій у межах одного підграфа не може поширитися на інші, оскільки ребер між ними не існує.
Діаметр визначає відстань поширення збою
Діаметр графа = найдовший найкоротший шлях між будь-якими двома вузлами.
Поширення збою: коли вузол збивається, а повторні спроби (retries) повертаються назад, вони торкаються вихідних вузлів на відстані до діаметра. Система з діаметром 3 (клієнт -> проксі -> бекенд -> БД) означає, що збій БД впливає на 3 вихідні шари під час шторму повторних спроб.
Наслідок: менший діаметр = швидше локалізація збою, але також більше концентрація вузлів. У кожного проєкту є свої компроміси.
Обчислення мінімального розрізу для реальної архітектури
Архітектура: 1 DNS, 1 CDN, 3 зворотних проксі, 12 реплік бекенду, 1 основний БД.
Аудит режимів збою за допомогою графових метрик
Синтез
Тепер ви можете ідентифікувати вузли з найвищою проміжною центральністю, обчислювати мінімальний розріз на кожній межі та оцінювати відстань поширення збою за допомогою діаметра.
Застосуйте всі три методи.
Система: 50 клієнтських кінцевих точок -> 1 DNS -> 2 POP-вузли CDN -> 4 зворотні проксі -> 16 реплік бекенду -> { кластер БД (1 основний + 2 резервні), кластер Redis (5 вузлів), 3 зовнішні API }.
Додаткові нотатки
Додаткові нотатки
Цей урок про геометрію переосмислює основний урок Режими збою та радіус вибуху за допомогою метрик графів (міжність, мінімальний розріз, діаметр).
Останній додатковий матеріал, geometry_of_observability_and_capacity, розглядає комірки Вороного для зон охоплення PoP CDN, нижню межу швидкості світла в трикутнику затримки та криву чергування, переглянуту на рівні проксі.
Чудова робота.