Вхідний та вихідний трафік як окремі множини
Біпартичні графи в архітектурі мережі
Біпартичний граф розділяє вузли на дві множини, причому ребра дозволені лише між множинами (ніколи всередині однієї множини).
Мережеві межі мають природну біпартичну структуру:
- Вхідний бік: зовнішні клієнти з одного боку, внутрішні сервіси з іншого. Ребра: зовнішні запити, що вхід, та внутрішні відповіді, що вихід.
- Сторона виходу (egress): внутрішні сервіси з одного боку, зовнішні призначення з іншого. Рёбра: внутрішні сервіси, що ініціюють вихідні виклики, та зовнішні відповіді, що повертаються.
Асиметрія:
- Вхід (Ingress): множина джерел необмежена (будь-хто в інтернеті). Множина призначень мала (кілька сервісів). Обсяг зростає пропорційно до кількості користувачів.
- Вихід (Egress): множина джерел мала (кілька внутрішніх сервісів). Множина призначень обмежена (кілька відомих партнерів). Обсяг зростає пропорційно до внутрішньої активності.
Дизайн з одним вузлом зводиться до об'єднання обох дводольних половин через один вузол. Цей вузол має збіг трафіку ззовні (вхід) ТА збіг трафіку зсередини (зворотний напрямок виходу). Навантаження на вузол = сума навантажень з обох боків.
Розділений дизайн зберігає обидві дводольні половини на окремих вузлах. Кожен вузол виконує одну роль з відповідною віссю масштабування.
До розділення: Розривна вершина всюди
Один бокс: Одна вершина тримає все
До розділення між кожною зовнішньою/внутрішньою парою розташовано єдиний проксі-бокс. У графових термінах це вершина розрізу високого порядку: її видалення роз'єднує всіх клієнтів від усіх бекендів ТА всіх внутрішніх сервісів від усіх зовнішніх партнерів.
Зв'язність у цій вершині = 1. Будь-який фактор, що порушує цю вершину (збій процесу, мережевий збій, вбивство через OOM), роз'єднує всі залежні шляхи.
Після розділення: вершина розрізу замінена на дві легші вершини
Розділення на ingress + egress створює два графові вузли там, де раніше був один. Кожен вузол тепер розташований лише на одній біпарній половині:
- Вузел Ingress: вершина розрізу для біпарної половини зовнішні-клієнти-до-внутрішніх-сервісів
- Вузел Egress: вершина розрізу для біпарної половини внутрішні-сервіси-до-партнерів
Петля hairpin зникає геометрично: у графі з одним боксом внутрішній сервіс, який намагається досягти зовнішньоорієнтованого сервісу через публічну адресу, мав проходити крізь одну й ту саму вершину двічі (вихід через роль egress, потім вхід через роль ingress). У розділеному графі проходження торкається двох різних вершин.
Зв'язність на кожній стороні залишається 1, але дві вершини розрізу можуть бути замінені незалежно. Додавання другого проксі ingress підвищує зв'язність на стороні ingress до 2, не змінюючи сторону egress.
Реплікація з кожного боку
Виробничі фліти часто запускають 2+ проксі-сервери входу (HA) ТА 2+ проксі-сервери виходу (HA). Кожен бік досягає з'єднаності 2 незалежно. Пропускна здатність масштабується горизонтально на кожному боці за потреби.
Терпимість до розбиття мережі
Синтез
Тепер ви можете читати мережеві архітектури як дводольні графи, ідентифікувати розривні вершини та відстежувати з’єднаність за кожну половину.
Застосуйте це до розбиття мережі.
Розбиття мережі — це розріз графа: ребра, що перетинають розбиття, зупиняються; обидві сторони продовжують працювати, але не можуть взаємодіяти одна з одною.
Географічно розподілена система має два центри обробки даних, з’єднані єдиним міжцентровим каналом. Вхідний трафік надходить через ЦО1; вихідний трафік проходить через ЦО1 до зовнішніх партнерів; деякі внутрішні сервіси розташовані в ЦО2 та викликають зворотні запити до ЦО1 для операцій зі станом.
Додаткові нотатки
Додаткові нотатки
Цей урок з геометрії переосмислює головний урок Розділення входу та виходу як аналіз дводольного графа.
Наступний супутник, geometry_of_failure_modes_and_blast_radius, виводить центральність проміжного положення (визначає вузлові вузькі місця) та мінімальний розріз (обмежує радіус вибуху).
Чудова робота.