Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

Dadi, ayo mbayangno. Ing kamar ana kucing 5 sing dikunci, lan supaya bisa tangi sing duwe, kabeh kudu setuju babagan iki, amarga mung bisa mbukak lawang karo wong lima sing nyandhak. Yen salah sawijining kucing iku kucing Schrödinger, lan kucing liyane ora ngerti babagan keputusane, pitakonan muncul: "Kepiye carane bisa nindakake?"

Ing artikel iki, aku bakal ngandhani kanthi gampang babagan komponen teoretis ing jagad sistem sing disebarake lan prinsip operasie. Aku uga superficially nliti idea utama ndasari Paxos.

Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

Nalika pangembang nggunakake prasarana maya, macem-macem basis data, lan kerja ing kluster kanthi jumlah kelenjar sing akeh, dheweke yakin manawa data kasebut bakal lengkap, aman, lan kasedhiya. Nanging ing endi jaminan?

Ateges, jaminan sing kita duwe minangka jaminan pemasok. Dheweke diterangake ing dokumentasi kaya mangkene: "Layanan iki cukup dipercaya, duwe SLA sing diwenehake, aja kuwatir, kabeh bakal bisa disebarake kaya sing dikarepake."

Kita cenderung percaya sing paling apik, amarga wong lanang pinter saka perusahaan gedhe njamin yen kabeh bakal apik. Kita ora takon pitakonan: kenapa, nyatane, iki bisa ditindakake? Apa ana kabeneran resmi kanggo operasi sing bener saka sistem kasebut?

Aku bubar tindak menyang Sekolah ing Distributed Computing lan banget inspirasi dening topik iki. Kuliah ing sekolah luwih kaya kelas kalkulus tinimbang sing ana gandhengane karo sistem komputer. Nanging iki persis kaya algoritma sing paling penting sing digunakake saben dina, tanpa ngerti, dibuktekake ing siji wektu.

Umume sistem distribusi modern nggunakake algoritma konsensus Paxos lan macem-macem modifikasi. Sing paling apik yaiku validitas lan, ing prinsip, kemungkinan anane algoritma iki bisa dibuktekake mung nganggo pena lan kertas. Ing praktik, algoritma kasebut digunakake ing sistem gedhe sing mlaku ing pirang-pirang simpul ing awan.

Gambaran entheng babagan apa sing bakal dibahas sabanjure: tugas loro jenderalAyo goleki kanggo pemanasan tugas loro jenderal.

Kita duwe loro tentara - abang lan putih. Pasukan putih adhedhasar ing kutha sing dikepung. Pasukan abang sing dipimpin jenderal A1 lan A2 dumunung ing sisih loro kutha. Tugas wong abang yaiku nyerang kutha putih lan menang. Nanging, tentara saben jenderal abang luwih cilik tinimbang tentara putih.

Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

Kondisi kamenangan kanggo sing abang: loro jenderal kudu nyerang bebarengan supaya bisa ngungguli wong putih. Kanggo nindakake iki, jenderal A1 lan A2 kudu menehi persetujuan. Yen saben wong nyerang kanthi kapisah, wong-wong abang bakal kalah.

Kanggo nggayuh persetujuan, jenderal A1 lan A2 bisa ngirim utusan menyang siji liyane liwat wilayah kutha putih. Utusan kasebut bisa kasil nggayuh jenderal sekutu utawa bisa dicegat dening mungsuh. Pitakonan: apa ana urutan komunikasi antarane jenderal rambut abang (urutan ngirim utusan saka A1 nganti A2 lan kosok balene saka A2 nganti A1), sing dijamin bakal setuju serangan ing jam X. Kene, njamin tegese loro jenderal bakal duwe konfirmasi sing ora jelas manawa sekutu (jendral liyane) mesthi bakal nyerang ing wektu sing ditemtokake X.

Upaminipun A1 ngirim utusan menyang A2 kanthi pesen: "Ayo serang dina iki ing tengah wengi!" Umum A1 ora bisa nyerang tanpa konfirmasi saka Umum A2. Yen utusan saka A1 wis teka, Jendral A2 ngirim konfirmasi kanthi pesen: "Ya, ayo mateni wong kulit putih dina iki." Nanging saiki Jendral A2 ora ngerti apa utusane wis teka utawa ora, dheweke ora njamin manawa serangan kasebut bakal bebarengan. Saiki Umum A2 maneh kudu konfirmasi.

