Peer-to-peer описва как пътуват пакетите на приложенията, и нищо повече. Партньорите все още трябваше да се намерят един друг, да докажат кои са и понякога да прибягнат до релей, когато директен път не можеше да бъде изграден. Това са три отделни услуги и едно внедряване може да бъде peer-to-peer за данните, докато е напълно централизирано за всичко останало. Сравняването на дизайни означава сравняване на тези задачи, а не стрелката на диаграмата.

Диаграма без централна стрелка за препращане може да скрие регистрационен орган, услуга за откриване и релей, които всички са оперативни зависимости.

Директен път, споделена контролна равнина

Две машини, които си разменят пакети директно, може все още да зависят от общ орган, издал сертификатите им, и от услуга, която е казала на всяка къде се намира другата. Нито една от двете роли не препраща трафик на приложения, затова чертежът на топологията ги пропуска. Когато този орган или тази услуга е недостъпна, съществуващите сесии може да продължат, докато нов партньор не може да се присъедини. Разликата между започването на сесия и продължаването ѝ е първият въпрос, който трябва да се зададе на всеки дизайн.

Начертайте всяка задача отделно, дори когато един хост изпълнява всички. Иначе чертежът показва децентрализирана равнина на данните и крие оперативната реалност, че всеки нов партньор се нуждае от същите две услуги.

Откриване, доверие и релей са три задачи

Дизайнът на Nebula е полезен пример, защото документацията му ги държи отделно. Хостовете носят сертификати за идентичност, маяците отговарят на въпроса къде и помагат при преминаване през NAT, а релеите препращат трафик, когато не може да се установи директен път. Ролята на релея е умишлено отделна от ролята на маяка, така че достижим маяк не обещава, че дадена двойка може да говори. Други продукти чертаят границите другаде, затова това е пример, а не шаблон.

За предлагано внедряване запишете поддържания резервен път за двойка, която не може да се свърже директно. Неуспешното пробиване на дупка е една точка от данни за една мрежа, а не доказателство, че двама партньори зад NAT никога не могат да се срещнат; обратното твърдение, че директната свързаност работи при всякаква политика, е също толкова необосновано.

Къде се проваля всяка зависимост

Оценете четири случая поотделно, докато тестваната зависимост е недостъпна: съществуващ трафик между партньори, напълно нова партньорска връзка, партньор, чиято крайна точка се е променила, и достъп, който току-що е отнет. Всеки разчита на различни услуги и се проваля по различен начин. Съществуващите сесии може да преживеят прекъсване на откриването, докато отнет ключ все още се отхвърля, а нов партньор може да се провали по причини, които нямат нищо общо с препращането. Тествайте ги поотделно, вместо да заключавате от един.

Връзка, която преживява едно прекъсване, не установява неограничена независимост. Тя установява, че прекъсването, което сте причинили, не е било това, което прекъсва този път, което все още е полезна информация, при условие че сте записали какво сте причинили.

Питайте кое прекъсване можете да преживеете

Изисквания, които звучат подобно, водят до различни дизайни. Избягването на едно тясно място в препращането не е същото като избягването на контролна равнина, хоствана от доставчик, и нито едно от двете не отговаря на продължаване на работата, докато координатор е недостъпен. Назовете кое от тези три внедряването трябва да изпълни, след което проверете съответствието. Дизайн, който изпълнява първото и се проваля на второто, е често срещан и не е нечестен, стига никой да не го нарича напълно децентрализиран.

Запишете кой управлява откриването, доверието и релеите и как всеки от тях се заменя. Този запис е това, което позволява на следващия човек да отговори на истински въпрос: кои откази тази мрежа преживява и кой поддържа състоянието, което остава споделено?

Думата децентрализиран заслужава мястото си, когато назове тези откази. Без този списък тя описва диаграма, а не система.

Подобни статии