Кіріспе

Компьютерлік ғылымдағы түсінік Таратылған есептеу және көп агенттік жүйелерде негізгі мәселе - бірқатар ақаулы процестер болған жағдайда жалпы жүйелік сенімділікке қол жеткізу. Бұл көбінесе консенсусқа жету үшін процестерді үйлестіруді немесе есептеу кезінде қажет болатын кейбір деректер мәнін келісуді талап етеді. Консенсустың мысалдық қолдануы: қандай транзакцияларды қандай ретімен базаға жіберу керектігі туралы келісім, мемлекеттік машинаның репликациясы және атомдық хабар тарату. Көп жағдайда консенсусты талап ететін нақты әлемдегі қосымшаларға бұлтты есептеу, сағатты синхрондау, PageRank, пікір қалыптастыру, ақылды электр желілері, мемлекеттік бағалау, БПЛА-ны басқару (жалпы алғанда бірнеше роботтар / агенттер), жүктемені теңестіру, блокчейн және басқалар кіреді.

Мәселе сипаттамасы

Консенсус мәселесі бірнеше процестердің (немесе агенттердің) бірыңғай дерек мәніне келісуін қажет етеді. Кейбір процестер (агенттер) сәтсіз болуы немесе басқа жолдармен сенімді болмауы мүмкін, сондықтан консенсус протоколдары қатеге төзімді немесе орнықты болуы керек. Процестер өздерінің кандидаттық құндылықтарын алға қоюы, бір-бірімен қарым-қатынас жасап, бірыңғай консенсустық құндылық туралы келісуі керек. Консенсус мәселесі - көп агенттік жүйелерді басқарудағы негізгі мәселе. Консенсусты қалыптастырудың бір тәсілі - барлық процестердің (агенттердің) көпшілік құндылық туралы келісуі. Бұл жағдайда көпшілікке қол жетімді дауыс санының кем дегенде жартысынан көбі қажет (әр процеске дауыс беріледі). Алайда бір немесе бірнеше қате процестер нәтижесінде консенсусқа қол жеткізілмеуі немесе дұрыс емес қол жеткізілуі мүмкін нәтижелерді бұрмалауы мүмкін. Консенсус мәселелерін шешетін протоколдар шектеулі сандағы қате процестерді шешу үшін жасалған. Бұл протоколдар пайдалы болу үшін бірнеше талаптарға сәйкес болуы керек. Мысалы, тривиалды протоколда барлық процестер 1-ді екілік мәнді шығарады. Бұл пайдалы емес, сондықтан талап өндіріс кіріске байланысты болуы тиіс деп өзгертіледі. Яғни консенсустық протоколының шығыс мәні қандай да бір процестің кіріс мәні болуы тиіс. Тағы бір талап - процесс шығыс құнын бір рет қана шеше алады және бұл шешім қайтарып алынбайды. Егер әдіс қателіктерге ұшырамаса, онда ол орындалуында дұрыс болып саналады. Тоқтату сәтсіздіктеріне төзімді консенсус протоколы келесі қасиеттерді қанағаттандыруы керек.[1]. Ақыр соңында, әрбір дұрыс процесс белгілі бір құндылықты анықтайды. Салыстырмалылық Егер барлық дұрыс процестер бірдей мәнді ұсынса , онда кез келген дұрыс процесс келісуді шешуі керек Әрбір дұрыс процесс бірдей мәнді келісуі керек . Қолданбаға байланысты тұтастықтың анықтамасы бойынша өзгерістер орынды болуы мүмкін. Мысалы, тұтастықтың әлсіз түрі шешімнің мәні кейбір дұрыс процесс ұсынған міндетті түрде олардың бәріне тең емес құндылыққа тең болуы керек. Аутентификацияның екі түрлі үлгісі жиі ауызша байланыс және жазбаша байланыс үлгілері деп аталады. Ауызша байланыс үлгісінде ақпараттың тікелей көзі белгілі, ал күшті, жазбаша байланыс үлгілерінде қабылдаушының әрбір қадамы хабардың тікелей көзін ғана емес, хабардың қарым-қатынас тарихын да біледі.