Yen kita luwih njlèntrèhaké komunikasi, dadi cetha yen ora ketompo carane akeh siklus ijol-ijolan pesen ana, ora ana cara kanggo njamin sing loro jenderal wis nampa pesen (assuming sing salah siji utusan bisa dicegat).

The Two Generals Problem minangka ilustrasi sing apik babagan sistem distribusi sing prasaja banget ing ngendi ana rong simpul kanthi komunikasi sing ora bisa dipercaya. Iki tegese kita ora duwe 100% njamin sing padha diselarasake. Masalah sing padha bakal dibahas mung ing skala sing luwih gedhe ing artikel kasebut.

We introduce konsep sistem mbagekke

Sistem sing disebarake yaiku klompok komputer (sabanjure bakal diarani node) sing bisa ngganti pesen. Saben simpul individu minangka entitas otonom. A simpul bisa ngolah tugas dhewe, nanging supaya bisa komunikasi karo kelenjar liyane, kudu ngirim lan nampa pesen.

Kepiye persis pesen dileksanakake, protokol apa sing digunakake - iki ora menarik kanggo kita ing konteks iki. Penting yen simpul saka sistem sing disebarake bisa ngganti data karo siji liyane kanthi ngirim pesen.

Dhéfinisi kasebut dhewe ora katon rumit, nanging kita kudu nganggep manawa sistem sing disebarake duwe sawetara atribut sing penting kanggo kita.

Atribut sistem sing disebarake

  1. Concurrency - kamungkinan acara simultan utawa bebarengan sing kedadeyan ing sistem. Kajaba iku, kita bakal nganggep acara sing kedadeyan ing rong simpul sing beda-beda bisa dadi bebarengan anggere kita ora duwe urutan sing jelas babagan kedadeyan kasebut. Nanging, minangka aturan, kita ora duwe.
  2. Ora ana jam global. Kita ora duwe urutan acara sing jelas amarga ora ana jam global. Ing donya biasa wong, kita wis rakulino kanggo kasunyatan sing kita duwe jam lan wektu pancen. Kabeh owah-owahan nalika nerangake sistem mbagekke. Malah jam atom ultra-tepat wis mabur, lan bisa uga ana kahanan sing ora bisa dingerteni saka rong acara sing kedadeyan luwih dhisik. Mulane, kita uga ora bisa ngandelake wektu.
  3. Gagal independen saka node sistem. Ana masalah liyane: ana sing salah amarga kelenjar kita ora langgeng. Hard drive bisa gagal, mesin virtual ing méga bisa urip maneh, jaringan bisa kedhip lan pesen bakal ilang. Kajaba iku, bisa uga ana kahanan ing ngendi simpul bisa digunakake, nanging ing wektu sing padha bisa nglawan sistem kasebut. Kelas pungkasan masalah malah nampa jeneng kapisah: masalah jenderal Bizantium. Conto paling populer saka sistem sing disebarake kanthi masalah iki yaiku Blockchain. Nanging dina iki kita ora bakal nimbang kelas khusus masalah iki. Kita bakal kasengsem ing kahanan sing mung siji utawa luwih simpul bisa gagal.
  4. Model komunikasi (model olahpesen) antarane node. Kita wis netepake manawa simpul komunikasi kanthi ijol-ijolan pesen. Ana rong model olahpesen sing kondhang: sinkron lan asinkron.

Model komunikasi antarane node ing sistem sing disebarake

Model sinkron - kita ngerti manawa ana delta wektu sing wis ditemtokake nalika pesen dijamin tekan saka siji simpul menyang liyane. Yen wektu iki wis liwati lan pesen durung teka, kita bisa kanthi aman ngomong yen simpul gagal. Ing model iki, kita duwe wektu tunggu sing bisa ditebak.

Model asinkron - ing model asynchronous, kita nganggep yen wektu tunggu iku winates, nanging ora ana delta wektu sing bisa njamin yen simpul kasebut gagal. Sing. Wektu nunggu pesen saka simpul bisa sewenang-wenang dawa. Iki definisi penting, lan kita bakal pirembagan bab iku luwih.

Konsep konsensus ing sistem distribusi

Sadurunge nemtokake konsep konsensus kanthi resmi, ayo dipikirake conto kahanan sing dibutuhake, yaiku - Replikasi Mesin Negara.

