Паксос (англ. Paxos) — це набір протоколів, призначених для консенсусу в мережі ненадійних процесорів. Консенсус — процес отримання узгодженого результату групою учасників. Вирішити цю проблему складно, якщо в учасників або в засобах їх комунікації виникають помилки.
Протоколи рішення задачі консенсусу є базовим елементом у розподілених обчисленнях, що запропонував Леслі Лампорт і дослідив далі Ф. Шнайдер.
Протокол Паксос був вперше опублікований у 1989 році та був названий на честь вигаданої законодавчої системи, що застосовувалася на острові Паксос у Греції. Пізніше був опублікований в науковій літературі в 1998 році.
Сімейство протоколів Паксос включає спектр компромісів між кількістю процесорів, кількістю затримок повідомлень, рівня активності окремих учасників та кількістю відправлених повідомлень. Результат відмовостійкого узгодження не визначений, однак умови, при яких консенсус неможливий, дуже рідкісні.
Паксос зазвичай використовується, для копіювання файлу чи бази даних. Протокол намагається досягти прогресу навіть у періоди, коли деяка обмежена кількість вузлів не відповідає. Існує також механізм видалення або додавання нового вузла.
Історія
У 1988 р. Лінч, Дрюк і Стокмейер продемонстрували розв'язність консенсусу в широкому сімействі «частково синхронних» систем. Паксос має сильну схожість з протоколом, який використовується для узгодження у «прогляді реплікації». Паксос запропонував особливо елегантний формалізм і включив одне з найбільш ранніх доказів безпеки для відмовостійкого протоколу розподіленого консенсусу.
Реконфігуровані машини мають міцні зв'язки з попередньою роботою над протоколами багатоадресної групи, які підтримують членство динамічної групи, наприклад роботи Бірмана 1985 та 1987 року практичного синхронного gbcast протоколу.
Протоколи Паксос є членами теоретичного класу рішень проблем, формалізованих як єдине узгодження з відмовами. Нижні межі цієї проблеми були доведені Кейдаром та Шраером. Derecho — це бібліотека програмного забезпечення для реплікації хмарних машин, що пропонує протокол Паксос, який інтегрований у систему. Цей протокол відповідає межам оптимальності Кейдара та Шраера і ефективно відображає сучасне обладнання віддаленого DMA (RDMA) центру обробки даних (але використовує TCP, якщо RDMA недоступний).
Припущення
Наступні припущення та визначення робляться явними. Методи розширення застосування не висвітлюються в цій статті.
Процесори
- Процесори працюють з довільною швидкістю.
- У процесорів можуть виникнути збої.
- Процесори можуть повторно приєднатися до протоколу після збоїв.
- Процесори не змовляються, не брешуть чи іншим чином намагаються підірвати протокол, тобто, візантійські невдачі не відбуваються.
Мережа
- Процесори можуть надсилати повідомлення на будь-який інший процесор.
- Повідомлення надсилаються асинхронно та можуть доставляти довільну кількість часу.
- Повідомлення можуть бути втрачені, переупорядковані або продубльовані.
- Повідомлення доставляються без корупції, тобто, візантійські невдачі не відбуваються.
Кількість процесорів
Загалом алгоритм узгодження може досягти прогресу, за умови використання процесорів, незважаючи на одночасний вихід з ладу будь-яких процесорів: іншими словами, кількість справних процесів повинна бути строго більшою, ніж кількість несправних процесів. Однак, використовуючи реконфігурацію, може бути використаний протокол, який переживає будь-яку загальну кількість збоїв до тих пір, поки їх не більше ніж F одночасно.
Ролі
Паксос описує дії процесорів за їх ролями в протоколі: клієнт, приймач, заявник, учень та провідник. У типових втіленнях один процесор може грати одну або більше ролей одночасно. Це не впливає на правильність протоколу — зазвичай поєднуються ролі, для поліпшення затримок та/або кількості повідомлень у протоколі.
- Клієнт
- Клієнт надсилає запит до розподіленої системи та чекає відповіді . Наприклад, запит на запис у файл на розподіленому файловому сервері.
- Приймач (виборців)
- Приймачі виконують функцію відмовостійкої «пам'яті» протоколу. Приймачі збирають в групи, які називаються кворумами. Будь-яке повідомлення, надіслане Приймачу, має бути надіслане в кворум приймачів. Будь-яке повідомлення, отримане від Приймача, ігнорується, якщо копія не отримана від кожного Приймача в кворумі.
- Заявник
- Заявник просуває запит клієнта, намагаючись переконати Приймачів погодитися з ним. Виконує функцію координатора для зрушення протоколу вперед, коли виникають конфлікти.
- Учень
- Учні виступають чинником реплікації протоколу. Після того, як Приймачі погодили запит Клієнта, Учень може вжити потрібні заходи (тобто: виконати запит та надіслати відповідь клієнту). Для покращення доступності обробки, можна додати додаткових учнів.
- Провідник
- Паксос вимагає від зазначеного Заявника (його називають провідником), досягнення прогресу. Багато процесів можуть вважати, що вони ведуть, але протокол гарантує прогрес лише в тому випадку, якщо в кінцевому підсумку обраний один з них. Якщо два процеси вважають, що вони провідники, вони можуть зупиняти протокол, постійно пропонуючи суперечливі оновлення.
Кворуми
Кворуми представляють властивості безпеки алгоритму, забезпечуючи збереження інформації про результати у хоч б одного уцілілого процесора.
Кворуми визначаються як підмножини множини Приймачів таким чином, щоб будь-які дві підмножини (тобто будь-які два кворуму) мали принаймні один спільний елемент. Як правило, кворум є будь-якою більшістю Приймачів, що беруть участь. Наприклад, розглянемо множину Приймачів {А, B, С, D}, кворум більшості складатиметься з будь-яких трьох Приймачів: {А, B, С}, {А, С, D}, {А, В, D} або {B, C, D}. Загальніше, Приймачам і кворуму можуть бути призначені довільні позитивні ваги, які визначають як будь-яка підмножина Приймачів з сумарною вагою перевищує половину загальної ваги усіх Приймачів.
Номер пропозиції та узгоджена вартість
Кожна спроба визначити узгоджене значення v, виконується із пропозиціями, які можуть або не можуть бути прийняті Приймачем. Кожна пропозиція має унікальну нумерацію для даного Заявника. Отже, наприклад, кожна пропозиція може мати вигляд (n, v), де n це унікальний ідентифікатор пропозиції, а v це власне запропоноване значення. Значення, відповідне нумерованій пропозиції, може бути обчислено як частина запуску протоколу Paxos, але це не обов'язково.
Властивості безпеки та живості
Щоб гарантувати безпеку, алгоритм Паксос визначає три властивості та забезпечує постійне дотримання перших двох, незалежно від схеми відмов:
- Вагомість (або нетривіальність)
- Вибирати та вивчати можна лише запропоновані значення.
- Домовленість (або узгодженість чи безпека)
- Немає двох окремих учнів можуть засвоїти різні значення (або не може бути більше одного визначеного значення)
- Припинення (або живість)
- Якщо було запропоновано значення C, то зрештою, учень L дізнається про деяке значення (якщо залишилось достатньо уцілілих процесорів).
Зауважте, що Паксос не гарантує завершення і тому не має властивості живості.
Типове розгортання
У більшості випадків кожен процес, що бере участь виконує три ролі; Заявника, Приймача та Учня. Це значно знижує складність повідомлення, не жервуючи правильністю.
Об'єднуючи ролі, протокол «згортається» в ефективне розгортання стилю клієнт-майстер-репліка, характерне для спільноти баз даних. Перевага протоколів Паксос (включно з утіленням з об'єднаними ролями) це гарантія його властивостей безпеки.
Базовий Паксос
Це найбазовіший протокол із сім'ї Паксос. Кожен «примірник» базового протоколу Паксос визначає одне вихідне значення. Протокол триває декілька раундів. Вдалий раунд має 2 фази: фазу 1 (яка має дві частини a і b) і 2 фазу (яка теж має дві частини a і b). Дивіться нижче опис фаз. Пам'ятайте, що ми припускаємо асинхронну модель, тому, наприклад, процесор може перебувати в одній фазі, а інший процесор — в іншій.
Фаза 1
Фаза 1а: Підготовка
- Заявник створює повідомлення, яке ми називаємо «Підготовка» та ототожнює з числом n . Зауважте, що n — це не значення, а лише число, яке однозначно ідентифікує це початкове повідомлення, запропоноване заявником (яке повинно бути надіслане приймачем). Число n повинно бути більше, ніж будь-яке число, використовуване в будь-якому з попередніх фазах Підготовки повідомлення цього Заявника. Потім він надсилає повідомлення Підготовка, що містить n, до кворуму приймачів . Зауважте, що повідомлення цієї фази містить лише число n (тобто воно не повинно містити, наприклад, запропоноване значення, яке часто позначається v). Заявник вирішує, хто в кворумі [] ] . Заявник не повинен ініціювати Paxos, якщо він не може спілкуватися хоча б з кворумом приймачів.
Фаза 1b: Зобов'язання
- Будь-який з Приймачів чекає повідомлення з фази 1а від будь-якого із Заявника . Якщо Приймач отримує повідомлення, Приймач повинен переглянути ідентифікаційний номер n щойно отриманого повідомлення. Далі може бути такі випадки.
- Число n вище, ніж будь-який попередній номер пропозиції, отриманий Приймачем від будь-якого із Заявників. Тоді Приймач повинен повернути повідомлення, яке ми називаємо «Обіцянкою» та ігнорувати всі майбутні пропозиції, що мають число менше ніж n . Якщо Приймач прийняв пропозицію в якийсь момент минулого, він повинен включити попередній номер пропозиції, скажімо m, і відповідне прийняте значення, скажімо, w, у своїй відповіді на адресу Заявника.
- В іншому випадку (якщо n є меншим або рівним будь-якому попередньому номеру пропозиції, отриманому від будь-якого Заявника Приймачу), Приймач може ігнорувати отриману пропозицію.
Фаза 2
Фаза 2а: Погодження
- Якщо Заявник отримує більшість «обіцянь» від кворуму Приймачів, йому необхідно встановити значення v своїй пропозиції. Якщо будь-який Приймач раніше прийняв будь-яку пропозицію, то вони надішлють свої значення Заявнику, який тепер повинен встановити значення своєї пропозиції, v, на значення, пов'язане з найвищим числом пропозицій (назвемо його z), про яке повідомили Приймача. Якщо жоден з Приймачів не прийняв пропозицію до цього моменту, то Замовник може вибрати значення, яке він спочатку хотів запропонувати, скажімо x .
- Заявник надсилає повідомлення Accept ((n, v)) до кворуму приймачів із вибраним значенням для своєї пропозиції, v та номером пропозиції n. Отже, повідомлення Accept є або (n, v = z), або, якщо жоден з приймачів раніше не прийняв значення, (n, v = x) .
Фаза 2b: Прийняття
- Якщо Приймач отримує повідомлення про прийняття (n, v) від Заявника, він повинен прийняти його, тільки якщо він не обіцяв (у фазі 1b протоколу Paxos) розглянути лише пропозиції, що мають ідентифікатор, більший ніж n .
- Якщо Акцептор вже не пообіцяв (у Фазі 1b) розглядати лише пропозиції, що мають ідентифікатор, більший за n, він повинен зареєструвати значення v (щойно отриманого повідомлення Accept) як прийняте значення (протоколу) та надіслати Прийняте повідомлення Заявнику та кожному Учаснику (яким зазвичай можуть бути самі Заявники).
- Крім того, він може ігнорувати повідомлення Прийняття або запит.
Треба відмітити, що Приймач може брати кілька пропозицій. Це може статися, якщо інший Заявник, не знаючи про нове значення, розпочне новий раунд з більш високим ідентифікаційним номером n . У цьому випадку Приймач може пообіцяти і пізніше прийняти нове запропоноване значення, навіть якщо він прийняв інше раніше. Ці пропозиції можуть мати навіть різні значення за наявності певних невдач. Однак протокол Паксос гарантує, що Приймачі в кінцевому рахунку домовляться.
Коли раунди провалюються
- Раунди не вдається, коли кілька заявників надсилають суперечливі підготувальні повідомлення або коли Заявник не отримує кворум відповідей (Обіцяння або Прийняття). У цих випадках слід розпочати ще один раунд із більшим числом пропозицій.
Paxos можна використовувати для вибору лідера
- Зауважте, що Приймачі приймають запит та підтверджують лідерство Заявника. Отже, Паксос можна використовувати для вибору лідера в кластері вузлів.
Графічне зображення потоку повідомлень у базовому Паксосі
Наступні діаграми представляють випадки застосування протоколу базового Паксос. Деякі випадки показують, як протокол базового Паксос справляється з відмовою надлишкових компонентів розподіленої системи.
Зауважте, що значення, повернені у повідомленні Обіцяння, «стають нульовими» при першому внесенні пропозиції (оскільки жоден Приймач не прийняв значення до цього раунду).
Базовий Паксос без відмов
На наведеній нижче схемі є 1 Клієнт, 1 Заявник 3 Приймача (тобто розмір Кворуму — 3) та 2 Учні (представлені двома вертикальними лініями). Ця діаграма представляє випадок першого раунду, який є успішним (тобто жоден процес у мережі не завершується)
Client Proposer Acceptor Learner | | | | | | | X-------->| | | | | | Request | X--------->|->|->| | | Prepare(1) | |<---------X--X--X | | Promise(1,{Va,Vb,Vc}) | X--------->|->|->| | | Accept!(1,V) | |<---------X--X--X------>|->| Accepted(1,V) |<---------------------------------X--X Response | | | | | | |
Client Proposer Acceptor Learner| | | | | | | X-------->| | | | | | Request | X--------->|->|->| | | Prepare(1) | |<---------X--X--X | | Promise(1,{Va,Vb,Vc}) | X--------->|->|->| | | Accept!(1,V) | |<---------X--X--X------>|->| Accepted(1,V) |<---------------------------------X--X Response | | | | | | |
Тут V — останній із (Va, Vb, Vc).
Випадки помилок у базовому Паксос
Найпростіші випадки помилок — це вихід з ладу Приймача (коли кворум приймачів залишається живим) та відмова зайвого Учня. У цих випадках протокол не треба «відновлювати»: не потрібні додаткові раунди чи повідомлення, які показані у двох наступних діаграмах / випадках.
Базовий Паксос, коли Приймач виходить з ладу
На наступній схемі один з Приймачів відмовляється, тому розмір Кворуму стає 2. У цьому випадку протокол Базовий Паксос все ще є успішним.
Client Proposer Acceptor Learner | | | | | | | X-------->| | | | | | Request | X--------->|->|->| | | Prepare(1) | | | | ! | | !! FAIL !! | |<---------X--X | | Promise(1,{Va, Vb, null}) | X--------->|->| | | Accept!(1,V) | |<---------X--X--------->|->| Accepted(1,V) |<---------------------------------X--X Response | | | | | |
Базовий Паксос, коли Учень виходить з ладу
У наступному випадку один із учнів виходить з ладу, але протокол Базовий Паксос все-таки є успішним.
Client Proposer Acceptor Learner | | | | | | | X-------->| | | | | | Request | X--------->|->|->| | | Prepare(1) | |<---------X--X--X | | Promise(1,{Va,Vb,Vc}) | X--------->|->|->| | | Accept!(1,V) | |<---------X--X--X------>|->| Accepted(1,V) | | | | | | ! !! FAIL !! |<---------------------------------X Response | | | | | |
Базовий Паксос, коли Заявник виходить з ладу
У цьому випадку Заявник виходить з ладу після заявлених значень, але до досягнення згоди. Зокрема, воно не в середині повідомлення Accept, тому значення має лише один Приймач кворуму. Тим часом обирається новий Провідник. Зверніть увагу, що в цьому випадку є два раунди (раунди проходять вертикально, зверху вниз).
Client Proposer Acceptor Learner | | | | | | | X----->| | | | | | Request | X------------>|->|->| | | Prepare(1) | |<------------X--X--X | | Promise(1,{Va, Vb, Vc}) | | | | | | | | | | | | | | !! Leader fails during broadcast !! | X------------>| | | | | Accept!(1,V) | ! | | | | | | | | | | | | !! NEW LEADER !! | X--------->|->|->| | | Prepare(2) | |<---------X--X--X | | Promise(2,{V, null, null}) | X--------->|->|->| | | Accept!(2,V) | |<---------X--X--X------>|->| Accepted(2,V) |<---------------------------------X--X Response | | | | | | |
Базовий Паксос, коли конфліктують декілька пропозицій
Найскладніший випадок, коли кілька Заявників вважають себе лідерами. Наприклад, поточний лідер може на деякий час вийти з ладу та пізніше відновитись, але інші Заявники вже обрали нового лідера. При цьому прийнятий лідер цього ще не дізнався і намагається розпочати новий раунд у конфлікті з нинішнім лідером. На діаграмі нижче показано 4 невдалих раунди, але їх може бути більше (як це запропоновано внизу діаграми).
Client Leader Acceptor Learner | | | | | | | X----->| | | | | | Request | X------------>|->|->| | | Prepare(1) | |<------------X--X--X | | Promise(1,{null,null,null}) | ! | | | | | !! LEADER FAILS | | | | | | | !! NEW LEADER (knows last number was 1) | X--------->|->|->| | | Prepare(2) | |<---------X--X--X | | Promise(2,{null,null,null}) | | | | | | | | !! OLD LEADER recovers | | | | | | | | !! OLD LEADER tries 2, denied | X------------>|->|->| | | Prepare(2) | |<------------X--X--X | | Nack(2) | | | | | | | | !! OLD LEADER tries 3 | X------------>|->|->| | | Prepare(3) | |<------------X--X--X | | Promise(3,{null,null,null}) | | | | | | | | !! NEW LEADER proposes, denied | | X--------->|->|->| | | Accept!(2,Va) | | |<---------X--X--X | | Nack(3) | | | | | | | | !! NEW LEADER tries 4 | | X--------->|->|->| | | Prepare(4) | | |<---------X--X--X | | Promise(4,{null,null,null}) | | | | | | | | !! OLD LEADER proposes, denied | X------------>|->|->| | | Accept!(3,Vb) | |<------------X--X--X | | Nack(4) | | | | | | | | ... and so on ...
Мульти-Паксос
Типове розгортання Паксос вимагає безперервного потоку узгоджених значень, що діють як команди для розподіленої машини. Якщо кожна команда є результатом одного екземпляра протоколу Базовий Паксос, вийде значна кількість накладних витрат.
Якщо лідер стабільний, фаза 1 стає непотрібною. Таким чином, можна пропустити фазу 1 для майбутніх екземплярів протоколу з тим же лідером.
Для цього кругле число I включається разом із кожним значенням, яке збільшується в кожному раунді одним і тим же Провідником. Мульти-Паксос зменшує затримку безвідмовного повідомлення (пропозицію до навчання) з 4 затримок до 2 затримок.
Графічне зображення потоку повідомлень в Базовий Паксос
Мульти-Паксос без відмов
На наступній діаграмі показаний лише один екземпляр базового протоколу Паксос з початковим лідером. Зауважте, що Мульти-Паксос складається з декількох примірників базового протоколу Паксос.
Client Proposer Acceptor Learner | | | | | | | --- First Request --- X-------->| | | | | | Request | X--------->|->|->| | | Prepare(N) | |<---------X--X--X | | Promise(N,I,{Va,Vb,Vc}) | X--------->|->|->| | | Accept!(N,I,V) | |<---------X--X--X------>|->| Accepted(N,I,V) |<---------------------------------X--X Response | | | | | | |
де V = останній з (Va, Vb, Vc).
Мульти-Паксос, коли фаза 1 може бути пропущена
У цьому випадку екземпляри послідовності базового протоколу Паксос використовують того ж самого лідера, тому фаза 1, яка складається з більш коротших фаз Підготувати та Обіцяти, пропускається. Зауважте, що лідер повинен бути стабільним, тобто не повинен виходити з ладу або змінюватися.
Client Proposer Acceptor Learner | | | | | | | --- Following Requests --- X-------->| | | | | | Request | X--------->|->|->| | | Accept!(N,I+1,W) | |<---------X--X--X------>|->| Accepted(N,I+1,W) |<---------------------------------X--X Response | | | | | | |
Мульти-Паксос, коли ролі згортаються
Поширене розгортання Мульти-Паксос полягає у згортанні ролі Заявників, Приймачів та Учнів на «Сервери». Отже, зрештою, є лише «Клієнти» та «Сервери».
Наведена нижче схема представляє перший "екземпляр" базового протоколу Паксос, коли ролі Заявника, Приймача та Учня згортаються в роль "Сервер".
Client Servers | | | | --- First Request --- X-------->| | | Request | X->|->| Prepare(N) | |<-X--X Promise(N, I, {Va, Vb}) | X->|->| Accept!(N, I, Vn) | X<>X<>X Accepted(N, I) |<--------X | | Response | | | |
Мульти-Паксос, коли ролі згортаються, а лідер стійкий
У наступних випадках базового протоколу Паксос з тим самим лідером, що і в попередніх екземплярах базового протоколу Паксос, фаза 1 може бути пропущена.
Client Servers X-------->| | | Request | X->|->| Accept!(N,I+1,W) | X<>X<>X Accepted(N,I+1) |<--------X | | Response | | | |
Оптимізація
Для зменшення кількості повідомлень та покращення продуктивності протоколу можна здійснити ряд оптимізацій. Нижче наведено декілька таких оптимізацій.
Дешевий Паксос
Дешевий Паксос розширює Базовий Паксос, щоб переносити збої F з основними процесорами F + 1 та F допоміжними процесорами шляхом динамічної корекції після кожного збою.
Це зниження потреби в процесорі відбувається за рахунок життєздатності; якщо занадто багато основних процесорів виходять з ладу за короткий час, система повинна зупинитися, поки допоміжні процесори не зможуть переконфігурувати систему. У стабільні періоди допоміжні процесори не беруть участі в протоколі.
Потік повідомлень: Дешевий Мульти-Паксос
Приклад, що включає три основних приймача, один допоміжний приймач і розмір кворуму в три, показує вихід з ладу одного основного процесора та наступну конфігурацію:
{ Acceptors } Proposer Main Aux Learner | | | | | | -- Phase 2 -- X----------->|->|->| | | Accept!(N,I,V) | | | ! | | --- FAIL! --- |<-----------X--X--------------->| Accepted(N,I,V) | | | | | -- Failure detected (only 2 accepted) -- X----------->|->|------->| | Accept!(N,I,V) (re-transmit, include Aux) |<-----------X--X--------X------>| Accepted(N,I,V) | | | | | -- Reconfigure : Quorum = 2 -- X----------->|->| | | Accept!(N,I+1,W) (Aux not participating) |<-----------X--X--------------->| Accepted(N,I+1,W) | | | | |
Швидкий Паксос
Швидкий узагальнює базовий Паксос, щоб зменшити затримки повідомлення в кінці. У базовому Паксос, затримка повідомлення від запита клієнта до навчання становить 3 затримки за повідомлення. Швидкий Paxos дозволяє затримати 2 повідомлення, але вимагає, щоб (1) система складалася з 3 приймачів + 1 +, щоб допустити до f помилок, і (2) Клієнт надсилає свій запит у кілька напрямків .
Очевидно, якщо керівник не має жодної підстави на запит, то клієнт може надіслати повідомлення безпосередньо Приймачам. Приймачі відповідатимуть як у базових Паксос, надсилаючи Прийняті повідомлення керівнику та кожному Учневі, досягаючи двох затримок повідомлень від Клієнта до Учня.
Якщо лідер виявить збій, то він вирішує його, відправивши повідомлення на новий раунд. Ця координована методика відновлення вимагає чотирьох затримок повідомлень від клієнта до учня.
Остаточна оптимізація відбувається, коли лідер заздалегідь вказує техніку відновлення, дозволяючи Приймачам самостійно виконувати відновлення зіткнення. Таким чином, неузгоджене відновлення зіткнення може відбутися за три затримки повідомлення (і лише дві затримки повідомлення, якщо всі Учні також приймачі).
Потік повідомлень: Швидкий Паксос, безконфліктний
Client Leader Acceptor Learner | | | | | | | | | X--------->|->|->|->| | | Any(N,I,Recovery) | | | | | | | | X------------------->|->|->|->| | | Accept!(N,I,W) | |<---------X--X--X--X------>|->| Accepted(N,I,W) |<------------------------------------X--X Response(W) | | | | | | | |
Потік повідомлень: Швидкий Паксос, суперечливі пропозиції
Конфлікт пропозицій з координованим відновленням. Примітка: протокол не вказує, як обробляти скинутий запит клієнта.
Client Leader Acceptor Learner | | | | | | | | | | | | | | | | | | | | | | | | | | | !! Concurrent conflicting proposals | | | | | | | | | !! received in different order | | | | | | | | | !! by the Acceptors | X--------------?|-?|-?|-?| | | Accept!(N,I,V) X-----------------?|-?|-?|-?| | | Accept!(N,I,W) | | | | | | | | | | | | | | | | | | !! Acceptors disagree on value | | |<-------X--X->|->|----->|->| Accepted(N,I,V) | | |<-------|<-|<-X--X----->|->| Accepted(N,I,W) | | | | | | | | | | | | | | | | | | !! Detect collision & recover | | X------->|->|->|->| | | Accept!(N+1,I,W) | | |<-------X--X--X--X----->|->| Accepted(N+1,I,W) |<---------------------------------X--X Response(W) | | | | | | | | |
Суперечність пропозицій з неузгодженим відновленням.
Client Leader Acceptor Learner| | | | | | | | | | | X------->|->|->|->| | | Any(N,I,Recovery) | | | | | | | | | | | | | | | | | | !! Concurrent conflicting proposals | | | | | | | | | !! received in different order | | | | | | | | | !! by the Acceptors | X--------------?|-?|-?|-?| | | Accept!(N,I,V) X-----------------?|-?|-?|-?| | | Accept!(N,I,W) | | | | | | | | | | | | | | | | | | !! Acceptors disagree on value | | |<-------X--X->|->|----->|->| Accepted(N,I,V) | | |<-------|<-|<-X--X----->|->| Accepted(N,I,W) | | | | | | | | | | | | | | | | | | !! Detect collision & recover | | |<-------X--X--X--X----->|->| Accepted(N+1,I,W) |<---------------------------------X--X Response(W) | | | | | | | | |
Потік повідомлень: Швидкий Паксос з некоординованим відновленням, згорнуті ролі
Client Servers | | | | | | | | X->|->|->| Any(N,I,Recovery) | | | | | | | | | | | | !! Concurrent conflicting proposals | | | | | | !! received in different order | | | | | | !! by the Servers | X--------?|-?|-?|-?| Accept!(N,I,V) X-----------?|-?|-?|-?| Accept!(N,I,W) | | | | | | | | | | | | !! Servers disagree on value | | X<>X->|->| Accepted(N,I,V) | | |<-|<-X<>X Accepted(N,I,W) | | | | | | | | | | | | !! Detect collision & recover | | X<>X<>X<>X Accepted(N+1,I,W) |<-----------X--X--X--X Response(W) | | | | | |
Узагальнений Паксос
Узагальнений консенсус досліджує взаємозв'язок операцій реплікованої машини та протоколу узгодження, який його реалізує . Основне відкриття передбачає оптимізацію Паксос, коли суперечливі пропозиції можуть бути застосовані в будь-якому порядку, тобто коли запропоновані операції є комутаційними операціями для машини. У таких випадках конфліктуючі операції можуть бути прийняті як уникнення затримок, необхідних для вирішення конфліктів.
Ця концепція додатково узагальнена у постійно зростаючій послідовності комутативних операцій, деякі з яких є стабільними. Протокол відстежує ці послідовності та гарантує стабілізацію запропонованих операцій однієї послідовності.
Потік повідомлень: Узагальнений Паксос (приклад)
Client Leader Acceptor Learner | | | | | | | | !! New Leader Begins Round | | X----->|->|->| | | Prepare(N) | | |<-----X- X- X | | Promise(N,null) | | X----->|->|->| | | Phase2Start(N,null) | | | | | | | | | | | | | | | | !! Concurrent commuting proposals | X------- ?|-----?|-?|-?| | | Propose(ReadA) X-----------?|-----?|-?|-?| | | Propose(ReadB) | | X------X-------------->|->| Accepted(N,<ReadA,ReadB>) | | |<--------X--X-------->|->| Accepted(N,<ReadB,ReadA>) | | | | | | | | | | | | | | | | !! No Conflict, both accepted | | | | | | | | Stable = <ReadA, ReadB> | | | | | | | | | | | | | | | | !! Concurrent conflicting proposals X-----------?|-----?|-?|-?| | | Propose(<WriteB,ReadA>) | X--------?|-----?|-?|-?| | | Propose(ReadB) | | | | | | | | | | X------X-------------->|->| Accepted(N,<WriteB,ReadA> . <ReadB>) | | |<--------X--X-------->|->| Accepted(N,<ReadB> . <WriteB,ReadA>) | | | | | | | | | | | | | | | | !! Conflict detected, leader chooses | | | | | | | | commutative order: | | | | | | | | V = <ReadA, WriteB, ReadB> | | | | | | | | | | X----->|->|->| | | Phase2Start(N+1,V) | | |<-----X- X- X-------->|->| Accepted(N+1,V) | | | | | | | | Stable = <ReadA, ReadB> . | | | | | | | | <ReadA, WriteB, ReadB> | | | | | | | | | | | | | | | | !! More conflicting proposals X-----------?|-----?|-?|-?| | | Propose(WriteA) | X--------?|-----?|-?|-?| | | Propose(ReadA) | | | | | | | | | | X------X-------------->|->| Accepted(N+1,<WriteA> . <ReadA>) | | |<--------X- X-------->|->| Accepted(N+1,<ReadA> . <WriteA>) | | | | | | | | | | | | | | | | !! Leader chooses order: | | | | | | | | W = <WriteA, ReadA> | | | | | | | | | | X----->|->|->| | | Phase2Start(N+2,W) | | |<-----X- X- X-------->|->| Accepted(N+2,W) | | | | | | | | Stable = <ReadA, ReadB> . | | | | | | | | <ReadA, WriteB, ReadB> . | | | | | | | | <WriteA, ReadA> | | | | | | | |
Продуктивність
Вищенаведений потік повідомляє нам, що узагальнений Паксос може використовувати семантику операцій, для уникнення зіткнень, та коли мимовільне впорядкування мережі не вдається. Це дозволяє зробити протокол на практиці швидше, ніж Швидкий Паксос. Однак, коли трапляється зіткнення, узагальненому Паксос потрібні дві додаткові поїздки в обидва кінці, щоб відновитися.
У загальному випадку такі тури неминучі і випливають з того, що під час раунду можна прийняти кілька команд. Це робить протокол дорожчим, ніж Паксос, коли конфлікти часті. Сподіваємось, можливі два вдосконалення узагальненого Паксос для покращення часу відновлення.
- По-перше, якщо координатор є частиною кожного кворуму Приймачів, то він відновлюється в раунді N + 1 при зіткнення на раунді N. Координатор пропускає фазу 1 і пропонує на фазі 2 останню послідовність, яку він прийняв під час раунду N. Це зменшує витрати на відновлення одної поїздки в обидва кінці.
- По-друге, якщо обидва раунди N і N + 1 використовують унікальний і однаковий центрований кворум, коли Приймач виявляє зіткнення в N раунді. Він спонтанно пропонує в раунді N + 1 послідовність, що суфіксує обидві послідовності (і), прийняту в раунді N координатором та (ii) найбільший безконфліктний префікс, який він прийняв у раунді N. За такої зміни вартість відновлення — це затримка одного повідомлення, яка, очевидно, є оптимальною. Це випливає з того, що будь-який процес у цьому кворумі є кворумом читання для фази підготовки наступних раундів.
Візантійський Паксос
Паксос також може бути поширений на підтримку довільних відмов учасників, включаючи брехню, вигадку повідомлень, змову з іншими учасниками, вибіркове неучасть тощо. Такі типи невдач називаються задачами візантійських генералів.
Задача візантійських генералів представлена Кастро та Ліськовим, додає додаткове повідомлення (Перевірити), яка поширує знання та перевіряє дій інших процесорів:
Потік повідомлень: Задача візантійських генералів Мульти-Паксос, стаціонарний стан
Client Proposer Acceptor Learner | | | | | | | X-------->| | | | | | Request | X--------->|->|->| | | Accept!(N,I,V) | | X<>X<>X | | Verify(N,I,V) - BROADCAST | |<---------X--X--X------>|->| Accepted(N,V) |<---------------------------------X--X Response(V) | | | | | | |
Швидкий візантійський Паксос представлений Мартіном та Алвісі, усуває цю додаткову затримку, оскільки клієнт відправляє команди безпосередньо Приймачам.
Зверніть увагу, що Прийняте повідомлення у швидких візантійських Паксос надсилається всім Приймачам та всім Учням, тоді як Швидкий Паксос надсилає Прийняті повідомлення лише Учням):
Потік повідомлень: Швидкий візантійський Мульти-Паксон, стаціонарний стан
Client Acceptor Learner | | | | | | X----->|->|->| | | Accept!(N,I,V) | X<>X<>X------>|->| Accepted(N,I,V) - BROADCAST |<-------------------X--X Response(V) | | | | | |
Сценарій відмови однаковий для обох протоколів. Кожен Учень чекає отримання F + 1 однакових повідомлень від різних Приймачів. Якщо цього не відбудеться, самі Приймачі також будуть про це знати, і правильні Приймачі повторно транслюватимуть узгоджене значення:
Потік повідомлень: Швидкий візантійський Мульти-Паксон, невдача
Client Acceptor Learner | | | ! | | !! One Acceptor is faulty X----->|->|->! | | Accept!(N,I,V) | X<>X<>X------>|->| Accepted(N,I,{V,W}) - BROADCAST | | | ! | | !! Learners receive 2 different commands | | | ! | | !! Correct Acceptors notice error and choose | X<>X<>X------>|->| Accepted(N,I,V) - BROADCAST |<-------------------X--X Response(V) | | | ! | |
Адаптація Паксос до мереж RDMA
З появою дуже швидких надійних мереж центрів обробки даних, які підтримують віддалений DMA (RDMA), виникла значна зацікавленість в оптимізації Паксос для використання апаратного розвантаження, в якому мережева карта інтерфейсу та мережеві маршрутизатори забезпечують надійність та контроль перевантаженості мережевого рівня, звільняючи хост-процесор для інших завдань. Бібліотека Derecho C ++ Paxos [ 14 січня 2022 у Wayback Machine.] — це реалізація Паксос з відкритим кодом, яка досліджує цей варіант .
Derecho пропонує як класичний Paxos, що має довговічність даних у послідовності повного відключення / перезавантаження, так і вертикальний Paxos (атомний передавач) для реплікації в пам'яті та синхронізації стану та машини. Протоколи Paxos, застосовані Derecho, потребували адаптації для максимізації асинхронного потоку даних та усунення інших джерел затримки на критичному шляху лідера. Таким чином, це дозволяє Derecho підтримувати повну двонаправлену швидкість передачі даних RDMA. На відміну від цього, хоча традиційні протоколи Paxos можуть бути переміщені до мережі RDMA шляхом простого відображення операцій надсилання повідомлень у нативній операції RDMA, але це залишає затримки в зворотному напрямку на критичному шляху. У високошвидкісних мережах RDMA навіть невеликі затримки можуть бути досить великими, щоб запобігти використанню повної потенційної пропускної здатності.
Використання Паксос
- Google використовує алгоритм Паксос у своїй службі розподіленого блокування Chubby, щоб підтримувати послідовність реплік у разі відмови. Chubby використовується Bigtable, який зараз випускається в Google Analytics та інших продуктах.
- Google Spanner та Megastore використовують алгоритм Паксос.
- Служба реплікації OpenReplica [ 9 серпня 2018 у Wayback Machine.] використовує Паксос для підтримання копій для системи відкритого доступу, яка дозволяє користувачам створювати об'єкти, стійкі до відмов. Це забезпечує високу ефективність за рахунок одночасних раундів та гнучкість завдяки динамічним змінам членства.
- IBM нібито використовує алгоритм Паксос в своєму продукті IBM SAN Volume Controller для реалізації віртуальної машини загального призначення, стійкої до відмов, що використовується для запуску конфігураційних та керуючих компонентів служб віртуалізації зберігання, пропонованих кластером. (Оригінальний дослідницький документ MIT & IBM [ 21 травня 2020 у Wayback Machine.])
- Microsoft використовує Paxos в службі керування кластерами автопілотів [ 7 травня 2016 у Wayback Machine.] від компанії Bing та в кластеризації відключення Windows Server.
- WANdisco впровадив Paxos в рамках своєї технології активної реплікації DConE.
- XtreemFS використовує алгоритм узгодження оренди на основі Paxos для стійкої до відмов та послідовної реплікації файлових даних та метаданих.
- Heroku використовує Doozerd, [ 16 жовтня 2019 у Wayback Machine.] який реалізує Paxos для послідовного розподіленого сховища даних.
- Ceph використовує Paxos як частину процесів монітора, щоб узгодити, які екранні екрани знаходяться в кластері.
- Розподілена база даних Slustrix Clustrix використовує Paxos для розподіленої роздільної здатності транзакцій [ 6 грудня 2019 у Wayback Machine.] .
- База даних графіків HA Neo4j реалізує Paxos, замінюючи Apache ZooKeeper з версії 1.9
- База даних Apache Cassandra NoSQL використовує лише Paxos для функції легкої ваги [ 20 квітня 2019 у Wayback Machine.]
- Amazon Elastic Container Services використовує Paxos для підтримки послідовного перегляду стану кластерів [ 4 червня 2020 у Wayback Machine.]
Примітки
- Pease, Marshall; Shostak, Robert; Lamport, Leslie (April 1980). «Reaching Agreement in the Presence of Faults» [ 16 серпня 2007 у Wayback Machine.]. . 27 (2). Retrieved 2007-02-02.
- Lamport, Leslie (July 1978). «Time, Clocks and the Ordering of Events in a Distributed System» [ 16 серпня 2007 у Wayback Machine.]. Communications of the ACM. 21 (7): 558—565. doi:10.1145/359545.359563. Retrieved 2007-02-02.
- . Архів оригіналу за 5 серпня 2011. Процитовано 21 листопада 2019.
- Lamport, Leslie (May 1998). «The Part-Time Parliament» [ 16 серпня 2007 у Wayback Machine.]. ACM Transactions on Computer Systems. 16 (2): 133—169. doi:10.1145/279227.279229. Retrieved 2007-02-02.
- Dwork, Cynthia; Lynch, Nancy; Stockmeyer, Larry (April 1988). «Consensus in the Presence of Partial Synchrony» [ 18 червня 2019 у Wayback Machine.] (PDF). Journal of the ACM. 35 (2): 288—323. CiteSeerX 10.1.1.13.3423. doi:10.1145/42282.42283.
- Oki, Brian; Liskov, Barbara (1988). «Viewstamped Replication: A New Primary Copy Method to Support Highly-Available Distributed Systems». PODC '88: Proceedings of the seventh annual . pp. 8–17. doi:10.1145/62546.62549.
- Birman, Kenneth; Joseph, Thomas (February 1987). «Reliable Communication in the Presence of Failures». ACM Transactions on Computer Systems: 47–76.
- Chandra, Tushar; Griesemer, Robert; Redstone, Joshua (2007). Paxos Made Live — An Engineering Perspective [ 21 липня 2016 у Wayback Machine.]. PODC '07: 26th ACM Symposium on Principles of Distributed Computing. pp. 398–407. doi:10.1145/1281100.1281103.
- Lamport, Leslie (2001). Paxos Made Simple [ 5 серпня 2011 у Wayback Machine.] ACM SIGACT News (Distributed Computing Column) 32, 4 (Whole Number 121, December 2001) 51-58.
- Lamport, Leslie (2005). «Generalized Consensus and Paxos» [ 16 серпня 2007 у Wayback Machine.]. Cite journal requires
|journal=
() - Pierre, Sutra; Marc, Shapiro (2011). «Fast Genuine Generalized Consensus» [ 12 грудня 2014 у Wayback Machine.] (PDF). SRDS'11: 30th IEEE Symposium on Reliable Distributed Systems.
- Lamport, Leslie; Malkhi, Dahlia; Zhou, Lidong (2009). Vertical Paxos and Primary-backup Replication. PODC '09. New York, NY, USA: ACM. с. 312—313. doi:10.1145/1582716.1582783. ISBN .
{{}}
: Проігноровано|journal=
() - Lamport, Leslie; Shostak, Robert; Pease, Marshall (July 1982). «The Byzantine Generals Problem» [ 16 серпня 2007 у Wayback Machine.]. ACM Transactions on Programming Languages and Systems. 4 (3): 382—401. CiteSeerX 10.1.1.64.2312. doi:10.1145/357172.357176. Retrieved 2007-02-02.
- Castro, Miguel; Liskov, Barbara (February 1999). (PDF). Proceedings of the Third Symposium on Operating Systems Design and Implementation: 173—186. Архів оригіналу (PDF) за 4 березня 2018. Процитовано 5 березня 2018.
- Martin, Jean-Philippe; Alvisi, Lorenzo (July 2006). (PDF). IEEE Transactions on Dependable and Secure Computing. 3 (3): 202—215. doi:10.1109/TDSC.2006.35. Архів оригіналу (PDF) за 18 січня 2021. Процитовано 5 березня 2018.
- Jha, Sagar; Behrens, Jonathan; Gkountouvas, Theo; Milano, Matthew; Song, Weijia; Tremel, Edward; van Renesse, Robbert; Zink, Sydney; Birman, Ken (April 2019). «Derecho: Fast State Machine Replication for Cloud Services». . 36 (2). doi:10.1145/3302258.
- Aahlad et al.(2011). «The Distributed Coordination Engine (DConE)» [ 15 квітня 2016 у Wayback Machine.]. WANdisco white paper.
- Kolbeck, Björn; Högqvist, Mikael; Stender, Jan; Hupfeld, Felix (2011). «Flease — Lease Coordination without a Lock Server» [ 5 вересня 2021 у Wayback Machine.]. 25th IEEE International Parallel & Distributed Processing Symposium (IPDPS 2011).
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Paksos angl Paxos ce nabir protokoliv priznachenih dlya konsensusu v merezhi nenadijnih procesoriv Konsensus proces otrimannya uzgodzhenogo rezultatu grupoyu uchasnikiv Virishiti cyu problemu skladno yaksho v uchasnikiv abo v zasobah yih komunikaciyi vinikayut pomilki Protokoli rishennya zadachi konsensusu ye bazovim elementom u rozpodilenih obchislennyah sho zaproponuvav Lesli Lamport i doslidiv dali F Shnajder Protokol Paksos buv vpershe opublikovanij u 1989 roci ta buv nazvanij na chest vigadanoyi zakonodavchoyi sistemi sho zastosovuvalasya na ostrovi Paksos u Greciyi Piznishe buv opublikovanij v naukovij literaturi v 1998 roci Simejstvo protokoliv Paksos vklyuchaye spektr kompromisiv mizh kilkistyu procesoriv kilkistyu zatrimok povidomlen rivnya aktivnosti okremih uchasnikiv ta kilkistyu vidpravlenih povidomlen Rezultat vidmovostijkogo uzgodzhennya ne viznachenij odnak umovi pri yakih konsensus nemozhlivij duzhe ridkisni Paksos zazvichaj vikoristovuyetsya dlya kopiyuvannya fajlu chi bazi danih Protokol namagayetsya dosyagti progresu navit u periodi koli deyaka obmezhena kilkist vuzliv ne vidpovidaye Isnuye takozh mehanizm vidalennya abo dodavannya novogo vuzla IstoriyaU 1988 r Linch Dryuk i Stokmejer prodemonstruvali rozv yaznist konsensusu v shirokomu simejstvi chastkovo sinhronnih sistem Paksos maye silnu shozhist z protokolom yakij vikoristovuyetsya dlya uzgodzhennya u proglyadi replikaciyi Paksos zaproponuvav osoblivo elegantnij formalizm i vklyuchiv odne z najbilsh rannih dokaziv bezpeki dlya vidmovostijkogo protokolu rozpodilenogo konsensusu Rekonfigurovani mashini mayut micni zv yazki z poperednoyu robotoyu nad protokolami bagatoadresnoyi grupi yaki pidtrimuyut chlenstvo dinamichnoyi grupi napriklad roboti Birmana 1985 ta 1987 roku praktichnogo sinhronnogo gbcast protokolu Protokoli Paksos ye chlenami teoretichnogo klasu rishen problem formalizovanih yak yedine uzgodzhennya z vidmovami Nizhni mezhi ciyeyi problemi buli dovedeni Kejdarom ta Shraerom Derecho ce biblioteka programnogo zabezpechennya C dlya replikaciyi hmarnih mashin sho proponuye protokol Paksos yakij integrovanij u sistemu Cej protokol vidpovidaye mezham optimalnosti Kejdara ta Shraera i efektivno vidobrazhaye suchasne obladnannya viddalenogo DMA RDMA centru obrobki danih ale vikoristovuye TCP yaksho RDMA nedostupnij PripushennyaNastupni pripushennya ta viznachennya roblyatsya yavnimi Metodi rozshirennya zastosuvannya ne visvitlyuyutsya v cij statti Procesori Procesori pracyuyut z dovilnoyu shvidkistyu U procesoriv mozhut viniknuti zboyi Procesori mozhut povtorno priyednatisya do protokolu pislya zboyiv Procesori ne zmovlyayutsya ne breshut chi inshim chinom namagayutsya pidirvati protokol tobto vizantijski nevdachi ne vidbuvayutsya Merezha Procesori mozhut nadsilati povidomlennya na bud yakij inshij procesor Povidomlennya nadsilayutsya asinhronno ta mozhut dostavlyati dovilnu kilkist chasu Povidomlennya mozhut buti vtracheni pereuporyadkovani abo produblovani Povidomlennya dostavlyayutsya bez korupciyi tobto vizantijski nevdachi ne vidbuvayutsya Kilkist procesoriv Zagalom algoritm uzgodzhennya mozhe dosyagti progresu za umovi vikoristannya n 2 F 1 displaystyle n 2F 1 procesoriv nezvazhayuchi na odnochasnij vihid z ladu bud yakih F displaystyle F procesoriv inshimi slovami kilkist spravnih procesiv povinna buti strogo bilshoyu nizh kilkist nespravnih procesiv Odnak vikoristovuyuchi rekonfiguraciyu mozhe buti vikoristanij protokol yakij perezhivaye bud yaku zagalnu kilkist zboyiv do tih pir poki yih ne bilshe nizh F odnochasno RoliPaksos opisuye diyi procesoriv za yih rolyami v protokoli kliyent prijmach zayavnik uchen ta providnik U tipovih vtilennyah odin procesor mozhe grati odnu abo bilshe rolej odnochasno Ce ne vplivaye na pravilnist protokolu zazvichaj poyednuyutsya roli dlya polipshennya zatrimok ta abo kilkosti povidomlen u protokoli Kliyent Kliyent nadsilaye zapit do rozpodilenoyi sistemi ta chekaye vidpovidi Napriklad zapit na zapis u fajl na rozpodilenomu fajlovomu serveri Prijmach viborciv Prijmachi vikonuyut funkciyu vidmovostijkoyi pam yati protokolu Prijmachi zbirayut v grupi yaki nazivayutsya kvorumami Bud yake povidomlennya nadislane Prijmachu maye buti nadislane v kvorum prijmachiv Bud yake povidomlennya otrimane vid Prijmacha ignoruyetsya yaksho kopiya ne otrimana vid kozhnogo Prijmacha v kvorumi Zayavnik Zayavnik prosuvaye zapit kliyenta namagayuchis perekonati Prijmachiv pogoditisya z nim Vikonuye funkciyu koordinatora dlya zrushennya protokolu vpered koli vinikayut konflikti Uchen Uchni vistupayut chinnikom replikaciyi protokolu Pislya togo yak Prijmachi pogodili zapit Kliyenta Uchen mozhe vzhiti potribni zahodi tobto vikonati zapit ta nadislati vidpovid kliyentu Dlya pokrashennya dostupnosti obrobki mozhna dodati dodatkovih uchniv Providnik Paksos vimagaye vid zaznachenogo Zayavnika jogo nazivayut providnikom dosyagnennya progresu Bagato procesiv mozhut vvazhati sho voni vedut ale protokol garantuye progres lishe v tomu vipadku yaksho v kincevomu pidsumku obranij odin z nih Yaksho dva procesi vvazhayut sho voni providniki voni mozhut zupinyati protokol postijno proponuyuchi superechlivi onovlennya Kvorumi Kvorumi predstavlyayut vlastivosti bezpeki algoritmu zabezpechuyuchi zberezhennya informaciyi pro rezultati u hoch b odnogo ucililogo procesora Kvorumi viznachayutsya yak pidmnozhini mnozhini Prijmachiv takim chinom shob bud yaki dvi pidmnozhini tobto bud yaki dva kvorumu mali prinajmni odin spilnij element Yak pravilo kvorum ye bud yakoyu bilshistyu Prijmachiv sho berut uchast Napriklad rozglyanemo mnozhinu Prijmachiv A B S D kvorum bilshosti skladatimetsya z bud yakih troh Prijmachiv A B S A S D A V D abo B C D Zagalnishe Prijmacham i kvorumu mozhut buti priznacheni dovilni pozitivni vagi yaki viznachayut yak bud yaka pidmnozhina Prijmachiv z sumarnoyu vagoyu perevishuye polovinu zagalnoyi vagi usih Prijmachiv Nomer propoziciyi ta uzgodzhena vartist Kozhna sproba viznachiti uzgodzhene znachennya v vikonuyetsya iz propoziciyami yaki mozhut abo ne mozhut buti prijnyati Prijmachem Kozhna propoziciya maye unikalnu numeraciyu dlya danogo Zayavnika Otzhe napriklad kozhna propoziciya mozhe mati viglyad n v de n ce unikalnij identifikator propoziciyi a v ce vlasne zaproponovane znachennya Znachennya vidpovidne numerovanij propoziciyi mozhe buti obchisleno yak chastina zapusku protokolu Paxos ale ce ne obov yazkovo Vlastivosti bezpeki ta zhivostiShob garantuvati bezpeku algoritm Paksos viznachaye tri vlastivosti ta zabezpechuye postijne dotrimannya pershih dvoh nezalezhno vid shemi vidmov Vagomist abo netrivialnist Vibirati ta vivchati mozhna lishe zaproponovani znachennya Domovlenist abo uzgodzhenist chi bezpeka Nemaye dvoh okremih uchniv mozhut zasvoyiti rizni znachennya abo ne mozhe buti bilshe odnogo viznachenogo znachennya Pripinennya abo zhivist Yaksho bulo zaproponovano znachennya C to zreshtoyu uchen L diznayetsya pro deyake znachennya yaksho zalishilos dostatno ucililih procesoriv Zauvazhte sho Paksos ne garantuye zavershennya i tomu ne maye vlastivosti zhivosti Tipove rozgortannyaU bilshosti vipadkiv kozhen proces sho bere uchast vikonuye tri roli Zayavnika Prijmacha ta Uchnya Ce znachno znizhuye skladnist povidomlennya ne zhervuyuchi pravilnistyu Ob yednuyuchi roli protokol zgortayetsya v efektivne rozgortannya stilyu kliyent majster replika harakterne dlya spilnoti baz danih Perevaga protokoliv Paksos vklyuchno z utilennyam z ob yednanimi rolyami ce garantiya jogo vlastivostej bezpeki Bazovij PaksosCe najbazovishij protokol iz sim yi Paksos Kozhen primirnik bazovogo protokolu Paksos viznachaye odne vihidne znachennya Protokol trivaye dekilka raundiv Vdalij raund maye 2 fazi fazu 1 yaka maye dvi chastini a i b i 2 fazu yaka tezh maye dvi chastini a i b Divitsya nizhche opis faz Pam yatajte sho mi pripuskayemo asinhronnu model tomu napriklad procesor mozhe perebuvati v odnij fazi a inshij procesor v inshij Faza 1 Faza 1a Pidgotovka Zayavnik stvoryuye povidomlennya yake mi nazivayemo Pidgotovka ta ototozhnyuye z chislom n Zauvazhte sho n ce ne znachennya a lishe chislo yake odnoznachno identifikuye ce pochatkove povidomlennya zaproponovane zayavnikom yake povinno buti nadislane prijmachem Chislo n povinno buti bilshe nizh bud yake chislo vikoristovuvane v bud yakomu z poperednih fazah Pidgotovki povidomlennya cogo Zayavnika Potim vin nadsilaye povidomlennya Pidgotovka sho mistit n do kvorumu prijmachiv Zauvazhte sho povidomlennya ciyeyi fazi mistit lishe chislo n tobto vono ne povinno mistiti napriklad zaproponovane znachennya yake chasto poznachayetsya v Zayavnik virishuye hto v kvorumi yak Zayavnik ne povinen iniciyuvati Paxos yaksho vin ne mozhe spilkuvatisya hocha b z kvorumom prijmachiv Faza 1b Zobov yazannya Bud yakij z Prijmachiv chekaye povidomlennya z fazi 1a vid bud yakogo iz Zayavnika Yaksho Prijmach otrimuye povidomlennya Prijmach povinen pereglyanuti identifikacijnij nomer n shojno otrimanogo povidomlennya Dali mozhe buti taki vipadki Chislo n vishe nizh bud yakij poperednij nomer propoziciyi otrimanij Prijmachem vid bud yakogo iz Zayavnikiv Todi Prijmach povinen povernuti povidomlennya yake mi nazivayemo Obicyankoyu ta ignoruvati vsi majbutni propoziciyi sho mayut chislo menshe nizh n Yaksho Prijmach prijnyav propoziciyu v yakijs moment minulogo vin povinen vklyuchiti poperednij nomer propoziciyi skazhimo m i vidpovidne prijnyate znachennya skazhimo w u svoyij vidpovidi na adresu Zayavnika dd V inshomu vipadku yaksho n ye menshim abo rivnim bud yakomu poperednomu nomeru propoziciyi otrimanomu vid bud yakogo Zayavnika Prijmachu Prijmach mozhe ignoruvati otrimanu propoziciyu dd Faza 2 Faza 2a Pogodzhennya Yaksho Zayavnik otrimuye bilshist obicyan vid kvorumu Prijmachiv jomu neobhidno vstanoviti znachennya v svoyij propoziciyi Yaksho bud yakij Prijmach ranishe prijnyav bud yaku propoziciyu to voni nadishlyut svoyi znachennya Zayavniku yakij teper povinen vstanoviti znachennya svoyeyi propoziciyi v na znachennya pov yazane z najvishim chislom propozicij nazvemo jogo z pro yake povidomili Prijmacha Yaksho zhoden z Prijmachiv ne prijnyav propoziciyu do cogo momentu to Zamovnik mozhe vibrati znachennya yake vin spochatku hotiv zaproponuvati skazhimo x Zayavnik nadsilaye povidomlennya Accept n v do kvorumu prijmachiv iz vibranim znachennyam dlya svoyeyi propoziciyi v ta nomerom propoziciyi n Otzhe povidomlennya Accept ye abo n v z abo yaksho zhoden z prijmachiv ranishe ne prijnyav znachennya n v x Faza 2b Prijnyattya Yaksho Prijmach otrimuye povidomlennya pro prijnyattya n v vid Zayavnika vin povinen prijnyati jogo tilki yaksho vin ne obicyav u fazi 1b protokolu Paxos rozglyanuti lishe propoziciyi sho mayut identifikator bilshij nizh n Yaksho Akceptor vzhe ne poobicyav u Fazi 1b rozglyadati lishe propoziciyi sho mayut identifikator bilshij za n vin povinen zareyestruvati znachennya v shojno otrimanogo povidomlennya Accept yak prijnyate znachennya protokolu ta nadislati Prijnyate povidomlennya Zayavniku ta kozhnomu Uchasniku yakim zazvichaj mozhut buti sami Zayavniki dd Krim togo vin mozhe ignoruvati povidomlennya Prijnyattya abo zapit dd Treba vidmititi sho Prijmach mozhe brati kilka propozicij Ce mozhe statisya yaksho inshij Zayavnik ne znayuchi pro nove znachennya rozpochne novij raund z bilsh visokim identifikacijnim nomerom n U comu vipadku Prijmach mozhe poobicyati i piznishe prijnyati nove zaproponovane znachennya navit yaksho vin prijnyav inshe ranishe Ci propoziciyi mozhut mati navit rizni znachennya za nayavnosti pevnih nevdach Odnak protokol Paksos garantuye sho Prijmachi v kincevomu rahunku domovlyatsya Koli raundi provalyuyutsya Raundi ne vdayetsya koli kilka zayavnikiv nadsilayut superechlivi pidgotuvalni povidomlennya abo koli Zayavnik ne otrimuye kvorum vidpovidej Obicyannya abo Prijnyattya U cih vipadkah slid rozpochati she odin raund iz bilshim chislom propozicij Paxos mozhna vikoristovuvati dlya viboru lidera Zauvazhte sho Prijmachi prijmayut zapit ta pidtverdzhuyut liderstvo Zayavnika Otzhe Paksos mozhna vikoristovuvati dlya viboru lidera v klasteri vuzliv Grafichne zobrazhennya potoku povidomlen u bazovomu Paksosi Nastupni diagrami predstavlyayut vipadki zastosuvannya protokolu bazovogo Paksos Deyaki vipadki pokazuyut yak protokol bazovogo Paksos spravlyayetsya z vidmovoyu nadlishkovih komponentiv rozpodilenoyi sistemi Zauvazhte sho znachennya poverneni u povidomlenni Obicyannya stayut nulovimi pri pershomu vnesenni propoziciyi oskilki zhoden Prijmach ne prijnyav znachennya do cogo raundu Bazovij Paksos bez vidmov Na navedenij nizhche shemi ye 1 Kliyent 1 Zayavnik 3 Prijmacha tobto rozmir Kvorumu 3 ta 2 Uchni predstavleni dvoma vertikalnimi liniyami Cya diagrama predstavlyaye vipadok pershogo raundu yakij ye uspishnim tobto zhoden proces u merezhi ne zavershuyetsya Client Proposer Acceptor Learner X gt Request X gt gt gt Prepare 1 lt X X X Promise 1 Va Vb Vc X gt gt gt Accept 1 V lt X X X gt gt Accepted 1 V lt X X Response Client Proposer Acceptor Learner X gt Request X gt gt gt Prepare 1 lt X X X Promise 1 Va Vb Vc X gt gt gt Accept 1 V lt X X X gt gt Accepted 1 V lt X X Response Tut V ostannij iz Va Vb Vc Vipadki pomilok u bazovomu Paksos Najprostishi vipadki pomilok ce vihid z ladu Prijmacha koli kvorum prijmachiv zalishayetsya zhivim ta vidmova zajvogo Uchnya U cih vipadkah protokol ne treba vidnovlyuvati ne potribni dodatkovi raundi chi povidomlennya yaki pokazani u dvoh nastupnih diagramah vipadkah Bazovij Paksos koli Prijmach vihodit z ladu Na nastupnij shemi odin z Prijmachiv vidmovlyayetsya tomu rozmir Kvorumu staye 2 U comu vipadku protokol Bazovij Paksos vse she ye uspishnim Client Proposer Acceptor Learner X gt Request X gt gt gt Prepare 1 FAIL lt X X Promise 1 Va Vb null X gt gt Accept 1 V lt X X gt gt Accepted 1 V lt X X Response Bazovij Paksos koli Uchen vihodit z ladu U nastupnomu vipadku odin iz uchniv vihodit z ladu ale protokol Bazovij Paksos vse taki ye uspishnim Client Proposer Acceptor Learner X gt Request X gt gt gt Prepare 1 lt X X X Promise 1 Va Vb Vc X gt gt gt Accept 1 V lt X X X gt gt Accepted 1 V FAIL lt X Response Bazovij Paksos koli Zayavnik vihodit z ladu U comu vipadku Zayavnik vihodit z ladu pislya zayavlenih znachen ale do dosyagnennya zgodi Zokrema vono ne v seredini povidomlennya Accept tomu znachennya maye lishe odin Prijmach kvorumu Tim chasom obirayetsya novij Providnik Zvernit uvagu sho v comu vipadku ye dva raundi raundi prohodyat vertikalno zverhu vniz Client Proposer Acceptor Learner X gt Request X gt gt gt Prepare 1 lt X X X Promise 1 Va Vb Vc Leader fails during broadcast X gt Accept 1 V NEW LEADER X gt gt gt Prepare 2 lt X X X Promise 2 V null null X gt gt gt Accept 2 V lt X X X gt gt Accepted 2 V lt X X Response Bazovij Paksos koli konfliktuyut dekilka propozicij Najskladnishij vipadok koli kilka Zayavnikiv vvazhayut sebe liderami Napriklad potochnij lider mozhe na deyakij chas vijti z ladu ta piznishe vidnovitis ale inshi Zayavniki vzhe obrali novogo lidera Pri comu prijnyatij lider cogo she ne diznavsya i namagayetsya rozpochati novij raund u konflikti z ninishnim liderom Na diagrami nizhche pokazano 4 nevdalih raundi ale yih mozhe buti bilshe yak ce zaproponovano vnizu diagrami Client Leader Acceptor Learner X gt Request X gt gt gt Prepare 1 lt X X X Promise 1 null null null LEADER FAILS NEW LEADER knows last number was 1 X gt gt gt Prepare 2 lt X X X Promise 2 null null null OLD LEADER recovers OLD LEADER tries 2 denied X gt gt gt Prepare 2 lt X X X Nack 2 OLD LEADER tries 3 X gt gt gt Prepare 3 lt X X X Promise 3 null null null NEW LEADER proposes denied X gt gt gt Accept 2 Va lt X X X Nack 3 NEW LEADER tries 4 X gt gt gt Prepare 4 lt X X X Promise 4 null null null OLD LEADER proposes denied X gt gt gt Accept 3 Vb lt X X X Nack 4 and so on Multi PaksosTipove rozgortannya Paksos vimagaye bezperervnogo potoku uzgodzhenih znachen sho diyut yak komandi dlya rozpodilenoyi mashini Yaksho kozhna komanda ye rezultatom odnogo ekzemplyara protokolu Bazovij Paksos vijde znachna kilkist nakladnih vitrat Yaksho lider stabilnij faza 1 staye nepotribnoyu Takim chinom mozhna propustiti fazu 1 dlya majbutnih ekzemplyariv protokolu z tim zhe liderom Dlya cogo krugle chislo I vklyuchayetsya razom iz kozhnim znachennyam yake zbilshuyetsya v kozhnomu raundi odnim i tim zhe Providnikom Multi Paksos zmenshuye zatrimku bezvidmovnogo povidomlennya propoziciyu do navchannya z 4 zatrimok do 2 zatrimok Grafichne zobrazhennya potoku povidomlen v Bazovij Paksos Multi Paksos bez vidmov Na nastupnij diagrami pokazanij lishe odin ekzemplyar bazovogo protokolu Paksos z pochatkovim liderom Zauvazhte sho Multi Paksos skladayetsya z dekilkoh primirnikiv bazovogo protokolu Paksos Client Proposer Acceptor Learner First Request X gt Request X gt gt gt Prepare N lt X X X Promise N I Va Vb Vc X gt gt gt Accept N I V lt X X X gt gt Accepted N I V lt X X Response de V ostannij z Va Vb Vc Multi Paksos koli faza 1 mozhe buti propushena U comu vipadku ekzemplyari poslidovnosti bazovogo protokolu Paksos vikoristovuyut togo zh samogo lidera tomu faza 1 yaka skladayetsya z bilsh korotshih faz Pidgotuvati ta Obicyati propuskayetsya Zauvazhte sho lider povinen buti stabilnim tobto ne povinen vihoditi z ladu abo zminyuvatisya Client Proposer Acceptor Learner Following Requests X gt Request X gt gt gt Accept N I 1 W lt X X X gt gt Accepted N I 1 W lt X X Response Multi Paksos koli roli zgortayutsya Poshirene rozgortannya Multi Paksos polyagaye u zgortanni roli Zayavnikiv Prijmachiv ta Uchniv na Serveri Otzhe zreshtoyu ye lishe Kliyenti ta Serveri Navedena nizhche shema predstavlyaye pershij ekzemplyar bazovogo protokolu Paksos koli roli Zayavnika Prijmacha ta Uchnya zgortayutsya v rol Server Client Servers First Request X gt Request X gt gt Prepare N lt X X Promise N I Va Vb X gt gt Accept N I Vn X lt gt X lt gt X Accepted N I lt X Response Multi Paksos koli roli zgortayutsya a lider stijkij U nastupnih vipadkah bazovogo protokolu Paksos z tim samim liderom sho i v poperednih ekzemplyarah bazovogo protokolu Paksos faza 1 mozhe buti propushena Client Servers X gt Request X gt gt Accept N I 1 W X lt gt X lt gt X Accepted N I 1 lt X Response OptimizaciyaDlya zmenshennya kilkosti povidomlen ta pokrashennya produktivnosti protokolu mozhna zdijsniti ryad optimizacij Nizhche navedeno dekilka takih optimizacij Deshevij PaksosDeshevij Paksos rozshiryuye Bazovij Paksos shob perenositi zboyi F z osnovnimi procesorami F 1 ta F dopomizhnimi procesorami shlyahom dinamichnoyi korekciyi pislya kozhnogo zboyu Ce znizhennya potrebi v procesori vidbuvayetsya za rahunok zhittyezdatnosti yaksho zanadto bagato osnovnih procesoriv vihodyat z ladu za korotkij chas sistema povinna zupinitisya poki dopomizhni procesori ne zmozhut perekonfiguruvati sistemu U stabilni periodi dopomizhni procesori ne berut uchasti v protokoli Potik povidomlen Deshevij Multi Paksos Priklad sho vklyuchaye tri osnovnih prijmacha odin dopomizhnij prijmach i rozmir kvorumu v tri pokazuye vihid z ladu odnogo osnovnogo procesora ta nastupnu konfiguraciyu Acceptors Proposer Main Aux Learner Phase 2 X gt gt gt Accept N I V FAIL lt X X gt Accepted N I V Failure detected only 2 accepted X gt gt gt Accept N I V re transmit include Aux lt X X X gt Accepted N I V Reconfigure Quorum 2 X gt gt Accept N I 1 W Aux not participating lt X X gt Accepted N I 1 W Shvidkij PaksosShvidkij uzagalnyuye bazovij Paksos shob zmenshiti zatrimki povidomlennya v kinci U bazovomu Paksos zatrimka povidomlennya vid zapita kliyenta do navchannya stanovit 3 zatrimki za povidomlennya Shvidkij Paxos dozvolyaye zatrimati 2 povidomlennya ale vimagaye shob 1 sistema skladalasya z 3 prijmachiv 1 shob dopustiti do f pomilok i 2 Kliyent nadsilaye svij zapit u kilka napryamkiv Ochevidno yaksho kerivnik ne maye zhodnoyi pidstavi na zapit to kliyent mozhe nadislati povidomlennya bezposeredno Prijmacham Prijmachi vidpovidatimut yak u bazovih Paksos nadsilayuchi Prijnyati povidomlennya kerivniku ta kozhnomu Uchnevi dosyagayuchi dvoh zatrimok povidomlen vid Kliyenta do Uchnya Yaksho lider viyavit zbij to vin virishuye jogo vidpravivshi povidomlennya na novij raund Cya koordinovana metodika vidnovlennya vimagaye chotiroh zatrimok povidomlen vid kliyenta do uchnya Ostatochna optimizaciya vidbuvayetsya koli lider zazdalegid vkazuye tehniku vidnovlennya dozvolyayuchi Prijmacham samostijno vikonuvati vidnovlennya zitknennya Takim chinom neuzgodzhene vidnovlennya zitknennya mozhe vidbutisya za tri zatrimki povidomlennya i lishe dvi zatrimki povidomlennya yaksho vsi Uchni takozh prijmachi Potik povidomlen Shvidkij Paksos bezkonfliktnij Client Leader Acceptor Learner X gt gt gt gt Any N I Recovery X gt gt gt gt Accept N I W lt X X X X gt gt Accepted N I W lt X X Response W Potik povidomlen Shvidkij Paksos superechlivi propoziciyi Konflikt propozicij z koordinovanim vidnovlennyam Primitka protokol ne vkazuye yak obroblyati skinutij zapit kliyenta Client Leader Acceptor Learner Concurrent conflicting proposals received in different order by the Acceptors X Accept N I V X Accept N I W Acceptors disagree on value lt X X gt gt gt gt Accepted N I V lt lt lt X X gt gt Accepted N I W Detect collision amp recover X gt gt gt gt Accept N 1 I W lt X X X X gt gt Accepted N 1 I W lt X X Response W Superechnist propozicij z neuzgodzhenim vidnovlennyam Client Leader Acceptor Learner X gt gt gt gt Any N I Recovery Concurrent conflicting proposals received in different order by the Acceptors X Accept N I V X Accept N I W Acceptors disagree on value lt X X gt gt gt gt Accepted N I V lt lt lt X X gt gt Accepted N I W Detect collision amp recover lt X X X X gt gt Accepted N 1 I W lt X X Response W Potik povidomlen Shvidkij Paksos z nekoordinovanim vidnovlennyam zgornuti roli Client Servers X gt gt gt Any N I Recovery Concurrent conflicting proposals received in different order by the Servers X Accept N I V X Accept N I W Servers disagree on value X lt gt X gt gt Accepted N I V lt lt X lt gt X Accepted N I W Detect collision amp recover X lt gt X lt gt X lt gt X Accepted N 1 I W lt X X X X Response W Uzagalnenij PaksosUzagalnenij konsensus doslidzhuye vzayemozv yazok operacij replikovanoyi mashini ta protokolu uzgodzhennya yakij jogo realizuye Osnovne vidkrittya peredbachaye optimizaciyu Paksos koli superechlivi propoziciyi mozhut buti zastosovani v bud yakomu poryadku tobto koli zaproponovani operaciyi ye komutacijnimi operaciyami dlya mashini U takih vipadkah konfliktuyuchi operaciyi mozhut buti prijnyati yak uniknennya zatrimok neobhidnih dlya virishennya konfliktiv Cya koncepciya dodatkovo uzagalnena u postijno zrostayuchij poslidovnosti komutativnih operacij deyaki z yakih ye stabilnimi Protokol vidstezhuye ci poslidovnosti ta garantuye stabilizaciyu zaproponovanih operacij odniyeyi poslidovnosti Potik povidomlen Uzagalnenij Paksos priklad Client Leader Acceptor Learner New Leader Begins Round X gt gt gt Prepare N lt X X X Promise N null X gt gt gt Phase2Start N null Concurrent commuting proposals X Propose ReadA X Propose ReadB X X gt gt Accepted N lt ReadA ReadB gt lt X X gt gt Accepted N lt ReadB ReadA gt No Conflict both accepted Stable lt ReadA ReadB gt Concurrent conflicting proposals X Propose lt WriteB ReadA gt X Propose ReadB X X gt gt Accepted N lt WriteB ReadA gt lt ReadB gt lt X X gt gt Accepted N lt ReadB gt lt WriteB ReadA gt Conflict detected leader chooses commutative order V lt ReadA WriteB ReadB gt X gt gt gt Phase2Start N 1 V lt X X X gt gt Accepted N 1 V Stable lt ReadA ReadB gt lt ReadA WriteB ReadB gt More conflicting proposals X Propose WriteA X Propose ReadA X X gt gt Accepted N 1 lt WriteA gt lt ReadA gt lt X X gt gt Accepted N 1 lt ReadA gt lt WriteA gt Leader chooses order W lt WriteA ReadA gt X gt gt gt Phase2Start N 2 W lt X X X gt gt Accepted N 2 W Stable lt ReadA ReadB gt lt ReadA WriteB ReadB gt lt WriteA ReadA gt Produktivnist Vishenavedenij potik povidomlyaye nam sho uzagalnenij Paksos mozhe vikoristovuvati semantiku operacij dlya uniknennya zitknen ta koli mimovilne vporyadkuvannya merezhi ne vdayetsya Ce dozvolyaye zrobiti protokol na praktici shvidshe nizh Shvidkij Paksos Odnak koli traplyayetsya zitknennya uzagalnenomu Paksos potribni dvi dodatkovi poyizdki v obidva kinci shob vidnovitisya U zagalnomu vipadku taki turi neminuchi i viplivayut z togo sho pid chas raundu mozhna prijnyati kilka komand Ce robit protokol dorozhchim nizh Paksos koli konflikti chasti Spodivayemos mozhlivi dva vdoskonalennya uzagalnenogo Paksos dlya pokrashennya chasu vidnovlennya Po pershe yaksho koordinator ye chastinoyu kozhnogo kvorumu Prijmachiv to vin vidnovlyuyetsya v raundi N 1 pri zitknennya na raundi N Koordinator propuskaye fazu 1 i proponuye na fazi 2 ostannyu poslidovnist yaku vin prijnyav pid chas raundu N Ce zmenshuye vitrati na vidnovlennya odnoyi poyizdki v obidva kinci Po druge yaksho obidva raundi N i N 1 vikoristovuyut unikalnij i odnakovij centrovanij kvorum koli Prijmach viyavlyaye zitknennya v N raundi Vin spontanno proponuye v raundi N 1 poslidovnist sho sufiksuye obidvi poslidovnosti i prijnyatu v raundi N koordinatorom ta ii najbilshij bezkonfliktnij prefiks yakij vin prijnyav u raundi N Za takoyi zmini vartist vidnovlennya ce zatrimka odnogo povidomlennya yaka ochevidno ye optimalnoyu Ce viplivaye z togo sho bud yakij proces u comu kvorumi ye kvorumom chitannya dlya fazi pidgotovki nastupnih raundiv Vizantijskij PaksosPaksos takozh mozhe buti poshirenij na pidtrimku dovilnih vidmov uchasnikiv vklyuchayuchi brehnyu vigadku povidomlen zmovu z inshimi uchasnikami vibirkove neuchast tosho Taki tipi nevdach nazivayutsya zadachami vizantijskih generaliv Zadacha vizantijskih generaliv predstavlena Kastro ta Liskovim dodaye dodatkove povidomlennya Pereviriti yaka poshiruye znannya ta pereviryaye dij inshih procesoriv Potik povidomlen Zadacha vizantijskih generaliv Multi Paksos stacionarnij stan Client Proposer Acceptor Learner X gt Request X gt gt gt Accept N I V X lt gt X lt gt X Verify N I V BROADCAST lt X X X gt gt Accepted N V lt X X Response V Shvidkij vizantijskij Paksos predstavlenij Martinom ta Alvisi usuvaye cyu dodatkovu zatrimku oskilki kliyent vidpravlyaye komandi bezposeredno Prijmacham Zvernit uvagu sho Prijnyate povidomlennya u shvidkih vizantijskih Paksos nadsilayetsya vsim Prijmacham ta vsim Uchnyam todi yak Shvidkij Paksos nadsilaye Prijnyati povidomlennya lishe Uchnyam Potik povidomlen Shvidkij vizantijskij Multi Pakson stacionarnij stan Client Acceptor Learner X gt gt gt Accept N I V X lt gt X lt gt X gt gt Accepted N I V BROADCAST lt X X Response V Scenarij vidmovi odnakovij dlya oboh protokoliv Kozhen Uchen chekaye otrimannya F 1 odnakovih povidomlen vid riznih Prijmachiv Yaksho cogo ne vidbudetsya sami Prijmachi takozh budut pro ce znati i pravilni Prijmachi povtorno translyuvatimut uzgodzhene znachennya Potik povidomlen Shvidkij vizantijskij Multi Pakson nevdacha Client Acceptor Learner One Acceptor is faulty X gt gt gt Accept N I V X lt gt X lt gt X gt gt Accepted N I V W BROADCAST Learners receive 2 different commands Correct Acceptors notice error and choose X lt gt X lt gt X gt gt Accepted N I V BROADCAST lt X X Response V Adaptaciya Paksos do merezh RDMAZ poyavoyu duzhe shvidkih nadijnih merezh centriv obrobki danih yaki pidtrimuyut viddalenij DMA RDMA vinikla znachna zacikavlenist v optimizaciyi Paksos dlya vikoristannya aparatnogo rozvantazhennya v yakomu merezheva karta interfejsu ta merezhevi marshrutizatori zabezpechuyut nadijnist ta kontrol perevantazhenosti merezhevogo rivnya zvilnyayuchi host procesor dlya inshih zavdan Biblioteka Derecho C Paxos 14 sichnya 2022 u Wayback Machine ce realizaciya Paksos z vidkritim kodom yaka doslidzhuye cej variant Derecho proponuye yak klasichnij Paxos sho maye dovgovichnist danih u poslidovnosti povnogo vidklyuchennya perezavantazhennya tak i vertikalnij Paxos atomnij peredavach dlya replikaciyi v pam yati ta sinhronizaciyi stanu ta mashini Protokoli Paxos zastosovani Derecho potrebuvali adaptaciyi dlya maksimizaciyi asinhronnogo potoku danih ta usunennya inshih dzherel zatrimki na kritichnomu shlyahu lidera Takim chinom ce dozvolyaye Derecho pidtrimuvati povnu dvonapravlenu shvidkist peredachi danih RDMA Na vidminu vid cogo hocha tradicijni protokoli Paxos mozhut buti peremisheni do merezhi RDMA shlyahom prostogo vidobrazhennya operacij nadsilannya povidomlen u nativnij operaciyi RDMA ale ce zalishaye zatrimki v zvorotnomu napryamku na kritichnomu shlyahu U visokoshvidkisnih merezhah RDMA navit neveliki zatrimki mozhut buti dosit velikimi shob zapobigti vikoristannyu povnoyi potencijnoyi propusknoyi zdatnosti Vikoristannya PaksosGoogle vikoristovuye algoritm Paksos u svoyij sluzhbi rozpodilenogo blokuvannya Chubby shob pidtrimuvati poslidovnist replik u razi vidmovi Chubby vikoristovuyetsya Bigtable yakij zaraz vipuskayetsya v Google Analytics ta inshih produktah Google Spanner ta Megastore vikoristovuyut algoritm Paksos Sluzhba replikaciyi OpenReplica 9 serpnya 2018 u Wayback Machine vikoristovuye Paksos dlya pidtrimannya kopij dlya sistemi vidkritogo dostupu yaka dozvolyaye koristuvacham stvoryuvati ob yekti stijki do vidmov Ce zabezpechuye visoku efektivnist za rahunok odnochasnih raundiv ta gnuchkist zavdyaki dinamichnim zminam chlenstva IBM nibito vikoristovuye algoritm Paksos v svoyemu produkti IBM SAN Volume Controller dlya realizaciyi virtualnoyi mashini zagalnogo priznachennya stijkoyi do vidmov sho vikoristovuyetsya dlya zapusku konfiguracijnih ta keruyuchih komponentiv sluzhb virtualizaciyi zberigannya proponovanih klasterom Originalnij doslidnickij dokument MIT amp IBM 21 travnya 2020 u Wayback Machine Microsoft vikoristovuye Paxos v sluzhbi keruvannya klasterami avtopilotiv 7 travnya 2016 u Wayback Machine vid kompaniyi Bing ta v klasterizaciyi vidklyuchennya Windows Server WANdisco vprovadiv Paxos v ramkah svoyeyi tehnologiyi aktivnoyi replikaciyi DConE XtreemFS vikoristovuye algoritm uzgodzhennya orendi na osnovi Paxos dlya stijkoyi do vidmov ta poslidovnoyi replikaciyi fajlovih danih ta metadanih Heroku vikoristovuye Doozerd 16 zhovtnya 2019 u Wayback Machine yakij realizuye Paxos dlya poslidovnogo rozpodilenogo shovisha danih Ceph vikoristovuye Paxos yak chastinu procesiv monitora shob uzgoditi yaki ekranni ekrani znahodyatsya v klasteri Rozpodilena baza danih Slustrix Clustrix vikoristovuye Paxos dlya rozpodilenoyi rozdilnoyi zdatnosti tranzakcij 6 grudnya 2019 u Wayback Machine Baza danih grafikiv HA Neo4j realizuye Paxos zaminyuyuchi Apache ZooKeeper z versiyi 1 9 Baza danih Apache Cassandra NoSQL vikoristovuye lishe Paxos dlya funkciyi legkoyi vagi 20 kvitnya 2019 u Wayback Machine Amazon Elastic Container Services vikoristovuye Paxos dlya pidtrimki poslidovnogo pereglyadu stanu klasteriv 4 chervnya 2020 u Wayback Machine PrimitkiPease Marshall Shostak Robert Lamport Leslie April 1980 Reaching Agreement in the Presence of Faults 16 serpnya 2007 u Wayback Machine 27 2 Retrieved 2007 02 02 Lamport Leslie July 1978 Time Clocks and the Ordering of Events in a Distributed System 16 serpnya 2007 u Wayback Machine Communications of the ACM 21 7 558 565 doi 10 1145 359545 359563 Retrieved 2007 02 02 Arhiv originalu za 5 serpnya 2011 Procitovano 21 listopada 2019 Lamport Leslie May 1998 The Part Time Parliament 16 serpnya 2007 u Wayback Machine ACM Transactions on Computer Systems 16 2 133 169 doi 10 1145 279227 279229 Retrieved 2007 02 02 Dwork Cynthia Lynch Nancy Stockmeyer Larry April 1988 Consensus in the Presence of Partial Synchrony 18 chervnya 2019 u Wayback Machine PDF Journal of the ACM 35 2 288 323 CiteSeerX 10 1 1 13 3423 doi 10 1145 42282 42283 Oki Brian Liskov Barbara 1988 Viewstamped Replication A New Primary Copy Method to Support Highly Available Distributed Systems PODC 88 Proceedings of the seventh annual pp 8 17 doi 10 1145 62546 62549 Birman Kenneth Joseph Thomas February 1987 Reliable Communication in the Presence of Failures ACM Transactions on Computer Systems 47 76 Chandra Tushar Griesemer Robert Redstone Joshua 2007 Paxos Made Live An Engineering Perspective 21 lipnya 2016 u Wayback Machine PODC 07 26th ACM Symposium on Principles of Distributed Computing pp 398 407 doi 10 1145 1281100 1281103 ISBN 9781595936165 Lamport Leslie 2001 Paxos Made Simple 5 serpnya 2011 u Wayback Machine ACM SIGACT News Distributed Computing Column 32 4 Whole Number 121 December 2001 51 58 Lamport Leslie 2005 Generalized Consensus and Paxos 16 serpnya 2007 u Wayback Machine Cite journal requires journal Pierre Sutra Marc Shapiro 2011 Fast Genuine Generalized Consensus 12 grudnya 2014 u Wayback Machine PDF SRDS 11 30th IEEE Symposium on Reliable Distributed Systems Lamport Leslie Malkhi Dahlia Zhou Lidong 2009 Vertical Paxos and Primary backup Replication PODC 09 New York NY USA ACM s 312 313 doi 10 1145 1582716 1582783 ISBN 9781605583969 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite book title Shablon Cite book cite book a Proignorovano journal dovidka Lamport Leslie Shostak Robert Pease Marshall July 1982 The Byzantine Generals Problem 16 serpnya 2007 u Wayback Machine ACM Transactions on Programming Languages and Systems 4 3 382 401 CiteSeerX 10 1 1 64 2312 doi 10 1145 357172 357176 Retrieved 2007 02 02 Castro Miguel Liskov Barbara February 1999 PDF Proceedings of the Third Symposium on Operating Systems Design and Implementation 173 186 Arhiv originalu PDF za 4 bereznya 2018 Procitovano 5 bereznya 2018 Martin Jean Philippe Alvisi Lorenzo July 2006 PDF IEEE Transactions on Dependable and Secure Computing 3 3 202 215 doi 10 1109 TDSC 2006 35 Arhiv originalu PDF za 18 sichnya 2021 Procitovano 5 bereznya 2018 Jha Sagar Behrens Jonathan Gkountouvas Theo Milano Matthew Song Weijia Tremel Edward van Renesse Robbert Zink Sydney Birman Ken April 2019 Derecho Fast State Machine Replication for Cloud Services 36 2 doi 10 1145 3302258 Aahlad et al 2011 The Distributed Coordination Engine DConE 15 kvitnya 2016 u Wayback Machine WANdisco white paper Kolbeck Bjorn Hogqvist Mikael Stender Jan Hupfeld Felix 2011 Flease Lease Coordination without a Lock Server 5 veresnya 2021 u Wayback Machine 25th IEEE International Parallel amp Distributed Processing Symposium IPDPS 2011