Консенсустың кіріс-шығыстары

Paxos сияқты ең дәстүрлі бір мәнді консенсус протоколдарында, ынтымақтасқан түйіндер бүтін сан сияқты бір мәнге келіседі, ол деректер қорына берілген мәміле сияқты пайдалы метадеректерді кодтау үшін өзгермелі мөлшерде болуы мүмкін. Бірыңғай мән консенсусы проблемасының арнайы жағдайы, екілік консенсус деп аталады, кірісті және осылайша шығыс аймағын {0,1} бір екілік цифрға шектейді. Өздері өте пайдалы болмаса да, екілік консенсус протоколдары көбінесе жалпы консенсус протоколдарының, әсіресе асинхронды консенсус үшін құрылыс блоктары ретінде пайдалы. Multi Paxos және Raft сияқты көп мәнді консенсус протоколдарында мақсат - бір ғана мәнге емес, уақыт өте келе сан сан мәндерге келісу, яғни бірте-бірте өсіп келе жатқан тарихты қалыптастыру. Көп мәнді консенсусқа бір мәнді консенсустық протоколды бірнеше рет орындау арқылы жету мүмкін болса да, көптеген оңтайландырулар мен басқа да ескертулер, мысалы қайта конфигурациялау қолдау, көп мәнді консенсустық протоколды тәжірибеде тиімдірек ете алады.

Асинхронды және синхронды жүйелер

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

Асинхронды детерминистік консенсустың FLP мүмкін еместігі

Толығымен асинхронды хабарламаны таратудың бөлінген жүйесінде, онда кем дегенде бір процестің апатты сәтсіздікке ұшырауы мүмкін, бұл белгілі 1985 жылы ФЛП мүмкін еместігі Фишер, Линч және Паттерсонның консенсусқа жетудің детерминистік алгоритмі мүмкін емес екендігі дәлелденді. Бұл мүмкін еместік нәтижесі ең нашар сценарийлер кестесінен туындайды, олар желідегі қызмет көрсетуден бас тарту шабуылшысы сияқты қарсы жағдайлардан басқа тәжірибеде орын алуы мүмкін емес. Әдеттегі жағдайларда процестерді жоспарлауда табиғи кездейсоқтық бар.

Рұқсат етілген консенсус пен рұқсат етілмеген консенсус

Консенсус алгоритмдері дәстүрлі түрде қатысушы түйіндердің жиынтығы белгіленген және бастапқыда берілген деп санайды: яғни, кейбір алдыңғы (қолмен немесе автоматты) конфигурация процесі белгілі бір белгілі қатысушыларға рұқсат берді, олар бір-бірін топ мүшелері ретінде растай алады. Осындай анық анықталған, аутентификацияланған мүшелері бар жабық топтың болмауы кезінде, ашық консенсус тобына қарсы Сибил шабуылдары тіпті Византиялық консенсус алгоритмін де жеңе алады, бұл қатеге төзімділік шегін басып тастауға жеткілікті виртуалды қатысушылар құру арқылы. Рұқсатсыз консенсус протоколы, керісінше, желідегі кез-келген адамға динамикалық түрде қосылуға және алдын ала рұқсатсыз қатысуға мүмкіндік береді, бірақ оның орнына Сибил шабуыл қаупін азайту үшін басқаша жасалма шығындар немесе кіру кедергісі қолданылады. Биткоин жұмыс дәлелін және қиындықты реттеу функциясын пайдалана отырып, бірінші рұқсатсыз консенсус протоколын енгізді, онда қатысушылар криптографиялық хэш-жаңылмаларды шешу үшін бәсекелеседі және ықтималдықпен блоктарды жасау құқығын алады және олардың жұмсаған есептеу күш-жігеріне пропорционалды түрде байланысты сыйақылар алады. Бұл тәсілдің жоғары энергия шығындарынан туындаған, кейіннен рұқсатсыз консенсус хаттамалары Сибил шабуылдарынан қорғау үшін басқа да баламалы қатысу ережелерін ұсынды немесе қабылдады, мысалы, үлесті растау, кеңістікті растау және билікті растау.