Kita duwe sawetara log sing disebarake. Kita pengin supaya konsisten lan ngemot data sing padha ing kabeh simpul sistem sing disebarake. Nalika salah siji saka kelenjar sinau Nilai anyar sing arep nulis menyang log, sawijining tugas dadi kanggo kurban Nilai iki kanggo kabeh kelenjar liyane supaya log dianyari ing kabeh kelenjar lan sistem pindhah menyang negara konsisten anyar. Ing kasus iki, penting yen simpul setuju ing antarane: kabeh simpul setuju yen nilai anyar sing diusulake bener, kabeh simpul nampa nilai kasebut, lan mung ing kasus iki saben wong bisa nulis nilai anyar ing log.

Ing tembung liya: ora ana simpul sing mbantah manawa ana informasi sing luwih relevan, lan nilai sing diusulake ora bener. Persetujuan antarane simpul lan persetujuan babagan nilai sing ditampa sing bener yaiku konsensus ing sistem sing disebarake. Sabanjure, kita bakal ngomong babagan algoritma sing ngidini sistem sing disebarake bisa dijamin kanggo nggayuh konsensus.
Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake
Luwih resmi, kita bisa nemtokake algoritma konsensus (utawa mung algoritma konsensus) minangka fungsi tartamtu sing nransfer sistem sing disebarake saka negara A menyang negara B. Menapa malih, negara iki ditampa dening kabeh kelenjar, lan kabeh kelenjar bisa konfirmasi. Ternyata, tugas iki ora sepele kaya sing katon sepisanan.

Sifat-sifat Algoritma Konsensus

Algoritma konsensus kudu nduweni telung sifat supaya sistem bisa terus ana lan duwe sawetara kemajuan kanggo pindhah saka negara menyang negara:

  1. Agreement - kabeh simpul operasi sing bener kudu njupuk nilai sing padha (ing artikel, properti iki uga diarani minangka properti safety). Kabeh simpul sing saiki fungsi (ora gagal utawa ilang kontak karo liyane) kudu teka menyang persetujuan lan nampa sawetara nilai umum final.

    Iku penting kanggo ngerti kene sing kelenjar ing sistem mbagekke kita considering pengin setuju. Sing, saiki kita ngomong babagan sistem sing bisa mung gagal (contone, sawetara simpul gagal), nanging ing sistem iki mesthi ora ana kelenjar sing sengaja nglawan wong liya (tugas jenderal Bizantium). Amarga properti iki, sistem tetep konsisten.

  2. Integritas - yen kabeh kelenjar sing digunakake kanthi bener menehi nilai sing padha v, sing tegese saben simpul operasi sing bener kudu nampa nilai iki v.
  3. Nggon mandeg - kabeh kelenjar operasi sing bener bakal entuk nilai tartamtu (properti liveness), sing ngidini algoritma bisa maju ing sistem kasebut. Saben simpul operasi sing bener kudu cepet utawa mengko nampa nilai final lan konfirmasi: "Kanggo aku, nilai iki bener, aku setuju karo kabeh sistem."

Conto cara kerja algoritma konsensus

Nalika sifat-sifat algoritma bisa uga ora jelas. Mulane, kita bakal nggambarake kanthi conto apa tahapan algoritma konsensus sing paling gampang ditindakake ing sistem kanthi model olahpesen sinkron, sing kabeh simpul berfungsi kaya sing dikarepake, pesen ora ilang lan ora ana sing rusak (apa iki pancen kedadeyan?).

  1. Iku kabeh diwiwiti karo proposal nikah (Propose). Ayo nganggep yen klien disambungake menyang simpul sing disebut "Node 1" lan miwiti transaksi, ngliwati nilai anyar menyang simpul - O. Wiwit saiki, kita bakal nelpon "Node 1" nglamar. Minangka proposer, "Node 1" saiki kudu menehi kabar marang kabeh sistem yen duwe data anyar, lan ngirim pesen menyang kabeh simpul liyane: "Deleng! Makna "O" teka ing aku lan aku pengin nulis! Mangga konfirmasi manawa sampeyan uga bakal ngrekam "O" ing log sampeyan."

    Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

  2. Tahap sabanjure yaiku milih nilai sing diusulake (Voting). Kanggo apa? Bisa kedadeyan yen kelenjar liyane wis nampa informasi sing luwih anyar, lan duwe data babagan transaksi sing padha.

    Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

    Nalika simpul "Node 1" ngirim proposal, simpul liyane mriksa log kanggo data babagan acara iki. Yen ora ana kontradiksi, simpul kasebut ngumumake: "Ya, aku ora duwe data liyane kanggo acara iki. Nilai "O" minangka informasi paling anyar sing pantes kanggo kita."

    Ing kasus liyane, simpul bisa nanggapi "Simpul 1": "Ngrungokake! Aku duwe data sing luwih anyar babagan transaksi iki. Ora 'O', nanging sing luwih apik."

    Ing tataran voting, simpul teka menyang kaputusan: salah siji padha nampa nilai padha, utawa salah siji saka votes nglawan, nuduhake yen dheweke duwe data luwih anyar.

  3. Yen babak voting sukses lan kabeh wong seneng, banjur sistem pindhah menyang tahap anyar - Nampa nilai. "Node 1" ngumpulake kabeh respon saka kelenjar liyane lan laporan: "Saben uwong setuju ing nilai" O "! Saiki aku resmi ngumumake yen "O" minangka makna anyar kita, padha kanggo kabeh wong! Tulis ing buku cilik sampeyan, aja lali. Tulisen ing logmu!”

    Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

  4. Node sing isih ana ngirim konfirmasi (Ditampa) yen dheweke wis nulis nilai "O"; ora ana sing anyar sing teka ing wektu iki (jinis komitmen rong fase). Sawise acara penting iki, kita nganggep yen transaksi sing disebarake wis rampung.
    Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake

