Системаи тақсимшуда як гурӯҳи компютерҳо мебошад (минбаъд онҳоро гиреҳҳо меномем), ки метавонанд мубодилаи паёмҳоро дошта бошанд. Ҳар як гиреҳи инфиродӣ як намуди воҳиди мустақил аст. Гиреҳ метавонад мустақилона вазифаҳоро коркард кунад, аммо барои иртибот бо гиреҳҳои дигар, он бояд паёмҳоро ирсол ва қабул кунад.
Худи таъриф чандон мураккаб ба назар намерасад, аммо мо бояд ба назар гирем, ки системаи тақсимшуда дорои як қатор хусусиятҳое мебошад, ки барои мо муҳим хоҳанд буд.
Хусусиятҳои системаҳои тақсимшуда
Ҳамзамон – имкони рух додани ҳодисаҳои ҳамзамон ё ҳамзамон дар система. Ғайр аз он, мо рӯйдодҳоеро, ки дар ду гиреҳи гуногун рух медиҳанд, эҳтимолан ҳамзамон мешуморем, то даме ки тартиби дақиқи пайдоиши ин рӯйдодҳоро надорем. Аммо, чун қоида, мо онро надорем.
Ба таври расмӣ, мо метавонем алгоритми консенсусро (ё танҳо алгоритми консенсус) ҳамчун функсияи муайяне муайян кунем, ки системаи тақсимшударо аз ҳолати А ба ҳолати B интиқол медиҳад. Илова бар ин, ин ҳолат аз ҷониби ҳама гиреҳҳо қабул карда мешавад ва ҳама гиреҳҳо метавонанд онро тасдиқ кунанд. Чунон ки маълум мешавад, ин вазифа на он кадар майда-чуйдаест, ки дар назари аввал ба назар мерасад.
Хусусиятҳои алгоритми консенсус
Алгоритми консенсус бояд се хосият дошта бошад, то мавҷудияти система идома ёбад ва дар гузаштан аз як ҳолат ба ҳолат каме пешравӣ дошта бошад:
Созишнома – ҳамаи гиреҳҳои дуруст коркунанда бояд як арзиш дошта бошанд (дар мақолаҳо ин амвол инчунин моликияти бехатарӣ номида мешавад). Ҳама гиреҳҳое, ки дар айни замон кор мекунанд (намуваффақият ва ё иртиботро бо дигарон гум накардаанд) бояд ба созиш бирасанд ва арзиши умумии ниҳоиро қабул кунанд.
Дар ин ҷо фаҳмидан муҳим аст, ки гиреҳҳои системаи тақсимшуда, ки мо дар назар дорем, розӣ шудан мехоҳанд. Яъне, мо ҳоло дар бораи системаҳое сухан меронем, ки дар онҳо чизе танҳо ноком шуда метавонад (масалан, баъзе гиреҳ ноком мешавад), аммо дар ин система бешубҳа ягон гиреҳе вуҷуд надорад, ки дидаю дониста бар зидди дигарон кор кунанд (вазифаи генералҳои Византия). Аз сабаби ин моликият, система пайваста боқӣ мемонад.
пуррагӣ — агар хамаи гиреххои дуруст коркунанда як хел арзиш дошта бошанд v, ки маънои онро дорад, ки ҳар як гиреҳи дуруст коркунанда бояд ин арзишро қабул кунад v.
Қатъкунӣ - ҳама гиреҳҳои дуруст коркунанда дар ниҳоят арзиши муайянро (хосияти зинда) мегиранд, ки ба алгоритм имкон медиҳад, ки дар система пешрафт кунад. Ҳар як гиреҳи дуруст коркунанда бояд дер ё зуд арзиши ниҳоиро қабул кунад ва онро тасдиқ кунад: "Барои ман, ин арзиш дуруст аст, ман бо тамоми система розӣ ҳастам."
Намунаи чӣ гуна кор кардани алгоритми консенсус
Дар ҳоле ки хосиятҳои алгоритм метавонад комилан равшан набошад. Аз ин рӯ, мо бо мисол нишон медиҳем, ки алгоритми соддатарини консенсус дар система бо модели синхронии паёмнависӣ, ки дар он ҳама гиреҳҳо мувофиқи интизорӣ кор мекунанд, паёмҳо гум намешаванд ва ҳеҷ чиз мешиканад (оё ин воқеан рӯй медиҳад?) кадом марҳилаҳоро тай мекунад.
Дар марҳилаи овоздиҳӣ, гиреҳҳо ба як қарор меоянд: ё ҳама арзиши якхеларо қабул мекунанд, ё яке аз онҳо бар зидди он овоз медиҳад, ки вай маълумоти навтарин дорад.
Ин махз вайрон кардани моликияти зиндагонии дар боло зикршуда мебошад. Мо як созишномаи умумӣ надорем ва система наметавонад пешрафт дошта бошад (дар як муддати муайян ба итмом нарасидааст) дар ҳолате, ки мо аз ҳама гиреҳҳо посух надорем. Зеро дар системаи асинхронӣ мо вақти вокуниши пешгӯинашаванда надорем ва мо наметавонем бидонем, ки гиреҳ суқут кардааст ё барои посух додан вақти зиёд мегирад.
Аммо дар амал мо илоче ёфта метавонем. Бигзор алгоритми мо дар сурати нокомиҳо муддати тӯлонӣ кор кунад (эҳтимолан он метавонад номуайян кор кунад). Аммо дар аксари ҳолатҳо, вақте ки аксари гиреҳҳо дуруст кор мекунанд, мо дар система пешравӣ хоҳем дошт.
Дар амал мо бо моделҳои алоқаи қисман синхронӣ сару кор дорем. Синхронияи қисман ин тавр фаҳмида мешавад: дар ҳолати умумӣ мо модели асинхронӣ дорем, аммо мафҳуми муайяни «вақти мӯътадилшавии глобалӣ»-и як нуқтаи муайяни вақт расман ҷорӣ карда мешавад.
Ин лаҳза метавонад дар муддати тӯлонӣ наояд, аммо он рӯзе бояд фаро расад. Соати занги виртуалӣ занг мезанад ва аз он лаҳза мо метавонем дельтаи вақтро, ки барои он паёмҳо меоянд, пешгӯӣ кунем. Аз ин лаҳза, система аз асинхронӣ ба синхронӣ мегузарад. Дар амал мо бо чунин системахо машгул мешавем.
Алгоритми Paxos мафҳуми нақшҳоро дорад. Биёед се чизи асосиро дида бароем (тағирот бо нақшҳои иловагӣ мавҷуданд):
Пешниҳодкунандагон (ин истилоҳҳо метавонанд истифода шаванд: роҳбарон ё ҳамоҳангсозон). Инҳо бачаҳо ҳастанд, ки аз корбар арзиши навро меомӯзанд ва нақши пешворо ба ӯҳда мегиранд. Вазифаи онҳо ин аст, ки як даври пешниҳодҳо барои арзиши нав ва ҳамоҳангсозии амалиёти минбаъдаи гиреҳҳо. Ғайр аз он, Paxos имкон медиҳад, ки дар ҳолатҳои муайян ҳузури якчанд роҳбарон дошта бошанд.
Қабулкунандагон (интихобкунандагон). Ин гиреҳҳое мебошанд, ки барои қабул ё рад кардани арзиши мушаххас овоз медиҳанд. Нақши онҳо хеле муҳим аст, зеро тасмим аз онҳо вобаста аст: система пас аз марҳилаи навбатии алгоритми консенсус ба кадом ҳолат мегузарад (ё намехоҳад).
Донишҷӯён. Гиреҳҳое, ки ҳангоми тағир ёфтани ҳолати система арзиши нави қабулшударо қабул мекунанд ва менависанд. Онҳо қарор қабул намекунанд, онҳо танҳо маълумотро мегиранд ва метавонанд онро ба корбари ниҳоӣ диҳанд.
Як гиреҳ метавонад якчанд нақшҳоро дар ҳолатҳои гуногун муттаҳид созад.
Консепсияи кворум
Мо тахмин мезанем, ки мо системаи N гиреҳҳо Ва аз онҳо ҳадди аксар F гиреҳҳо метавонанд ноком шаванд. Агар гиреҳҳои F ноком шаванд, мо бояд ҳадди аққал дошта бошем 2F+1 гиреҳҳои қабулкунанда.
Шумораи n овози нав аз шумораи овозҳои қаблӣ, ки дар он қабулкунанда иштирок кардааст, зиёдтар аст. Сипас қабулкунанда ба пешво ваъда медиҳад, ки дар дигар овозҳо бо шумораи камтар аз n иштирок намекунад. Агар қабулкунанда аллакай барои чизе овоз дода бошад (яъне дар марҳилаи дуюм аллакай як арзишро қабул карда бошад), пас ба ваъдаи худ арзиши қабулшуда ва шумораи овозҳое, ки дар он иштирок кардааст, замима мекунад.
Дар акси ҳол, агар қабулкунанда аллакай дар бораи овоздиҳии баландтар маълумот дошта бошад, он метавонад ба қадами омодагӣ беэътиноӣ кунад ва ба пешво ҷавоб надиҳад.