Келісімнің теңдестігі мәселелері

Келісудің үш қызықты мәселесі төмендегідей.

Кейбір келісім проблемалары бойынша төлемділік нәтижелері

Бұл жағдайда t тұрақты анонимді синхронды протокол бар, ол Византиялық генералдар мәселесін шешеді, егер және Византиялық генералдар жағдайының әлсіздігі дәлелдену үш түйін жағдайының мүмкін еместігін көрсету арқылы және процессорлардың бөлімдері туралы пікір алысу үшін осы нәтижені пайдалану арқылы жасалады. Жазбаша хабарламалар үлгісінде төзімділік танытатын протоколдар бар. Алайда, FLP консенсусқа ешқашан қол жеткізілмейтінін айтпайды: модельдің болжамдары бойынша, ешқандай алгоритм әрқашан шектелген уақытта консенсусқа жете алмайды. Іс жүзінде бұл өте сирек кездеседі.

Кейбір консенсус хаттамалары

Лесли Лэмпорттың Paxos консенсус алгоритмі және оның Raft сияқты нұсқалары кең таралған үлестірілген және бұлтты есептеу жүйелерінде кеңінен қолданылады. Бұл алгоритмдер әдетте синхронды, жетістіктерге жету үшін сайланған басшыға тәуелді және Византиялық сәтсіздіктерге емес, апаттарға ғана төзімді. Византиялық сәтсіздіктерге төзімділік танытатын полиномиалдық уақыт бинарлық консенсус протоколының мысалы - Гарей мен Берманның Фазалық Кинг алгоритмі. Алгоритм n процестермен және f сәтсіздікке дейін, n > 4f болған жағдайда, синхронды хабарламаны өткізу үлгісінде консенсусты шешеді. Фазалық король алгоритміне сәйкес f + 1 фаза бар, әрбір фазада 2 раунд бар. Әрбір процесс өзінің таңдаған шығысын (алғашқыда процесстің өз кіріс құнына тең) қадағалайды. Әрбір кезеңнің бірінші кезеңінде әрбір процесс өзінің артықшылықты құндылығын барлық басқа процестерге таратады. Содан кейін ол барлық процестерден алынған мәндерді алады және қай мәннің көпшілік мәнін және оның санын анықтайды. Фазаның екінші кезеңінде, ID-і ағымдағы фаза нөміріне сәйкес келетін процесс фазаның патшасы болып тағайындалады. Патша бірінші раундта байқалған басымдық бағасын шығарады және теңдікті бұзушы ретінде қызмет етеді. Әрбір процесс өзінің артықшылықты мәнін келесідей жаңартады. Егер бірінші раундта байқалған процестің көпшілік мәнінің саны n/2 + f-тен үлкен болса, процесс өзінің басымдығын осы көпшілік мәнге ауыстырады; әйтпесе ол фазалық патшаның мәнін қолданады. f + 1 кезеңінің соңында процестер өздерінің артықшылықты мәндерін шығарады. Google Chubby деп аталатын бөлінген құлыптар кітапханасын іске қосты. Chubby кілт туралы ақпаратты шағын файлдарда сақтайды, олар қайталанған деректер базасында сақталады, бұл сәтсіздікке ұшыраған кезде жоғары қол жетімділікке қол жеткізу үшін. Деректер базасы Paxos консенсустық алгоритміне негізделген қатеге төзімді журналды қабатының үстінде іске асырылады. Бұл схемада Chubby клиенттері қайталанған журналды қол жеткізу / жаңарту үшін Paxos шеберімен байланысады; яғни файлдарды оқу / жазу. Көптеген онлайн-реалдық стратегиялық ойындар ойыншылардың арасындағы ойын жағдайын басқару үшін консенсустық протокол ретінде модификацияланған lockstep протоколын қолданады. Әрбір ойын әрекеті ойынның барлық басқа ойыншыларына жалпы ойын жағдайының хэшімен бірге ойын жағдайының дельта-таратуын тудырады. Әр ойыншы өз ойын жағдайына дельтаны қолдану арқылы және ойын жағдайының хэшін салыстыру арқылы өзгерісті растайды. Егер хэштер келіспесе, онда дауыс беріледі, ал ойын жағдайы азшылықта болған ойыншылар ажыратылады және ойыннан шығарылады (десинк деп аталады). Басқа белгілі тәсіл - MSR типті алгоритмдер, олар компьютерлік ғылымнан бақылау теориясына дейін кеңінен қолданылған. Көз Синхрондық Аутентификация Шектілік Түзетулер Pease Shostak Lamport Асинхронды Ауызша (күтілетін) күтілетін түстер Dolev et al. Синхронды Ауызша жалпы байланыс Долев Қуатты Синхронды Ауызша (күтілетін) Катц Куо Синхронды Жазбаша (күтілетін) Қоғамдық кілт инфрақұрылымын (PKI) талап етеді PBFT Синхронсыз (қауіпсіздік) Синхронды (жандылық) Ауызша HoneyBadger Синхронды Ауызша (күтілетін) tx-ке байланысты байланыс үшін ашық кілт шифрлау қажет Abraham et al. Синхронды жазбаша византиялық келісім тривиалды синхронды қолтаңбалар (күтіледі) Цифрлық қолтаңбалар қажет