Mangkono, algoritma konsensus ing kasus prasaja kasusun saka papat langkah: ngusulake, milih (voting), nampa (nampa), konfirmasi acceptance (ditampa).

Yen ing sawetara langkah kita ora bisa nggayuh persetujuan, mula algoritma kasebut diwiwiti maneh, njupuk informasi sing diwenehake dening kelenjar sing ora gelem konfirmasi nilai sing diusulake.

Algoritma konsensus ing sistem asinkron

Sadurunge iki, kabeh lancar, amarga kita ngomong babagan model olahpesen sinkron. Nanging kita ngerti manawa ing jagad modern kita wis biasa nindakake kabeh kanthi ora sinkron. Kepiye algoritma sing padha bisa digunakake ing sistem kanthi model olahpesen asinkron, ing ngendi kita percaya yen wektu tunggu kanggo respon saka simpul bisa sewenang-wenang dawa (kanthi cara, kegagalan simpul uga bisa dianggep minangka conto nalika simpul bisa nanggapi kanggo wektu sing sewenang-wenang).

Saiki kita ngerti carane algoritma konsensus bisa digunakake ing prinsip, pitakonan kanggo para pamaca sing kepengin weruh sing wis tekan saiki: pira simpul ing sistem simpul N kanthi model pesen asinkron bisa gagal supaya sistem kasebut isih bisa tekan konsensus?

Jawaban sing bener lan kabeneran ana ing mburi spoiler.Jawaban sing bener yaiku: 0. Yen salah siji simpul ing sistem asinkron gagal, sistem kasebut ora bakal bisa nggayuh konsensus. Pernyataan iki dibuktekake ing teorema FLP, sing kondhang ing kalangan tartamtu (1985, Fischer, Lynch, Paterson, pranala menyang asli ing pungkasan artikel): "Impossibility kanggo nggayuh konsensus sing disebarake yen paling ora siji simpul gagal. .”
Kucing Schrödinger tanpa kothak: masalah konsensus ing sistem sing disebarake
Wong lanang, banjur kita duwe masalah, kita wis biasa kabeh ora sinkron. Lan kene iku. Kepiye carane terus urip?

Kita mung ngomong babagan teori, babagan matematika. Apa tegese "konsensus ora bisa digayuh", nerjemahake saka basa matematika menyang basa kita - teknik? Iki tegese "ora bisa tansah digayuh", i.e. Ana kasus sing konsensus ora bisa ditindakake. Kasus apa iki?

Iki persis nglanggar properti liveness kasebut ing ndhuwur. Kita ora duwe persetujuan umum, lan sistem ora bisa duwe kemajuan (ora bisa ngrampungake ing wektu winates) ing cilik ngendi kita ora duwe respon saka kabeh kelenjar. Amarga ing sistem asinkron, kita ora duwe wektu respon sing bisa diprediksi lan kita ora bisa ngerti apa simpul wis nabrak utawa mung butuh wektu suwe kanggo nanggapi.

