Gbcast - Gbcast

Gbcast (сонымен бірге топтық хабар тарату) - бұл апатқа ұшыраған машиналар желісі ішіндегі қабылдағыштар тобында реттелген, ақауларға төзімді (барлығына немесе жоққа) хабарламаларды жеткізуді қамтамасыз ететін сенімді көп нүктелі хаттама.[1][2][3] Хаттама шешуге қабілетті Консенсус сенімсіз процессорлар желісінде және оны іске асыру үшін пайдалануға болады мемлекеттік машинаның репликациясы.[4][5] Gbcast оқшау түрде қолданыла алады немесе қолдау көрсете алады виртуалды синхронизм орындау моделі, бұл жағдайда әдеттегідей Gbcast топтық мүшелікті басқару үшін қолданылады, ал басқа, жылдамырақ хаттамалар әдеттегі коммуникациялық тапсырмалар үшін жиі қолданылады.

Тарих

1985 жылы енгізілген,[1] Gbcast - бұл динамикалық қайта құрылатын мүшелікпен мемлекеттік машиналық репликацияны жүзеге асыратын алғашқы кең таралған сенімді көп нүктелі хаттама. Бұған дейінгі теориялық тұрғыдан әр түрлі модельдер бойынша бұл мәселеге теориялық тұрғыдан қаралғанымен, Gbcast мемлекеттік машина ішіндегі қайталанатын деректерді жаңарту үшін пайдаланылатын бірдей мультимедиа топ мүшелерін динамикалық түрде қайта конфигурациялау үшін пайдаланылуы мүмкін екенін көрсетті, содан кейін олар мүшелерге рұқсат беру үшін дами алады. қосылыңыз және өз қалауыңыз бойынша кетіңіз, сонымен қатар сәтсіздікке байланысты жойылады. Бұл функционалдылық мүшелерді инициализациялау үшін қолданылатын күйді беру механизмімен бірге виртуалды синхронизм процесс тобын орындау моделі.

Термин мемлекеттік машинаның репликациясы ұсынған болатын Лесли Лампорт [4] және жазылған сауалнама жарияланғаннан кейін кеңінен қабылданды Фред Б.Шнайдер.[6] Модель кез-келген жүйені қамтиды, онда кейбір детерминирленген объект (күй машинасы) көшірмелерге қателіктерге төзімділікпен командалар қатарын қолдануға болатындай етіп көшіріледі. Қайта конфигурацияланатын күйдегі машина - бұл оның мүшелерін өзгерте алатын, жаңа мүшелер қосатын немесе ескілерді алып тастайтын машина.[7] Кейбір мемлекеттік машиналық протоколдар, мысалы, Gbcast және Paxos сияқты жағдай туындаған кезде қайта конфигурацияны талап етпей, қазіргі мүшелердің ішкі жиынтығының уақытша қол жетімділігін жоюы мүмкін,[5] Лампорттың мемлекеттік машинаны көшіруге арналған кеңінен келтірілген хаттамасы.

Мемлекеттік машинаның репликациясы үлестірілгенмен тығыз байланысты Консенсус проблема,[8] онда процестер жинағы кейбір шешімдердің нәтижелерімен келісуі керек, мысалы, сайлаудың жеңімпазы. Атап айтқанда, мемлекеттік репликация мәселесін шешудің кез-келген шешімі үлестірілген консенсусты шеше алатындығын көрсетуге болады. Нәтижесінде таратылған консенсусқа қол жеткізу мүмкін емес [9] мемлекеттік машиналық репликация мәселесін шешуге қолдану. Бұл тұжырымның салдары талқыланады тіршілік.

Gbcast біршама ерекше, өйткені мемлекеттік машиналық репликация проблемасының шешімдерінің көпшілігі қайталанатын қолданбамен тығыз біріктірілген. Gbcast, керісінше, көп арналы API ретінде жасалған және топ мүшелеріне хабарламалар жеткізетін кітапхана арқылы жүзеге асырылады. Лампорт, Малхи және Чжоу бірнеше сенімді көп хаттамалық хаттамалардың мемлекеттік машина моделін дұрыс енгізу үшін ұзақ мерзімділік қасиеттеріне ие екенін атап өтті. Gbcast қажетті қасиеттерді көрсетеді.[7]

Gbcast протоколы алғаш рет 1985 ж. Басылымында сипатталған, онда инфрақұрылымды қолдайтындар талқыланды виртуалды синхронизм Isis Toolkit-тегі модель.[1] Қосымша мәліметтер кейінірек журналдағы 1987 ж. Мақаласында келтірілген,[2] және сол жылы қарашада Корнелл әзірлеушілері хаттаманың ашық кодты нұсқасын шығарды. Isis протоколды негізінен процесс топтарының мүшелігін қолдау үшін қолданды, сонымен қатар соңғы пайдаланушылар атай алатын API ұсынды. Технология кеңінен 1988 жылы Isis жүйесі коммерцияланып, қолдау қол жетімді болғаннан кейін кеңінен қолданыла бастады. Жүйені коммерциялық қолдау 1998 жылы Isis Distributed Systems компаниясының ата-анасы Stratus Computer тек телекоммуникация индустриясының аппараттық шешімдеріне қайта бағытталуымен аяқталды.

Isis-ді өндіріс жағдайында қолданған жүйелердің мысалдары Нью-Йорк қор биржасын қамтиды, мұнда ол сауда алаңы үшін конфигурацияланатын, ақауларға төзімді және өзін-өзі қалпына келтіретін есептілік инфрақұрылымын басқару, баға ұсыныстарын және сауда есептерін жіберу үшін шамамен он жыл жұмыс істеді. биржаның қосымша дисплейге шығаратын «бэк-офис» жүйелері. Француз әуе қозғалысын басқару жүйесі Isis қолдануды жалғастыруда; 1996 жылдан бастап бұл жүйе әуе диспетчерлері пайдалану үшін ақаулықтарға төзімді жұмыс станцияларының кластерлерін құру және әуе қозғалысын басқару орталықтары арасында маршруттық жаңартуларды сенімді түрде беру үшін жұмыс істейді; уақыт өте келе француз технологиясын басқа еуропалық ATC жүйелері де қабылдады. АҚШ Әскери-теңіз күштері AEGIS Isis-ті 1993 жылдан бастап сенімді және өзін-өзі сауықтыратын коммуникациялық инфрақұрылымды қолдау үшін қолданады. Isis-те қаржылық, телекоммуникациялық, процестерді басқаруда, SCADA және басқа да маңызды инфрақұрылымдық домендерде бірнеше жүздеген басқа өндіріс пайдаланушылары болды. Толығырақ мына жерден таба аласыз.[3]

Проблеманы шешу

Gbcast шешкен негізгі мәселе мынада: бізге бастапқы жиынтығы берілген топ мүшелері топ мүшелеріне әр түрлі командалар мен сұраныстарды кодтайтын хабарламалар жіберуге мүмкіндік бере отырып, көп нүктелі абстракцияны қолдағыңыз келеді. Хаттама жеткізілетін хабарламалар мен олардың тәртібі туралы келісуі керек, егер топтың кез-келген мүшесі хабарлама жіберсе, сәтсіздікке ұшыраған топтың кез-келген мүшесі сол хабарламаны алады және басқаларға қатысты сол тәртіпте жеткізілген хабарламалар.

Топ мүшелерінің жиынтығы мүше сәтсіздікке ұшыраған немесе қосылған сайын өзгереді, сонымен қатар Gbcast қосымшаға «жаңа көрініс» оқиғалары ретінде жеткізілетін, бірақ сонымен қатар топ мүшелерінің тізімін реттейтін арнайы мультимедиа арқылы топ мүшелігін қолдау үшін қолданылады. Gbcast хаттама кітапханасы арқылы. Қосымшада белгілі бір топ мүшесі қосылған кезде «алғашқы көріністен» басталып, уақыт өте келе дамитын және басқа көріністі өзгертетін оқиғаларға және көп таратылымдық хабарламаларға қатысты реттелетін мүшелік көріністер сериясы көрінеді. Бұл мультимедиа жеткізілімдері жоспарланған көріністе көрсетілген барлық сәтсіз мүшелерге жеткізіледі виртуалды синхронизм.