Бірлестік нөмірі

Ортақ жад жүйесіндегі консенсустық мәселені шешу үшін бір мезгілдегі объектілер енгізілуі керек. Бір мезгілдегі объект немесе ортақ объект - бұл бір мезгілдегі процестердің келісімге жету үшін қарым-қатынас жасауға көмектесетін дерек құрылымы. Қауіпті бөлімдерді пайдаланатын дәстүрлі іске асырулар, егер кейбір процесс маңызды бөлім ішінде өліп кетсе немесе ұзақ уақыт бойы ұйықтаса, құлау қаупіне ұшырайды. Зерттеушілер күту еркіндігін алгоритмнің шекті сандағы қадамдарды аяқтауына кепілдік ретінде анықтады. Бір мезгілдегі объектінің консенсустық саны - күтусіз іске асыруда берілген объектпен консенсусқа жетуі мүмкін жүйедегі процестердің ең көп саны. Консенсус саны бар объектілер консенсус саны бар немесе төмен кез келген объектілерді іске асыра алады, бірақ жоғары консенсус саны бар объектілерді іске асыра алмайды. Консенсустық сандар Герлихидің синхрондау объектілерінің иерархиясы деп аталатын нәрсені құрайды. Консенсус саны Объектілер атомдық оқу / жазу регистрлері, мутекс сынағы және жинағы, алмасу, алу және қосу, күту тегін кезегі немесе стек n регистрді тағайындау салыстыру және алмасу, жүктеу сілтемесі / сақтау шартты, жадынан жадыға жылжыту және алмасу, кезекпен қарастыру операциясы, fetch&cons, жабысқақ байт Иерархияға сәйкес оқу / жазу регистрлері тіпті 2 процесс жүйесінде де консенсусты шеше алмайды. Деректер стектері мен кезектер сияқты құрылымдар екі процесс арасындағы консенсусты ғана шеше алады. Алайда, кейбір бір мезгілдегі объектілер әмбебап (кестеде -мен белгіленеді), яғни олар кез келген процестер арасында консенсусты шеше алады және олар кез келген басқа объектілерді операциялар тізбегі арқылы симуляциялай алады.