Nanging ing laku kita bisa nemokake solusi. Ayo algoritma kita bisa digunakake kanggo wektu sing suwe yen gagal (berpotensi bisa digunakake tanpa wates). Nanging ing pirang-pirang kahanan, nalika umume node bisa mlaku kanthi bener, kita bakal ngalami kemajuan ing sistem kasebut.

Ing laku, kita menehi hasil karo model komunikasi sebagian sinkron. Sinkronisasi parsial dimangerteni kaya ing ngisor iki: ing kasus umum, kita duwe model bedo, nanging konsep tartamtu saka "wektu stabil global" saka titik tartamtu ing wektu resmi dikenalaké.

Wektu iki bisa uga ora suwe, nanging kudu teka ing sawijining dina. Jam weker virtual bakal muni, lan wiwit iku kita bisa prédhiksi delta wektu sing pesen bakal teka. Wiwit saiki, sistem dadi saka asinkron dadi sinkron. Ing laku, kita menehi hasil karo sistem kasebut.

Algoritma Paxos ngrampungake masalah konsensus

Paxos iku kulawarga algoritma sing ngatasi masalah konsensus kanggo sistem sebagian sinkron, tundhuk kamungkinan sing sawetara kelenjar bisa gagal. Penulis Paxos yaiku Leslie Lampor. Dheweke ngusulake bukti resmi babagan eksistensi lan kabeneran algoritma kasebut ing taun 1989.

Nanging buktine adoh saka sepele. Publikasi pisanan dirilis mung ing taun 1998 (33 kaca) sing njlèntrèhaké algoritma. Dadi metu, iku arang banget angel kanggo ngerti, lan ing 2001 diterbitake panjelasan saka artikel, kang njupuk 14 kaca. Volume publikasi diwenehake kanggo nuduhake yen nyatane masalah konsensus ora prasaja, lan ing mburi algoritma kasebut ana akeh karya sing paling pinter.

Menarik yen Leslie Lamport dhewe nyathet ing kuliahe yen ing artikel panjelasan kapindho ana siji statement, siji baris (dheweke ora nemtokake sing siji), sing bisa diinterpretasikake kanthi cara sing beda-beda. Lan amarga iki, akeh implementasi Paxos modern ora bisa digunakake kanthi bener.

Analisis rinci babagan karya Paxos bakal njupuk luwih saka siji artikel, mula aku bakal nyoba kanthi cepet ngirim ide utama algoritma kasebut. Ing pranala ing mburi artikel sampeyan bakal nemokake bahan kanggo nyilem luwih menyang topik iki.

Peran ing Paxos

Algoritma Paxos nduweni konsep peran. Ayo nimbang telung sing utama (ana modifikasi kanthi peran tambahan):

  1. Proposer (istilah kasebut uga bisa digunakake: pimpinan utawa koordinator). Iki minangka wong lanang sing sinau babagan sawetara nilai anyar saka pangguna lan njupuk peran pimpinan. Tugase yaiku ngluncurake proposal kanggo nilai anyar lan koordinasi tumindak luwih lanjut saka simpul kasebut. Kajaba iku, Paxos ngidini sawetara pimpinan ing kahanan tartamtu.
  2. Akseptor (Pemilih). Iki minangka simpul sing milih nampa utawa nolak nilai tartamtu. Peran kasebut penting banget, amarga keputusane gumantung marang wong-wong mau: negara apa sing bakal ditindakake (utawa ora bakal) sawise tahap algoritma konsensus sabanjure.
  3. Belajar. Node sing mung nampa lan nulis nilai anyar sing ditampa nalika negara sistem wis diganti. Dheweke ora nggawe keputusan, mung nampa data lan bisa menehi pangguna pungkasan.

Siji simpul bisa nggabungake sawetara peran ing kahanan sing beda.

Konsep kuorum

Kita nganggep yen kita duwe sistem N simpul Lan saka wong-wong mau maksimum F node bisa gagal. Yen simpul F gagal, mula kita kudu paling ora 2F+1 node akseptor.

Iki perlu supaya kita tansah duwe mayoritas, sanajan ing kahanan paling awon, simpul "apik" sing bisa digunakake kanthi bener. Iku F+1 "apik" kelenjar sing sarujuk, lan nilai final bakal ditampa. Yen ora, bisa uga ana kahanan ing ngendi klompok lokal kita beda-beda njupuk makna sing beda lan ora bisa setuju ing antarane. Mula, kita butuh mayoritas mutlak kanggo menang swara.