Желілік бөлімдер топты екіге немесе одан да көп топтарға бөліп, қаупін тудыруы мүмкін бөлінген ми топтың кейбір бөлімдері басқа, қарама-қайшы шешім қабылдағанын білмей, кейбір топ мүшелері шешім қабылдайтын мінез-құлық (мүмкін, зымыранды ұшыру). Gbcast бұл қауіптен қорғауды ұсынады: хаттама прогресстің тек біреуінде болатындығына кепілдік береді негізгі бөлім топтың. Осылайша, егер желілік бөлім пайда болса, ең көп дегенде бір кіші топ жұмысын жалғастырады, ал екіншісі тоқтап, жабылады.

Егер сәтсіз мүше қалпына келтірілсе (немесе бөлудің сәтсіздігі кейбір мүшелерді қате деп санап, сол себепті көріністен аластатса), байланыс қалпына келтірілгеннен кейін, бұл мүше қайта қосыла алады. Ан инкарнация нөмірі екіұштылықты болдырмау үшін қолданылады: процесс топқа қосылған сайын көбейтілетін және процесс идентификаторының бөлігі ретінде қарастырылатын санауыш. Кез-келген берілген (processor-id, process-id, incarnation-number) кортеж топқа ең көп дегенде қосылады, содан кейін ол сәтсіздікке жеткенше топта қалады немесе уақыт аяқталғандықтан кетуге мәжбүр болады.

Gbcast пен Paxos қоса алғанда, кез-келген динамикалық қайта құрылатын жүйе одан әрі алға жылжу мүмкін емес күйлерге кіре алады. Мысалы, егер бұл операциялық процестер конфигурациядан қате жойылған болса және көріністің қалған мүшелерінде өте көп нақты апаттар орын алса, орын алуы мүмкін. Мұндай жағдайларда деректер орталығын басқару инфрақұрылымы барлық қосымшаны қайта іске қосуға жауап береді. Бұл қалпына келтірілмейтін мінез-құлықтан айырмашылығы (ваниль ) Паксо, олар шектеусіз уақыттың бұзылуына жол бере алады, содан кейін топ инфрақұрылымының араласуынсыз топтың жеткілікті мүшелеріне қол жетімді болғаннан кейін жалғасады. Толық хаттамалық сипаттамада келесі терминдер қолданылады.

Процестер

  • Процестер ерікті жылдамдықта жұмыс істейтін процессорларда жүреді.
  • Процестер істен шығуы (тоқтауы) мүмкін.
  • Процесс үш кортежмен ерекше түрде анықталады: (процессор-id, процесс-идентификатор, инкарнация-сан).
  • Сақталуы тұрақты процедуралар сәтсіздіктерден кейін (апатты қалпына келтіру ақауларының үлгісінен кейін), инкарнация нөмірін көбейткеннен кейін, хаттамаға қайта қосылуы мүмкін.
  • Процестер келіспейді, өтірік айтпайды немесе басқаша түрде протоколды бұзуға тырыспайды. (Яғни, Византияның сәтсіздіктері [10] пайда болмаңыз.)

Желі

  • Жүйедегі барлық процестер жүйедегі барлық процестерге хабарлама жібере алады.
  • Хабарламалар асинхронды түрде жіберіледі: хабарламаны жеткізуге уақыт жоқ.
  • Хабарламалар жоғалуы, қайта реттелуі немесе қайталануы мүмкін.
  • Хабарламалар сыбайлас жемқорлықсыз жеткізіледі.

Бұл әлсіз болжамдар: ешқашан ешқандай хабарлама жеткізбейтін желі оларды қанағаттандырады (біз мұндай желі толық және тұрақты жұмыс істейді деп айтар едік) бөлудің сәтсіздігі). Gbcast үшін прогреске кепілдік беру үшін қажет желі шарттары төменде талқыланады. Іс жүзінде Gbcast әдетте деректер орталықтарында қолданылады; оларда уақытша ақаулар орын алуы мүмкін, бірақ бөлудің сәтсіздіктері сирек кездесетін және түйіндердің кішігірім ішкі жиынтықтарына әсер ететін желілері бар. Осылайша, талдау мақсатында біз нақты орналастыруда пайда болатыннан гөрі қатал желілік ортаны қабылдаймыз.

Тұсаукесерді жеңілдету үшін а TCP -қабылдау / ретрансляциялау схемасы сияқты, процестердің әр жұбы арасында сенімді, реттелген, қайталанбайтын хабар арнасының елесін жасайды. A үзіліс егер бұл каналды абстракциялау бірнеше рет қайталанса және кейбір хабарламалар үшін растау ала алмаса. Сол сияқты TCP-ге ұқсас арналарды қолдана отырып, біз бәріне бәріне бірдей мүмкіндікті қолдай аламыз, соның арқасында бір процесс өз арналары арқылы кейбір хабарларды кейбір топтардың барлық басқа мүшелеріне жібереді. Бұл барлығына сұрауды бірнеше 1-ден 1-ге дейінгі хабарламаларға салыстыру арқылы жасалады. Назар аударыңыз, бұл барлығына арналарда атомдық кепілдік жоқ: егер хабарлама жіберіліп жатқан кезде жіберуші сәтсіздікке ұшыраса, ол кейбір бағыттарға жетуі мүмкін.

Процесс топтары мен көріністері

Gbcast «процестер тобына» қатысты анықталады: процестер жиынтығы. Орналастырылған жүйеде мұндай топтың аты болуы мүмкін (мысалы, файл атауы), топпен алғашқы байланысу әдісі және ағынды басқару параметрлері сияқты басқа атрибуттар. Алайда бұл бөлшектер қысқалығы үшін алынып тасталған.
Термин мүшелік көрінісі - бұл жасына қарай дәрежеленген (әр мүше топқа жақында қосылатын көзқарас бойынша анықталған) және лексикографиялық тапсырыс ережесімен бұзылған байланыстар тізімі.
Топтың бастапқы мүшелігін сыртқы агент анықтайды және топтың алғашқы мүшелік көрінісін анықтайды.
Кейінгі мүшелік көзқарастар өтініш беру арқылы пайда болады қосу және жою командалар және реттік нөмір бойынша анықталады.
Жаңа көріністер көрініске жататын процестерге «жаңа көрініс» оқиғалары арқылы баяндалады. Өтінім туралы an жоғары қоңырау (бағдарламадан анықталған өңдеушіге кітапханадан шақыру).

Көп арналы хабарлар

Көріністің мүшелері мультикаст хабарларын жеткізу кезінде қолданылатын мүшелік туралы білместен процесс тобына жіберуді сұрай алады.
Gbcast хаттамасы бұл әрекеттерді төменде талқыланған бірқатар кепілдіктермен жүзеге асырады.
Хабарлама кез келген әрекетті орындай алатын қосымшаны жеткізу арқылы жеткізіледі.

Рөлдері

Gbcast рөлдер жиынтығы тұрғысынан жақсы түсініледі.

Қолдану

Қосымша бір немесе бірнеше процессорда іске қосылатын бағдарламаға сәйкес келеді. Әрбір өтінім процесі бір немесе бірнеше процесс тобына қосылады.
Топқа жататын қолданбалы процесс Gbcast-ті шақыру арқылы жаңа мультимедиаларды бастайды. Төменде түсіндірілген механизм арқылы мақсатты топтың барлық мүшелері хабарламаның жеткізілгенін немесе ақаулы деп табылған кезде хаттама тоқтатылды деп саналады.
Кіріс Gbcast хабарламалары жоғары көріністер арқылы жеткізіледі, көріністі өзгерту туралы хабарламалар.
Бұрын айтылғандай, топ мүшелері алғашқы қосылу кезінен бастап бірдей көтерілу дәйектілігін сақтайды: бастапқы көрініс, содан кейін жаңа көріністер мен көп хабарлы хабарламалар тізбегі. Топтың барлық мүшелері кез-келген белгілі бір көп арнаны бірдей көзқараспен қабылдайды, ал көпсатылым сол көріністің барлық сәтсіз мүшелеріне жеткізіледі.

Көшбасшы

