Одноранговий зв’язок описує, як подорожують пакети програм, і нічого більше. Партнери досі мали знайти одне одного, довести, хто вони, і часом вдатися до ретранслятора, коли прямий шлях не вдавалося побудувати. Це три окремі служби, і розгортання може бути одноранговим для даних, тоді як для всього іншого воно цілком централізоване. Порівнювати проєкти означає порівнювати ці завдання, а не стрілку на діаграмі.

Діаграма без центральної стрілки пересилання може приховувати реєстраційний орган, службу виявлення та ретранслятор, які всі є операційними залежностями.

Прямий шлях, спільна площина керування

Дві машини, які напряму обмінюються пакетами, можуть досі залежати від спільного органу, що видав їхні сертифікати, і від служби, яка кожній сказала, де перебуває інша. Жодна з двох ролей не пересилає трафік програм, тому креслення топології їх пропускає. Коли цей орган або ця служба недоступні, наявні сеанси можуть тривати, а новий партнер не може приєднатися. Різниця між початком сеансу та його продовженням — це перше питання, яке слід поставити будь-якому проєкту.

Намалюйте кожне завдання окремо, навіть коли всі їх виконує один хост. Інакше креслення показує децентралізовану площину даних і приховує операційну реальність, що кожному новому партнеру потрібні ті самі дві служби.

Виявлення, довіра і ретранслятор — три завдання

Проєкт Nebula — корисний приклад, бо його документація тримає ці речі окремо. Хости носять сертифікати для ідентичності, маяки відповідають на питання де і допомагають із проходженням NAT, а ретранслятори пересилають трафік, коли прямий шлях не вдається встановити. Роль ретранслятора навмисно відокремлена від ролі маяка, тож доступний маяк не обіцяє, що певна пара може розмовляти. Інші продукти проводять межі в іншому місці, тому це приклад, а не шаблон.

Для запропонованого розгортання запишіть підтримуваний запасний шлях для пари, яка не може з’єднатися напряму. Невдале пробивання дірки — це одна точка даних про одну мережу, а не доказ, що два партнери за NAT ніколи не можуть зустрітися; протилежне твердження, що пряма зв’язність працює за будь-якої політики, так само необґрунтоване.

На чому падає кожна залежність

Оцініть чотири випадки окремо, поки тестована залежність недоступна: наявний трафік між партнерами, цілком нове партнерське з’єднання, партнер, чия кінцева точка змінилася, і доступ, який щойно відкликано. Кожен спирається на різні служби й падає по-різному. Наявні сеанси можуть пережити збій виявлення, поки відкликаний ключ усе ще відхиляється, а новий партнер може зазнати невдачі з причин, які не мають нічого спільного з пересиланням. Тестуйте їх окремо, замість того щоб робити висновки з одного.

З’єднання, яке переживає один збій, не встановлює необмеженої незалежності. Воно встановлює, що збій, який ви спричинили, не був тим, що розриває цей шлях, що все ще корисна інформація, за умови що ви записали, що спричинили.

Запитайте, який збій ви можете пережити

Вимоги, що звучать подібно, ведуть до різних проєктів. Уникати одного вузького місця пересилання — не те саме, що уникати площини керування, яку розміщує постачальник, і жодне з цього не відповідає продовженню роботи, поки координатор недоступний. Назвіть, яку з трьох вимог розгортання має задовольнити, а потім перевірте відповідність. Проєкт, який задовольняє першу і падає на другій, поширений і не є нечесним, доки ніхто не називає його цілком децентралізованим.

Запишіть, хто керує виявленням, довірою та ретрансляторами і як кожен із них замінюється. Цей запис дає змогу наступній людині відповісти на справжнє питання: які збої ця мережа переживає і хто підтримує стан, що залишається спільним?

Слово децентралізований заслуговує на своє місце, коли називає ці збої. Без цього списку воно описує діаграму, а не систему.

Схожі статті