Кіріспе

Таратылған компьютер жүйесіндегі оқиғалардың реттілігін анықтауға қолданылатын алгоритм – Лампорттың уақыт белгісі алгоритмі. Бұл алгоритм таратылған компьютер жүйесіндегі оқиғалардың реттілігін анықтау үшін қолданылатын қарапайым логикалық сағат алгоритмі. Әдетте, әртүрлі түйіндер немесе процестер толық синхронды болмайтындықтан, бұл алгоритм оқиғалардың ішінара реттілігін минималды жүктемемен қамтамасыз етуге және векторлық сағат әдісі сияқты күрделі әдістерге бастапқы нүкте беруге қолданылады. Алгоритм жасаушысы Лесли Лампорттың есімімен аталады. Ресурстарды синхрондау сияқты таратылған алгоритмдер оқиғаларды орындау үшін реттілік әдісіне жиі мұқтаж болады. Мысалы, екі процесс және дискі бар жүйені қарастырайық. Процестер бір-біріне хабарламалар жібереді, сондай-ақ дискіге қол жеткізу үшін сұрау хабарламаларын жібереді. Диск хабарламалар түскен ретімен қол жеткізуді қамтамасыз етеді. Мысалы, процесс дискіге жазуға рұқсат сұрап хабарлама жібереді, содан кейін процесске оқу нұсқаулық хабарламасын жібереді. Процесс хабарламаны қабылдайды және нәтижесінде дискіге өзінің оқу сұрауы туралы хабарлама жібереді. Егер уақыт кешігуі дискіге екі хабарламаны бір уақытта түсуіне себеп болса, ол қай хабарламаның бұрын болғанын анықтай алады: егер бір процесс ішінде қозғалыс жасап немесе хабарлама жіберілгеннен қабылданғанға дейін із кесу арқылы бір хабарламадан екіншісіне жету мүмкін болса, онда ол бұрын болды деп есептеледі. Логикалық сағат алгоритмі мұндай оқиғалардың реттілігін анықтау механизмін ұсынады. Егер екі оқиға тікелей немесе үшінші тарап процестері арқылы жанама түрде хабар алмасатын әртүрлі процестерде болса, онда олар бір мезгілде деп айтуға болады, яғни оқиғалардың реттілігі туралы ештеңе айта алмаймыз. Лампорт оқиғалардың реттілігін сандық түрде тіркеуге мүмкіндік беретін қарапайым механизмді ойлап тапты. Лампорттың логикалық сағаты – әр процесс сақтайтын сандық бағдарламалық санаушы. Бұл логикалық сағатты процестер арасында қозғалатын хабарламаларға қатысты мағынасы бар сағат ретінде қарастыруға болады. Процесс хабарлама алғанда, ол өзінің логикалық сағатын жіберушімен қайта синхрондастырады. Жоғарыда аталған векторлық сағат – бұл идеяның кез келген сандағы параллель, тәуелсіз процестерге қатысты жалпылауы.

Себеп-салдарлар реті

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

Салдары

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

Таратылған жүйелердегі Лампорттың логикалық сағаты

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

Әлеуетті себеп-салдар байланысының баламалары

Қарым-қатынас бұрын болғандық көрсетуі, нақты себептілік емес, себептілік мүмкіндігін көрсетеді. 2011 жылы Муниндар Сингх ақпараттық протоколдар деп аталатын нақты себептілікке негізделген декларативтік, көп агенттік тәсілді ұсынды. Ақпараттық протокол таратылған жүйені құрайтын агенттер арасындағы байланыс шектеулерін анықтайды. Дегенмен, хабарламалардың ретін көрсетудің орнына (мысалы, есептеуде протоколдарды бейнелеудің әдеттегі тәсілі – жай-күй машинасы арқылы), ақпараттық протокол агенттердің (протоколдың соңғы нүктелерінің) жібере алатын байланыстар арасындағы ақпараттық тәуелділікті анықтайды. Агент тек қана жергілікті күйде (өзінің байланыс тарихында) байланыс пен күй бірге тиісті ақпараттық тәуелділікті қанағаттандырса ғана хабарлама жібере алады. Мысалы, электрондық коммерцияға арналған ақпараттық протокол параметрлері ID (бірегейлендіргіш), тауар және бағасы бар бағаны жіберу үшін, сатушы өз күйінде ID және тауарды білуі керек, бірақ қалаған бағасын өндіре алады. Ақпараттық протоколдардың ерекшелігі – шығарылымдар шектелсе де, қабылдаулар шектелмейді. Нақтырақ айтқанда, агенттер кез келген ретте кез келген хабарламаларды қабылдай алады – қабылдаулар жай ғана ақпарат әкеледі және оларды кешіктірудің қажеті жоқ. Бұл ақпараттық протоколдарды пайдаланушы деректер протоколы (User Datagram Protocol) сияқты ретсіз байланыс қызметтері арқылы іске асыруға болады. Басты идея – қолданба семантикасы, яғни хабарламалардың мазмұнына негізделген таратылған жүйелерді жобалау идеясы, бұл идея аяқтан-аяқ қағидасымен байланысты. Қазіргі тәсілдер көбінесе семантиканы ескермейді және байланыс қызметтерінде қолданбаға бейтарап ("синтаксикалық") хабарламаларды жеткізуге және реттілікке кепілдік беруге назар аударады, осы жерде әлеуетті себептік байланыс сияқты идеялар көмектеседі. Бірақ егер бізде қолданба семантикасын жасаудың қолайлы тәсілі болса, онда бізге мұндай байланыс қызметтері қажет болмас еді. Ретсіз, сенімсіз байланыс қызметі жеткілікті болар еді. Ақпараттық протоколдар тәсілінің нақты құндылығы – ол қолданба семантикасы тәсілінің негізін қалайды.