Топтың көшбасшысы топтың кейбір көзқарасына байланысты анықталады және көзқарас бойынша ең төменгі дәрежелі мүше болып табылады. Белгіленгендей, ранг жас бойынша реттелген (егде жастағы мүшелер төменгі дәрежеге ие) және байланыстар лексикографиялық сұрыптаудың көмегімен бұзылады.

Ақауларды анықтау

Жүйенің барлық компоненттеріне ақауларды «анықтау» рөліне қатысуға рұқсат етіледі. Анықтау ерекшеленеді есеп беру ақаулық (бұл жаңа көзқарас арқылы пайда болады және хабарламаны жеткізуге қатысты тапсырыс беріледі).
Желілік деңгей қолдайтын каналды абстракция сәтсіздіктерді күту уақытымен сезеді. (Желі моделіне сәйкес, апатқа ұшыраған мақсатты процеске хабарлама жіберуге тырысатын процесс әрдайым күтуге ұшырайтынына назар аударыңыз, бірақ сонымен қатар арналар абстракциясы операциялық процесті қате деп хабарлауы мүмкін, егер хабарлар кешіктірілсе, себебі уақытша бөлудің сәтсіздігі).
Кез-келген күту процесі байланысты каналдың соңғы нүктесінің сәтсіз болғанын жариялай алады.
Егер процесс кейбір (процессор-идентификатор, процесс-идентификатор, инкарнация-нөмір) кортежі үшін сәтсіздік туралы білсе, онда ол барлық арналардағы келесі хабарламадағы ақпаратты қамтиды.
Басқа процесті сәтсіз деп санайтын процесс сәтсіз инкарданың хабарламаларын қабылдамайды және «сіз сәтсіздікке ұшырадыңыз» деп жауап береді. (Яғни, сәтсіздіктер туралы өсектерді өңдейді және топтың сәтсіз мүшелерінен аулақ болыңыз).
Сәтсіздікке ұшыраған процестің жаңа түріндегі кіріс хабарламасы «жаңа» процестің хабарламасы ретінде қарастырылады.

Сәтсіз аяқталды

Ағымдағы көріністің сәтсіз деп табылған кез келген мүшесі а деп саналады сәтсіз процесс.
Ол сәтсіздікке ұшырады деп есептелетін операциялық процесс (хабарламаны қабылдамайтын басқа процеспен байланыс орнатуға тырысу, сол арқылы оны «аулақ ұстау») жүйеден шығып кетуі мүмкін немесе оның инкарнациялық санын көбейтіп, қайта қосылуы мүмкін.

Жаңа басшы

Егер қазіргі көріністегі кез-келген төменгі рейтингі сәтсіз процесс болса, онда келесі ең жоғары рейтингідегі сәтсіз процесі жаңа жетекші ретінде тағайындалады.
Көшбасшы болу үшін жаңа басшы төменде талқыланған хаттаманы рәсімдеуі керек.

Кворумдар

Кворумдар Gbcast-тің қауіпсіздік қасиеттеріне кепілдік беру үшін топтардың біртұтас көріністері мен көп хабарлы хабарламалар тізбегінің болуын қамтамасыз ету және топ екі немесе одан да көп бөлімдерге бөлінген болса, бірнеше бөлімдерде прогрестің алдын алу арқылы қолданылады (бөлінбеген ішкі жиындар) олардың ішкі жиындарының басқа мүшелерімен байланыса алатын мүшелер, бірақ басқа ішкі жиындардың мүшелерімен емес). Кворумдар белгілі бір көрініс үшін анықталады.

Берілген көзқарас мен бірге n мүшелер {A, B, C….}, көзқарастың кворумы - осы көзқарас мүшелерінің кез келген көпшілік жиынтығы. Назар аударыңыз, бұл статикалық негізгі мүшелікке ие жүйелердегі терминнің анықталуынан айырмашылығы бар: Gbcast үшін кворум мөлшері уақыт өте келе өзгереді, өйткені топ мүшелері өзгеріп, жаңа көзқарастар анықталады.

Қауіпсіздік және тіршілік қасиеттері

Қауіпсіздікке кепілдік беру үшін Gbcast үш қауіпсіздік қасиеттерін анықтайды және олардың бұзылу үлгісіне қарамастан олардың сақталуын қамтамасыз етеді:

Ұсақ-түйек емес

Тек топтың кейбір мүшелері жіберген мультимедиа жеткізіледі. Егер процесс топ мүшесінен сәтсіздікке ұшырады деп есептейтін хабарлама алса, ол ол хабарламаларды қабылдамайды.

Жүйелілік

Егер көріністің кез-келген мүшесі басқа хабарларға қатысты қандай-да бір тәртіпте мультикаст таратса (немесе жаңа көрініс туралы есеп берсе), онда сол хабарламаны жеткізетін (немесе сол көріністі баяндайтын) сол көзқарастың барлық мүшелері солай жасайды тапсырыс.

Шартты тіршілік

Егер мультикаст болса М кейбір көріністе жіберіледі, ал жөнелтуші жұмыс істей береді, содан кейін бұл көріністің барлық мүшелері (кез келген апаттан басқа) жеткізеді М. Кез-келген жағдайда өмір сүруге кепілдік берілмейді, сондықтан біз қосымша шарт қоямыз: біз бұл қасиетті жеткілікті көптеген процестер ақаусыз болып қалғанда ғана талап етеміз (мұны әрі қарай қарастырамыз).

Негізгі Gbcast

Бұл хаттама қалыпты жағдайда қолданылады.

Естеріңізге сала кетейік, Gbcast-те әр операциялық процестің ағымдық көрінісі бар, және әр көрініс көшбасшыны анықтайды. Ағымдағы көзқарас бойынша өзін көшбасшы деп санайтын процесс қана жаңа мультикастты бастауы мүмкін; басқа мүшелер мультимедияларды көшбасшыға жіберіп, 1-ден 1-ге дейінгі байланыстар арқылы жіберіп, содан кейін көшбасшының хаттаманың орындалуын күтуі керек.

Егер лидер болып табылмайтын кейбір мүшелер мультикаст жіберуге тырысқан кезде көшбасшы сәтсіздікке ұшыраса, жөнелтуші өзінің күткен сұранысының күйін анықтауы керек. Бұл келесідей орындалады: назар аударыңыз, мүшелер өздерінің мультимедияларын жеткізуді қадағалайды. Тиісінше, егер ескі лидер сәтсіздікке ұшыраған жаңа көзқарас анықталса, не мультикаст жеткізілді (бұл жағдайда жөнелтуші оны қабылдаушылардың бірі болғандықтан біледі) немесе жаңа көріністі жеткізу оны қорытындылауға мүмкіндік береді көшбасшы күтіп тұрған хабарламаны жеткізе алмады және оны жаңа лидерден оны беруді сұрау арқылы ренжіту керек (тривиальды емес).

Қадамды дайындаңыз

Лидер хабарламаларды (хабарламаларды) ең ағымдағы көріністің мүшелеріне жіберу үшін әрқайсысын бүтін санның реттік нөмірі арқылы анықтай отырып, барлығына сенімді желілік қабатты қолдана отырып, бір немесе бірнеше мультикаст хабарламаларының бірнеше реттілігін ұсынады. Әрбір жаңа көрініс анықталған кезде реттік нөмірлер 1-ге қалпына келеді (төменде түсіндірілгендей, көп арнаның арнайы түрі арқылы). Көшбасшы басқа мүшелер сияқты хаттамаға қатыса отырып, «өзімен сөйлеседі». Қалпына келтіру кезінде (төменде талқыланған) жаңа лидер бұрын ұсынылған кейбір көріністі немесе хабарламаны қайта ұсына алады, өйткені жаңа басшы ескі басшы бастаған, бірақ аяқтай алмаған протоколдарды толтыруға тырысады. Бұл орын алған кезде, жаңа басшы бастапқы реттілікті құрметтейді және бірдей көріністі немесе хабарламаны қайта ұсынады.

Уәде сатысы

Әрбір алушы хабарламаның (хабарламалардың) көшірмесін сақтайды және оларды жеткізуге уәде береді (мұндай уәде алушының өзі топтық көзқарастың мүшесі болып қалғанға дейін орындалады, бірақ егер алушы орындалмаса, уәде болмауы мүмкін жүзеге асырылады). Қалпына келтіру кезінде алушы сол хабарламаға дайындалған қайталанатын сұранысты ала алады. Егер қандай да бір хабарлама бірдей реттік нөмірмен қайта ұсынылса, алушы өз уәдесін жай ғана қайталайды.