Gagasan umum babagan cara kerja algoritma konsensus Paxos

Algoritma Paxos nyakup rong fase gedhe, sing saben dipérang dadi rong langkah:

  1. Fase 1a: Siapke. Sajrone tahap persiapan, pimpinan (proposer) ngandhani kabeh simpul: "Kita miwiti fase voting anyar. Kita duwe babak anyar. Cacahe babak iki n. Saiki kita bakal miwiti milih." Saiki, mung nglaporake wiwitan siklus anyar, nanging ora nglaporake nilai anyar. Tugas ing tahap iki yaiku miwiti babak anyar lan ngandhani saben wong nomer unik. Nomer babak penting, iku kudu dadi nilai luwih saka kabeh nomer voting sadurungé saka kabeh pimpinan sadurungé. Amarga iku thanks kanggo nomer babak sing kelenjar liyane ing sistem bakal ngerti carane anyar data pimpinan. Kamungkinan simpul liyane wis duwe asil voting saka babak mengko lan mung bakal ngandhani pimpinan yen dheweke ketinggalan jaman.
  2. Fase 1b: Janji. Nalika simpul akseptor nampa nomer tataran voting anyar, rong asil bisa:
    • Jumlah n saka swara anyar luwih gedhe tinimbang jumlah swara sadurunge sing ditampa dening akseptor. Banjur akseptor ngirim janji marang pimpinan sing ora bakal melu ing votes liyane karo nomer luwih saka n. Yen akseptor wis milih kanggo soko (yaiku, wis nampa sawetara nilai ing tahap kapindho), banjur nempelake nilai sing ditampa lan nomer voting sing melu janji.
    • Yen ora, yen akseptor wis ngerti babagan swara sing luwih dhuwur, mula bisa nglirwakake langkah persiapan lan ora nanggapi pimpinan.
  3. Fase 2a: Nampa. Pimpinan kudu ngenteni tanggapan saka kuorum (mayoritas kelenjar ing sistem) lan, yen jumlah tanggapan sing dibutuhake ditampa, mula dheweke duwe rong pilihan kanggo pangembangan acara:
    • Sawetara akseptor ngirim nilai sing wis dipilih. Ing kasus iki, pimpinan milih nilai saka voting kanthi jumlah maksimal. Ayo dadi nelpon Nilai iki x, lan ngirim metu pesen kanggo kabeh kelenjar kaya: "Nampa (n, x)", ngendi Nilai pisanan nomer voting saka langkah Propose dhewe, lan Nilai kaloro iku apa everyone diklumpukake kanggo, i.e. Nilai sing kita bener milih.
    • Yen ora ana sing nampa sing ngirim nilai, nanging dheweke mung janji bakal milih ing babak iki, pimpinan bisa ngajak wong-wong mau milih kanggo nilai, nilai sing dadi pimpinan ing Panggonan pisanan. Ayo diarani y. Iki ngirim pesen menyang kabeh kelenjar kaya: "Tampa (n, y)", padha karo asil sadurunge.
  4. Fase 2b: Ditampa. Salajengipun, simpul akseptor, nalika nampa pesen "Nampa (...)" saka pimpinan, setuju karo (kirim konfirmasi menyang kabeh kelenjar sing setuju karo nilai anyar) mung yen durung janji sawetara (liyane) ) pimpinan kanggo melu voting karo nomer babak n' > n, yen ora padha nglirwakake panjalukan konfirmasi.

    Yen mayoritas simpul nanggapi pimpinan lan kabeh mau dikonfirmasi nilai anyar, banjur nilai anyar dianggep ditampa. Hore! Yen mayoritas ora tekan utawa ana simpul sing ora gelem nampa nilai anyar, mula kabeh bakal diwiwiti maneh.

Iki minangka algoritma Paxos. Saben tahapan iki nduweni akeh subtleties, kita prakteke ora nganggep macem-macem jinis kegagalan, masalah saka pirang-pirang pimpinan lan liya-liyane, nanging tujuan artikel iki mung kanggo ngenalake maca menyang jagad komputasi sing disebarake ing tingkat dhuwur.

Sampeyan uga kudu dicathet yen Paxos ora mung siji-sijine, ana algoritma liyane, contone, Raft, nanging iki topik kanggo artikel liyane.

Link menyang materi kanggo sinau luwih

Tingkat pamula:

Tingkat Leslie Laport:

Source: www.habr.com

Add a comment