Қадам

Көшбасшы уәделік хабарламаларды топтың әр мүшесі үшін оның уәде хабары болғанша немесе күту уақыты басталғанға дейін, сәйкесінше мүше қате деп күдіктенуге мәжбүр болғанға дейін жинайды (есіңізде болсын, бұл жағдайда лидер күдікті мүшеден аулақ болады) , және хабарлама жіберетін ішкі жүйе бұл ақпаратты жіберген келесі хабарламаларында сақтайтын болғандықтан, көшбасшыдан кейінгі хабарлама алатын кез-келген процесс жаңа күдіктелген мүшелерден аулақ бола бастайды).
Егер лидер мүшелердің кворумынан хаттаманы жүргізуге байланысты анықталған уәделер алса, онда ол міндеттеме сұрау. Егер лидерге кворум жетіспесе, демек, топ мүшелерінің көп бөлігінен күдіктенсе, ол ешқашан алға жылжып кете алмайды, сондықтан көшбасшы жұмысын тоқтатады (өтінім бағдарламасы жаңа үдеріс атауын пайдаланып топқа қайта қосылуы мүмкін, бірақ одан әрі прогресс ескі көзқараспен, ескі процесс атауымен бұл процесс мүмкін емес).
Назар аударыңыз, лидер дайындық кезеңіндегі немесе ұсыныс кезеңіндегі сәтсіздіктер туралы білген болуы мүмкін.
Дайындық кезеңінде кейбір көзқарас мүшелері ұсынысты сұрауды қабылдамаған болуы мүмкін, бұл жағдайда көшбасшының сол мүшелерге арнасы үзілістерге тап болады. Көшбасшы оларды сәтсіз мүшелер деп белгілеген болады.
Сонымен қатар, уәде беру кезеңінде уәде туралы хабарлама алу арқылы көшбасшы топтың басқа мүшелері анықтаған сәтсіз мүшелер туралы білуі мүмкін. Осылайша, келісу кезеңі басталған кезде, көшбасшы уәделер кворумына ие болып, сәтсіздікке ұшыраған мүшелердің бос тізімімен бірге бар.
Сондықтан көшбасшы «Міндеттеме» хабарламасын көріністің сәтсіз мүшелеріне жібереді, ол сәтсіз қатысушыны (көзқарас мүшелерін) көріністен алып тастайтын көріністі өзгерту оқиғасы туралы ұсыныспен бірге, сол арқылы орындау қадамы мен ұсыну қадамын біріктіреді бір іс-әрекетке. Кез-келген сәтсіздік анықталғаннан кейін, топтың әрбір мүшесіне бірінші хабарлама сәтсіздіктерді анықтайтын ақпаратты жібереді және мүшелер сәтсіз мүшелерден аулақ болады. Осылайша, сәтсіздік туралы білетін мүшелер сәтсіздікке ұшыраған мүшелерден бірден аулақ бола бастайды, ал көшбасшы көріністі өзгерту хаттамасын бастау үшін келесі қадамды бастайды (оны аяқтауға біраз уақыт кетеді).
Егер ұсыныс мүшелерді қосу арқылы көріністі өзгерткен болса, лидер жаңа көріністі қосылатын мүшелерге жібереді; бұл олардың алғашқы көрінісіне айналады, содан кейін олар хаттаманың кез-келген кейінгі жұмысына қатыса алады.
Қалпына келтіру кезінде қатысушы бұрын жасалған хабарлама үшін қайталанған міндеттеме ала алады. Егер солай болса, ол жеткізу кезеңіне өтеді, бірақ хабарламаны немесе бағдарламаға көріністі қайта жеткізбейді.

Жеткізу қадамы

Егер мүше Commit хабарламасын алса, ол байланысты хабарламаны (хабарламаларды) немесе жаңа көріністерді (лерді) көшбасшы ұсынған тәртіпте қосымшаға жеткізеді. Көшбасшы бұл қадамның сенімді 1-ден 1-ге дейінгі арна қолданған мақтаулар алынған кезде сәтті болғанын біледі.

Хабарлама ағыны: қарапайым Gbcast, қарапайым жағдай

(Кворум мөлшері = 2, көрініс1 = {A, B, C})

Мүшелер жетекшісі мүшелер өтінім қабаты A A B C A B C | | | | | | | | X --------> | | | | | | | Көшбасшыдан мультикаст жіберуді сұраңыз M | X ---------> | -> | -> | | | | Ұсыныңыз (1.1: M) (1 көрінісі, 1 реттілігі, M хабарламасы) | | <--------- X - X - X | | | Уәде (1.1) | X ---------> | -> | -> | | | | Міндеттеме (1.1) | | <---------X--X--X------> M-> M-> M Берілген (1.1); M | жеткізеді | | | | | | |


Негізгі Gbcast қателіктері

Ең қарапайым қателіктер - бұл бір немесе бірнеше мүше сәтсіздікке ұшыраған, бірақ кворум белсенді болып қалады. Төмендегі мысалда топ жетекші рөлді ойнайтын А-мен бірге {A, B, C} тұрады. C уәде беру кезеңінде сәтсіздікке ұшырайды және көшбасшыдан процесске дейінгі сенімді арнада күту уақыты пайда болады C. Сондықтан көшбасшы М жеткізуді жүзеге асырады, бірақ жою туралы хаттаманы бір уақытта бастайды C {A, B} жаңа көрінісін құратын топтан. Егер С іс жүзінде сәтсіздікке ұшырамаған болса, онда ол енді топқа қайта қосыла алады, бірақ жаңа инкарнация нөмірімен: шын мәнінде, С қайтадан С 'ретінде қосылуы керек. С-дан А-ға немесе В-ға дейінгі кез-келген хабарламалар сәтте қабылданады, олардың әрқайсысы айқын сәтсіздік туралы біледі: С және А-дан аулақ болады.

Хабарлама ағыны: Негізгі Gbcast, Лидерден басқа мүшенің істен шығуы

(Кворум мөлшері = 2, көрініс1 = {A, B, C})

Мүшелер жетекшісі мүшелер өтінім қабаты A A B C A B C | | | | | | | | X --------> | | | | | | | Сұраныс (M) | X ---------> | -> | -> | | | | Ұсыныңыз (1.1: M) | | | | * | | * !! C ЖҰМЫС !! | | <--------- X - X | | Уәде (1.1) | X ---------> | -> | | | Міндеттеме (1.1); Ұсыну (1.2: «С-ны алып тастау») | | <---------X--X---------> M-> M Берілген (M); Жеткізеді М; Уәде (1.2) | X ---------> | -> | -> | | | Міндеттеме (1.2); | | <---------X--X--X------> V-> V Берілген (1.2); View2 = {A, B} | жеткізеді | | | | | 


Міндеттеме мен жаңа Ұсыныс (және қателік туралы хабарлама) бір хабарламаға біріктірілгеніне назар аударыңыз. Бұл жаңа сәтсіздіктен кейін іс-әрекет жасайтын кез-келген процестің бір уақытта сол сәтсіздік туралы біліп, байланысты процесстен аулақ болуын қамтамасыз етеді және бұл процесс көріністен тез алынып тасталады. Егер C апатқа ұшырамаған болса, онда ол өзінің инкарнациясының санын көбейтіп (енді ол C 'деп аталады) қайта қосыла алады, содан кейін оны көшбасшы топқа қайта қосуды сұрайды. Ол жаңа атауымен мүшелік тізіміне қосылады және көзқарас мүшелері арасында ең жоғары дәрежеге ие болады (өйткені ол ең жас мүше).

Хабарлама ағыны: Basic Gbcast, {D, E, F} мүшелерін қосыңыз, көшбасшыдан басқа мүшенің сәтсіздігі

Төменде келтірілген мысалда бастапқыда {A, B, C} мүшелері бар топқа {D, E, F} қосу сұралады, бірақ хаттама кезінде С мүшесі сәтсіздікке ұшырайды. Мүшелікті өзгерту туралы сұраныстар мультикасттың ерекше түрі ретінде қарастырылады және оқиғалардың реттілігі бірдей. Мәселен, мысал алдыңғы мысалмен бірдей, бірақ қазір қосымшаға бірнеше жаңа оқиғалар жеткізілді (кворум мөлшері = 2, көрініс1 = {A, B, C})


Мүшелер жетекшісі мүшелер өтінім қабаты A A B C D E F A B C D E F | | | | | | | | | | | X --------> | | | | | | | | | | Сұраныс («D, E, F қосу») | X ---------> | -> | -> | | | | | | | Ұсыну (1.1: «D, E, F қосу») | | | | * | | * | | | !! C БІЛМЕЙДІ !! | | <--------- X - X | | | | | Уәде (1.1) | X ---------> | -> | | | | | | Міндеттеме (1.1); Ұсыну (2.1: «С-ны алып тастау») | | <---------X--X-----X--X--X------> V-> V ----> V-> V-> V Берілген (1.1); View2 = {A, B, C, D, E, F} жеткізіңіз; Уәде (2.1) | X ---------> | -> | ----> | -> | -> | | | | | | Міндеттеме (2.1) | | <---------X--X-----X--X--X------> V-> V ----> V-> V-> V Берілген (2.1); View3 = {A, B, D, E, F} жеткізіңіз | | | | | | | | | | |


Хаттаманың соңында жаңа белсенді көрініс - view3 = {A, B, D, E, F}, ал кворумның жаңа өлшемі - 3. Бірақ «аралық» көрініс болғанын ескеріңіз, view2 = {A, B , C, D, E, F} кворумның мөлшері 4-ті құрайды. Егер лидер С-ны алып тастаған ұсыныс кезеңіне 4 уәде алмаған болса, онда ол қарау кезеңін іске асыра алмас еді. Бұл негізгі саясатты бейнелейді: жаңа көріністі жасау үшін қажетті кворум әрқашан алдыңғы көріністің көлеміне негізделеді.

Көшбасшы сәтсіз болған кезде сатып алу протоколы

Келесі сәтсіздік жағдайы - бұл көшбасшы сәтсіздікке ұшырап, нәтижесінде жаңа лидер пайда болады. Көшбасшы болу үшін жаңа лидер алдымен иемдену хаттамасын жасайды, содан кейін жаңа көшбасшы жоғарыдағыдай негізгі Gbcast-ты басқара алады. Басып алу протоколы келесідей:

Анықтама сатысы

Жаңа басшы 1-ден -n сәтсіздікке ұшыраған мүшелерден олар жеткізуге уәде берген кез-келген хабарламалар туралы сұрау жүргізетін хабарлама.

Уәде-тізім бойынша қадам

Әрбір алушы уәде етілген хабарламалардың ағымдағы тізімін көшбасшыға жібереді. Егер алушыға өзінің алғашқы көрінісі жетіспесе, ол көшбасшыға алғашқы көрініске сұраныс жібереді.
Жаңа басшы байланыған мүшелерінің әрқайсысынан уәделер тізімін алғанша немесе уақыты аяқталғанша күтеді. Егер күту уақыты орын алса, онда жаңа басшы аталған мүшеден күдіктенеді және басқа мүшелер сияқты, одан аулақ болады. Төменде түсіндірілгендей, бұл аталған мүшелерді қоспайтын көзқарас ұсынады.

Қажет болса, қайталаңыз

Жаңа басшы уәделер тізімін зерттейді, жаңа мүшелер қосатын мүшелік ауыстыру туралы хабарламаларды іздейді. Егер бар болса, бұл жаңа мүшелерге сұрақтар жіберіп, сұрау кезеңі мен уәде тізімін жинау кезеңін қайталайды. Бұл өз кезегінде одан әрі мүшелер қосатын қосымша ұсыныстардың ашылуына әкелуі мүмкін. Процесс әрбір мүше (қазіргі немесе қосылуға ұсынылған) уәделер тізімімен жауап бергенде немесе жаңа басшы күдіктенгенде тоқтатылады.

Кворумдардың бар-жоғын тексеріңіз

Сұрау кезеңінің соңында көшбасшы өзі байланысқан кейбір процестерден жауаптар алды; кез-келген жауап бермеген мүшелер күдіктенетін болады. Жаңа басшы ұсынылған көзқарастардың тізімін жасайды. Бастапқы ұсыныстың келесі қадамына өту үшін жаңа басшы осы тізім бойынша берілген немесе ұсынылған көзқарастардың әрқайсысынан жауаптар кворумын алған болуы керек. Егер ол тізімдегі кез-келген жасалған немесе ұсынылған көзқарас үшін жауап кворумын ала алмаса, жаңа көшбасшы көшбасшы бола алмады және ешқашан қол жеткізе алмайды. Ол протоколды тоқтатады және жүйеге жаңа мүше ретінде қайта қосылуы керек, жаңа процестің инкарнациялық нөмірін қолданады.

Жаңа көшбасшы ретінде бастаңыз

Кворумдарды сәтті тексеріп, жаңа көшбасшы көшбасшы болады. Ол енді негізгі хаттаманы іске қоса алады. Ол кез-келген уәде етілген хабарламаларды немесе қарау өзгертулерін оларды уәделер тізімінен білген ретімен қайта ұсынады, оларды қараудың өзгеруі туралы жаңа пәрменмен бірге, ескі басшыны және тергеу кезеңінде жауап бере алмаған басқа мүшелерді алып тастайды. . Егер кез-келген мүше уәделер тізімі кезеңінде өзінің алғашқы көзқарасы жоқ деп жауап берсе, жаңа басшы сол мүшеге тиісті бастапқы көріністі жібереді.

Көшбасшылардың дуэлі

Мүмкін, уәделер тізімінде бір слотқа арналған екі немесе одан да көп нақты ұсыныстар болуы мүмкін. Бұл бірінші лидер А жүйеден бөлінген жағдайда ғана болады, бірақ ол ұсыныс жасады X бұл тек мүшелердің шағын (кворумсыз) жиынтығы көрген. Содан кейін жаңа жетекші Б сәтті қабылдады, бірақ А-ның ұсынысы туралы білмеді (ол мүмкін емес). B енді Y-ді ұсынады, тағы да аздаған мүшелер. Енді B сәтсіздікке ұшырады деп саналады және C оны алады. С ұсыныстарды білуі мүмкін X және Y, сол слот үшін. C ескі лидермен байланысты ұсынысты ескермеуі керек, бірақ жаңа лидермен байланысты ұсынысты B сақтауы керек: бұл жағдайда ұсыныс X кворумға қол жеткізе алмады және демек, ол жақындаған бола алмайды, ал жақында көшбасшы жасаған Y ұсынысы орындалуы мүмкін еді (әйтпесе, егер Х кворумға жеткенде, Б білген болар еді, демек қайталанған X ұсынысы; осылайша B білмегендіктен X, X кворум алмаған болуы керек).
С-ны қабылдау хаттамасында сол ұсынысты анықтау үшін А және В көшбасшылары арасындағы детерминирленген бұйрық қолданылады X құрдымға кетті, өйткені лидер В болу үшін А-дан қашқан болуы керек. Керісінше, С, Y ұсынысы С орындалуы мүмкін деп ойлауы керек, тіпті А, В сәтсіз аяқталды деп күдіктенсе де, өйткені Y ұсынысы С-ның қабылдау қадамымен қиылысқан. Ереже жүзеге асырылады: көшбасшыларды ретімен нөмірлеу және көшбасшы нөмірін ұсынысқа қосу. Сұрастыру кезінде жаңа басшы көбірек ұсыныспен көбірек бола алады, егер ол сол слотқа қарама-қайшы ұсыныстар алса.

Күдіктер шығыс хабарламалардағы кері байланыс

Назар аударыңыз, жаңа басшы ескі лидер сәтсіздікке ұшырады деп санайды, сонымен қатар басқа мүшелер сәтсіздікке ұшырады деп сенуі мүмкін. Сонымен, тергеу кезеңінде немесе жаңа ұсыныс кезеңінде бір немесе бірнеше мүшелер үшін қате туралы хабарламалар болуы мүмкін.. This is a central requirement for the protocol, because it ensures that those members will subsequently be shunned: if further communication is received from a shunned member, the receiver will reject those messages. It follows that if any member executes the promise-list phase for an old leader L, no further propose or commit messages from L will be processed by that member. From this we can see that the promise-list collected by the new leader will be complete, containing all promised messages that could possibly have achieved a quorum in the current view. It may also contain some additional promised messages that have not yet achieved a quorum.

Message flow: Basic Gbcast, failure of Leader, TakeOver, Basic Gbcast by the new leader

(Quorum size = 2, view 1={A,B,C})


Member   Leader        Members      Application Layer          A  B          A  B  C       A  B  C  | | | | | | | | X----->| | | | | | | Request(M)  | X------------>|->| | | | | Propose(1.1: M) !! Leader fails during send, Propose doesn't reach C !! | *<------------X—-X  | | | | Promise(1.1)   | | *  | | *  | | !! A (THE LEADER) HAS FAILED !! | | | | | | !! NEW LEADER: B !! | ?------------>|->| | | Inquire("B is taking over because A has failed")  | |<------------X--X          | | PromiseLists(1.1: M)  | X------------>|->| | | Propose(1.1: M); Propose(1.2: "remove A")  | |<------------X--X--------->| | Promise(1.1); Promise(1.2)   | X------------>|->|--------->| | Commit(1.1); Commit(1.2); | |<------------X--X-------->M;V->M;V  Committed(1.1); Committed(1.2); Delivers(M). Delivers view2={B,C}


Message flow: Basic Gbcast, Add members {D,E,F}, failure of the Leader

As an example of a more complex case, here the leader fails in the middle of a commit that increases the size of the view

(Quorum size = 2, view 1={A,B,C})


Member   Leader        Members                Application Layer          A  B          A  B  C  D  E  F       A  B  C  D  E  F  | | | | | | | | | | | | | | X----->| | | | | | | | | | | | | Request("add D, E, F")  | X------------>|->| | | | | | | | | | | Propose(1.1) !! Leader fails during send, Propose doesn't reach C !! | *<------------X—-X  | | | | | | | | | | Promise(1.1)   | | *  | | | | | *  | | | | | !! A (THE LEADER) HAS FAILED !! | | | | | | | | | | | | !! NEW LEADER: B !! | ?------------>|->| | | | | | | | | Inquire("B is taking over because A has failed")  | |<------------X--X  | | | | | | | | PromiseLists(1.1: "add D, E, F"); | ?-------------|--|->|->|->| | | | | | Iterated Inquire("B is taking over because A has failed")  | |<------------|--|--X--X--X          | | | | | PromiseLists(1.1: "add D, E, F"); | X------------>|->|->|->|->| | | | | | Propose(1.1: "add D, E, F"); Propose(2.1: "remove A")  | |<------------X--X--X--X--X          | | | | | Promise(1.1); Promise(2.1); | X------------>|->|->|->|->| | | | | | Commit(1.1); Commit(2.1); | |<------------X--X->X->X->X -------->V->V->V->V->V  Committed(1.1); Committed(2.1); Delivers                                                                   view2={A,B,C,D,E,F}. Delivers view3={B,C,D,E,F}


In this example we see the inquiry iteration "in action": B learns of the protocol that adds {D,E,F} in a first phase of the inquiry, hence it repeats the inquiry, this time contacting D, E and F. There is no need to repeat the inquiry at C since this would simply return the same information previously obtained.

In this example, the final commit actually causes two views to be delivered in succession at members B and C. Even though the two proposals were sent concurrently, the commit for view2 requires a promise from a quorum of view1, whereas the commit for view3 requires a quorum response from the members of view2. Although the sending of initial views isn't explicitly shown in the diagram, the joining members don't participate in the 1.1 protocol because they don't join the group until view2. Notice that at members B and C a pipelining effect arises: events associated with view2 are already being proposed even as events in view1 are still being committed.

Дұрыстық

To show that Gbcast satisfies non-triviality we start by tracing backwards from an arbitrary delivery action to the point at which a client requested the corresponding event; clearly, only messages that were legitimately sent will be delivered. However, nontriviality for this protocol goes further: we must also show that messages from a given member are delivered only while that member is still a live participant in some view. Accordingly, we look at the case in which the leader initiates some multicast but then fails before it is delivered. Here, the new leader either discovers the pending proposal, and will order it before the view-change event, or the new leader fails to discover the pending proposal, in which case all members of the new view will shun any late-arriving incoming message from the old leader. Thus either a multicast message is delivered while the view in which it was sent is still pending, or it will not be delivered at all.

To establish consistency we begin by analysis of the case in which there is just a single leader that never fails or loses connectivity with a quorum. Since the leader sequences the events and includes each member starting with the first view that contains that member, all members deliver the identical messages starting from the view in which they were added to the system.

When a new leader takes over, the inquiry is required to reach a quorum of members for the most recent committed view. This quorum necessarily will include at least one process that received any proposal that the old leader could have committed. Thus the new leader will learn of any potentially committed proposal and include it as a preflix to its own new proposals. It follows that if any process delivers any event, then if the system makes progress, every surviving member will eventually deliver that same event and in the same order.

We can show that a joining member will receive its initial view by analysis of the two relevant cases. If the leader doesn't fail, it sends the initial view on an eventually reliable channel. If the leader does fail and some member lacks its initial view, the new leader sends that view after receipt of the "promise-list" response to its inquiry-phase message.

A logical partitioning of the group is impossible because of the shunning rule. In order to commit any new view, the old leader must obtain promises from a quorum of the current view. A new leader, taking over, will learn of any view that could have become committed. To commit its own proposed next view, it will thus be required to interact with a quorum of that intermediary view, if any. In a scenario that could lead to partitioning, the leader, A, might have timed out on B and gone on to create a sequence of new views and events that excluded B. But in this case a majority of the old or of the intermediary view members will have learned that A believes B to have failed, and will shun B when it inquires. In either case, B is prevented from obtaining a quorum and hence cannot make progress. A symmetric argument shows that if B succeeds in defining a new view that excludes A, A would be unable to obtain a quorum for any other new view that it might attempt to propose.

Liveness

The Gbcast protocol will make progress provided that at all times in the execution, if view v уақытында ұстайды т, then less than a quorum of members of v fail (or are suspected as failing) within some subset of the members of the view. To maximize progress, it is important that excluded but still live members rejoin the group, so that erroneous failure detections don't cause the view to shrink in a persistent manner. However, the protocol will not recover and make progress if at any time, every process suspects more than a quorum of members of the current view of having failed.

This property is similar to but "stronger" than <>W, the "weakest failure detector" for achieving consensus, as defined by Chandra and Toueg. To see this, consider a run in which a mutually suspecting quorum arises "too quickly" for processes that have been wrongly excluded from the view to rejoin it. Gbcast will not make progress and, indeed, the group will need to shut down and restart.

Arguably, such runs would be unlikely in the kinds of data centers where Gbcast is typically used, but clearly they can be constructed in an adversarial manner.

Discussion: Failure sensing

The Gbcast protocol presumes that the probability of incorrect failure suspicions will be low; the scheme breaks down if failure suspicions occur frequently and operational processes are often suspected as faulty. By analogy, consider the TCP protocol, in which the failure to receive an acknowledgement will eventually cause a connection to break. TCP is used nearly universally, a tremendous disruption to the Web would result if TCP connections frequently were to break when neither endpoint has failed. Thus timeouts are set conservatively. A similar assumption is required for systems that use Gbcast.

In contrast, there are other failure detection schemes, such as the one explored by Chandra and Toueg, that can yield high rates of incorrect failure suspicions. Some protocols, including Paxos, are able to tolerate incorrect failure suspicions without any costly consequence. Whether one approach is inherently better than the other is beyond the scope of this discussion. We simply underscore that the approaches differ, and that Gbcast would be ineffective if timeouts are set overly aggressively.

One extreme scenario is worthy of further mention: network partitioning events. Modern data centers and networks often experience events in which a single machine and all the processes on it becomes transiently partitioned from a larger pool of machines that remain connected to one another. Such cases are treated as failures in Gbcast, but if the surviving, connected members include a sufficiently large number of processes, the majority portion of the system will simply reconfigure itself to exclude the disconnected member. It can reconnect and rejoin the group later when the partition heals.

A more extreme kind of partitioning is sometimes seen in data centers: in this situation, a network switch might fail, causing a collection of machines (perhaps, a whole rack or even an entire container) to become disconnected from the Internet and from the remainder of the data center. In such cases one could imagine a group in which all members begin to suspect all other members; Gbcast will not progress in this case and the management infrastructure would need to relaunch the entire application. On the other hand, in most large data centers, the operating systems of the machines experiencing such a failure would also shut down, restarting only when connectivity is restored. Thus in practice, the restart of the system is unavoidable. This said, there are protocols, such as Paxos, that could ride out such an outage if the machines themselves were to remain operational and later regained adequate connectivity.

The Transis system explored extensions to the Gbcast protocol that permit multiple partitions to form, to make independent progress, and then to remerge. This topic, however, is beyond the scope of the present discussion.

Discussion: Dueling leaders

In the Paxos protocol, a situation can arise in which two or more leaders "duel" by proposing different commands for the same slot. This can also occur in Gbcast.

In the normal sequence of events, one leader takes over because the prior leader has failed, learns of any proposals the prior leader made during the inquiry phase, and then repeats those same proposals, extended with new ones. Thus no duel over the content of slots arises because the same proposals are repeated in the same slots.

The closest situation to a duel is seen if the old leader has become partitioned from the majority and the new leader, taking over, is unable to contact some set of members (but does obtain the required quorum during the INQUIRE phase). Here the new leader may be unaware of some proposals that the old leader made, or might still issue, if those reach only the members the new leader didn't contact.

The shunning mechanism resolves such duels. When the new leader obtained a quorum during the INQUIRE phase, it also blocked the old leader from ever again achieving a quorum for any new PROPOSE it might initiate: a majority of members are now shunning the old leader. Thus if any proposal is missed by the new leader it necessarily is a proposal that didn't reach a quorum of members, and won't reach a quorum in the future. Moreover, members aware of such a proposal will be shunned by the new leader, since (when it gave up waiting for them to respond to its INQUIRE) it considers them to have failed. Any member learning of new proposals from the new leader will shun them as well.

Shunning of leaders in Gbcast occurs in the pre-determined order of leader ranks: a higher-ranking leader only shuns a lower-ranking leader when it tries to take-over its place. The Paxos ballots mechanism serves precisely the same purpose, but differs in allowing participants to attempt to take-over repeatedly, eaach time assuming a new ballot ("rank"). The result is that, one the one hand, Paxos leader demotion is reversible, and on the other, dueling leaders could theoretically continue forever.

Bi-simulation equivalence to Paxos

Although superficially quite different, upon close study Gbcast is seen to be surprisingly similar to Paxos. Indeed, Paxos can be "transformed" into Gbcast with the following (reversible) sequence of steps. For brevity we describe these steps informally and omit a detailed proof.

Note that this transformation does not address durability. Gbcast treats durable state as a property of the application, not the protocol, whereas Paxos logs events to a set of durable command logs, and hence can still recover its state even after the whole service is shut down and restarted. The equivalent behavior with Gbcast involves having the application log all received messages, but that case will not be considered here.

  1. Start with the basic Paxos protocol. Add a process incarnation number to distinguish a rejoining process from one that has been continuously a member of the view. Impose an age-based ordering on the members of the group, designate the oldest member (breaking ties lexicographic) as the leader. Non-leaders issue requests through the leader.
  2. Both protocols permit batching of requests: Basic Paxos has a concurrency parameter, alpha: a leader can concurrently run a maximum of alpha instances of the protocol. Gbcast permits the leader to propose multiple events in a single protocol instance, which could be message deliveries or view events.
  3. Paxos does not normally require reliable, ordered communication. Modify the protocol to run over the reliable one-to-one channel abstraction (a one-to-many message would be sent by Paxos over a set of one-to-one channels). We can now assume that any message sent will either be received and delivered in order, or that a timeout will occur at the sender side.
  4. The Paxos slot number will become the Gbcast sequence number. The Paxos ballot number is, in effect, transformed into the proposing leader-number used to discriminate between conflicting proposals during the inquire step.
  5. Define a category of view-modifying commands that operate by adding or removing processes from the group membership. Introduce a failure detection mechanism as used in Gbcast, asking the leader to remove any timed-out members. A member removed from the group that reestablishes connectivity to the group should rejoin with a new incarnation number. Report views by upcalls to the application.
  6. Basic Paxos can propose a multicast to just a quorum of group members, hence a typical member may have gaps in its command list. This is why, in Paxos, a learner must read a quorum of members and merge their command lists. In our modified protocol, any multicast is proposed to all non-failed members, while failed members are dropped from the view. Thus unlike Paxos, our modified protocol has the property that any single live member has the full committed event list. In effect, the protocol has a write quorum equal to the current membership view size, and a read quorum of 1. This can be convenient when building applications that maintain the actual state of a database or object and for which it is inconvenient to represent state as a series of updates in command lists that must be merged to learn the actual sequence of events.

The same quorum mechanisms that define Paxos, including the inquiry used when a new Paxos leader takes over, are now seen to correspond precisely to the steps of Gbcast. The ballot mechanism, generally viewed as the hallmark of Paxos protocols, reduces to a counter that tracks the order of succession of leaders. This simplification is fundamentally due to the guarantee that once a leader is suspected, it will be removed from the view and would need to rejoin before participating in the protocol.

It follows that Gbcast and Paxos can be transformed, each to the other, without changing assumptions and with the identical correctness properties. Obviously, the protocols don't look very similar, but they have a deep connection. Indeed, one can make a stronger claim: any sequence of delivery events exhibited by Gbcast can also arise in some run of Paxos, and vice versa: any sequence of learned events from Paxos can also arise in some run of Gbcast.

The type of proof outlined above is formally called a bi-simulation: one shows that any (input-sequence, output-behavior) pair that one protocol can exhibit is also possible with the other protocol. Notice that in carrying out a bisimulation, features that one protocol supports but the other lacks can be ignored if they are not considered to be part of the "behavior" being studied. For example, the Gbcast reporting of new views (events that Paxos lacks) are not treated as output events here.

Summary of differences between Paxos and Gbcast

  • Gbcast has no durable state: the protocol does not maintain a log of events on disk, and durability is treated as an application-specific property. In contrast, Paxos guarantees durability: after recovering from a complete shutdown of the system, a Paxos application will still be able to learn the full log of received messages.
  • In the propose phase, Gbcast must wait for responses from all participants (or for the maximal timeout and then suspect the remaining ones), instead of making progress with the fastest quorum. In Gbcast, the cost of a failure suspicion is high and the protocol may cease to make progress if too many failures are suspected, forcing a management layer to restart the entire application group. Thus, in practice, Gbcast requires conservative timeout settings relative to Paxos.
  • With Gbcast, if an error does occur (e.g. an operational process is suspected and shunned), that process must drop out (it can rejoin under a different name). With Paxos, if f>0, should a process be unable to participate in a protocol instance, it can continue to participate in subsequent protocol instances without error.
  • Operational members of a view will never have gaps in their command lists with Gbcast (every member has a complete state). Operational members can have gaps in their command lists when using Paxos (learners merge a quorum of lists in Paxos to "fill" these gaps).
  • With Paxos, to propose multiple commands we use alpha>1, but in this case commands can be committed in a different order from the order in which they were initiated (one case in which this problematic scenario is seen involves dueling leaders; leader A proposes commands a1 and a2, and leader B proposes commands b1 and b2; both then fail and leader C, taking over, ends up committing b2, and then a1: an outcome that might not be desired by the applications that initiated the requests [11]). With Gbcast, the leader can initiate multiple commands by issuing a single propose that describes a series of actions. The group will be committed all at once, hence the order of initiation will be respected.
  • With Gbcast, a command is delivered in the view in which it was initiated. Reconfigurable Paxos can commit a command in a slot associated with a membership view prior to the active membership view at the time when the commit occurs. Thus, in Paxos, if an application is in some way view sensitive, commands must carry a view identifier, so that recipients can determine whether or not the command is still executable.
  • Gbcast does not require that the protocol be halted when changing configurations: the rate of new proposals can be constant even across membership changes. For many implementations of reconfigurable Paxos, this would not be the case.
  • With both Gbcast and Paxos, reconfiguration is only possible if a quorum of the prior view is accessible and can acknowledge the new view. However, in Paxos, the requirement also extends to learning the outcomes of commands proposed for slots associated with the old view. In practice, this can cause the Paxos reconfiguration computation to extend over a longer period than for Gbcast, in which any state is stored within the application, not a long-lived command list: Paxos cannot discard the state associated with an old view until the new view is active and any replicas have learned the old state.
  • Gbcast does not require a garbage collection protocol because, as each message or view is committed and reported to the application it can be discarded. Paxos maintains state using a quorum scheme in the command logs at its acceptors, and requires a garbage collection protocol to free these command slots once the outcome is committed and all learners (replicas) have learned the outcome.

Liveness comparison

Both Paxos and Gbcast are subject to the FLP impossibility result.[9] Thus neither protocol can be guaranteed live under all possible conditions. At best we can talk about the conditions under which liveness is guaranteed, expressed as predicates on the failure detection mechanism: if the condition for liveness holds, then the protocol will be live. The liveness conditions of Basic Paxos and Gbcast are similar but not identical.

In Gbcast, progress will ешқашан resume if a circle of mutual suspicions arises, as noted above: once a quorum of mutually shunning processes arises, the shunning mechanism makes it impossible for any leader to obtain a quorum of promises.

With an (unmodified) Paxos protocol, this problem will not arise: once the excessive level of mutual suspicions ends, progress resumes. Thus Paxos makes progress with any failure-detection mechanism satisfying the <>W condition, even if periods arise during which more than a quorum of mutual suspicions occur.

For example, if we start with a group containing {A.B,C} and cause an extended network partition, Paxos would resume when the network partition resolves but Gbcast will shut down permanently and some form of management infrastructure may need to restart the system. If it is necessary to preserve group state across the failure, such an infrastructure would identify the last member to fail and restart the group using some form of checkpoint stored by that last member.

In Paxos deployments, it is common to require human operator intervention to reconfigure Paxos. In such settings, Gbcast may be able to make progress during period when Paxos cannot. Suppose that a group has membership that slowly drops to less than a quorum of the original group size. Gbcast can continue to operate with even a single member. Paxos would cease to make progress during periods when less than a quorum of its view are active.

Need for state transfer

Systems such as Isis that implement Gbcast typically provide a state transfer mechanism: at the instant the new view showing some joining member is delivered, some existing member makes a checkpoint of its copy of the group state. This is then copied to the new member, which loads the checkpoint as the initial group state as of the instant it joined. (Various out-of-band copying schemes can be used to pre-load some state prior to the join for cases where the state is too large to transfer at the last moment this way). State transfer is needed because in Gbcast, once a member is dropped from a group, it will no longer receive updates. Gbcast is typically used by applications that maintain their state in memory and apply updates one by one as received, hence once a gap arises, a replica is no longer useful.

Notice that this is in contrast to Paxos. In that protocol, gaps can arise as a consequence of the basic quorum update scheme, which doesn't guarantee that every member will see every update and can run over unreliable message passing layers that might never deliver some messages. The Paxos learner algorithm reads multiple histories and combines them to fill such gaps. Thus Paxos will normally ride out transient failures, continuing to operate without actually dropping the failed member from the group. The failed member misses updates, yet state transfer is not needed unless a group is being reconfigured.

Which dynamically reconfigurable state machine replication protocol came first?

The Gbcast protocol was published early in a period when several state machine protocols capable of managing their own membership were introduced: Gbcast, View-Stamped Replication (Oki and Liskov [12]), Basic Paxos (Lamport [5]), the partial synchrony protocol of Dwork, Lynch and Stockmeyer,[13] etc. Among these, Gbcast was the first to be published, in papers that appeared in 1985 and 1987; the others were published starting in 1988. One could thus argue that Gbcast was really the first Paxos protocol. Such a statement, however, treats "Paxos" as a fairly broad term covering a family of protocols that all implement state machine replication, all support dynamic reconfiguration of their membership, and have identical correctness properties but vary in their liveness conditions. Under this definition, Gbcast is a Paxos protocol.

If equivalence is formalized using bisimulation, in which any run that one protocol can exhibit is also exhibited by the other, and in which the assumptions made and the conditions for progress are identical, the comparison becomes more complex. Under this definition, Gbcast is not a Paxos protocol: although each can exhibit the same runs as the other (viewed purely in terms of requests from the application and notifications to the application), they have similar, but not identical, liveness conditions. However, this sort of stringent definition poses a different problem: if one adopts it, some versions of Paxos are not Paxos protocols. For example, "Cheap Paxos" and "Vertical Paxos" are not bisimulation-equivalent to Basic Paxos.[14]

Thus the question has no answer unless one makes it more specific, and has a different answer depending upon the definition of equivalence one uses.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ а б в Birman, Kenneth (Dec 1985). Replication and Fault-Tolerance in the ISIS System. 10th ACM Symposium on Operating Systems Principles. pp. 79–86.
  2. ^ а б Birman, Kenneth; Joseph, Thomas (February 1987). "Reliable Communication in the Presence of Failures" (PDF). Компьютерлік жүйелердегі ACM транзакциялары. 5: 47–76. дои:10.1145/7351.7478.
  3. ^ а б Birman, Kenneth (July 1999). "A Review of Experiences with Reliable Multicast". Software Practice and Experience. 29 (9): 741–774. дои:10.1002/(sici)1097-024x(19990725)29:9<741::aid-spe259>3.0.co;2-i. hdl:1813/7380.
  4. ^ а б Лампорт, Лесли (1978 ж. Шілде). "Time, Clocks and the Ordering of Events in a Distributed System". ACM байланысы. 21 (7): 558–565. дои:10.1145/359545.359563. Алынған 2007-02-02.
  5. ^ а б в Lamport, Leslie (May 1998). "The Part-Time Parliament". Компьютерлік жүйелердегі ACM транзакциялары. 16 (2): 133–169. дои:10.1145/279227.279229. Алынған 2007-02-02.
  6. ^ Schneider, Fred (1990). "Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial" (PDF). ACM Computing Surveys. 22 (4): 299–319. дои:10.1145/98163.98167.
  7. ^ а б Лампорт, Лесли; Малхи, Далия; Zhou, Lidong (March 2010). "Reconfiguring a State Machine". SIGACT жаңалықтары. 41 (1): 63–73. дои:10.1145/1753171.1753191.
  8. ^ Pease, Marshall; Robert Shostak; Leslie Lamport (April 1980). "Reaching Agreement in the Presence of Faults". Есептеу техникасы қауымдастығының журналы. 27 (2): 228–234. дои:10.1145/322186.322188. Алынған 2007-02-02.
  9. ^ а б Fischer, M. (April 1985). "Impossibility of distributed consensus with one faulty process". ACM журналы. 32 (2): 374–382. дои:10.1145/3149.214121.
  10. ^ Lamport, Leslie; Robert Shostak; Marshall Pease (July 1982). "The Byzantine Generals Problem". Бағдарламалау тілдері мен жүйелері бойынша ACM транзакциялары. 4 (3): 382–401. дои:10.1145/357172.357176. Алынған 2007-02-02.
  11. ^ Birman, Ken; Dahlia Malkhi; Robbert van Renesse (November 2011). "Virtually Synchronous Methodology for Dynamic Service Replication" (PDF). Microsoft Research TechReport MSR-2010-151. Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  12. ^ Oki, Brian; Barbara Liskov (1988). Viewstamped Replication: A New Primary Copy Method to Support Highly-Available Distributed Systems. PODC '88: Proceedings of the seventh annual ACM Symposium on Principles of Distributed Computing. 8-17 бет. дои:10.1145/62546.62549.
  13. ^ Dwork, Cynthia; Lynch, Nancy; Stockmeyer, Larry (April 1988). "Consensus in the Presence of Partial Synchrony" (PDF). ACM журналы. 35 (2): 288–323. дои:10.1145/42282.42283.
  14. ^ Lamport, Leslie (2012). Unpublished remark.