သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

ဒီတော့ စိတ်ကူးကြည့်ရအောင်။ အခန်းထဲမှာ သော့ခတ်ထားတဲ့ ကြောင် ၅ ကောင်ရှိပြီး ပိုင်ရှင်ကို နှိုးဖို့အတွက် တံခါးကို ၅ ကောင်သာ ထောက်ပြီး တံခါးဖွင့်နိုင်တာကြောင့် သူတို့အားလုံး အချင်းချင်း သဘောတူဖို့ လိုပါတယ်။ ကြောင်တစ်ကောင်သည် Schrödinger ၏ကြောင်ဖြစ်ပြီး အခြားကြောင်များက သူ့ဆုံးဖြတ်ချက်ကို မသိပါက၊ “သူတို့က ဘယ်လိုလုပ်နိုင်မှာလဲ” ဟု မေးစရာရှိလာပါသည်။

ဤဆောင်းပါးတွင်၊ ဖြန့်ဝေမှုစနစ်လောက၏ သီအိုရီဆိုင်ရာ အစိတ်အပိုင်းများနှင့် ၎င်းတို့၏လုပ်ဆောင်မှုဆိုင်ရာ အခြေခံသဘောတရားများအကြောင်း ရိုးရှင်းသောဝေါဟာရများဖြင့် သင့်အား ပြောပြပါမည်။ Paxos ၏ အဓိက အယူအဆကို အပေါ်ယံ ဆန်းစစ်ကြည့်ပါမည်။

သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

developer များသည် cloud အခြေခံအဆောက်အအုံများ၊ အမျိုးမျိုးသောဒေတာဘေ့စ်များကိုအသုံးပြုပြီး node အများအပြား၏အစုအဝေးတွင်အလုပ်လုပ်သောအခါ၊ ဒေတာသည် ပြီးပြည့်စုံပြီး၊ လုံခြုံပြီး အမြဲတမ်းရရှိနိုင်မည်ဟု ယုံကြည်ပါသည်။ ဒါပေမယ့် အာမခံချက်တွေက ဘယ်မှာလဲ။

အခြေခံအားဖြင့်၊ ကျွန်ုပ်တို့တွင်ရှိသော အာမခံများသည် ပေးသွင်းသူ အာမခံများဖြစ်သည်။ ၎င်းတို့ကို စာရွက်စာတမ်းများတွင် အောက်ပါအတိုင်းဖော်ပြထားသည်- "ဤဝန်ဆောင်မှုသည် အလွန်ယုံကြည်စိတ်ချရသည်၊ ၎င်းတွင် ပေးထားသည့် SLA ပါရှိသည်၊ စိတ်မပူပါနှင့်၊ အရာအားလုံးသည် သင်မျှော်လင့်ထားသည့်အတိုင်း အလုပ်ဖြစ်လိမ့်မည်။"

ကျွန်ုပ်တို့သည် အကောင်းဆုံးကို ယုံကြည်လေ့ရှိသည်၊ အဘယ်ကြောင့်ဆိုသော် ကုမ္ပဏီကြီးများမှ စမတ်ကျသော ယောက်ျားများသည် အရာအားလုံးအဆင်ပြေမည်ဟု ကျွန်ုပ်တို့ကို အာမခံထားသောကြောင့်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် မေးခွန်းကို မမေးတော့ပါ- တကယ်တော့ ဒါက ဘာကြောင့် အလုပ်ဖြစ်နိုင်တာလဲ။ ထိုစနစ်များ၏ မှန်ကန်သောလည်ပတ်မှုအတွက် တရားဝင် မျှတမှုရှိပါသလား။

မကြာသေးခင်ကမှ သွားခဲ့တယ်။ Distributed Computing ကျောင်း နှင့် ဤအကြောင်းအရာအတွက် အလွန်စိတ်အားထက်သန်ခဲ့သည်။ ကျောင်းတွင် ပို့ချချက်များသည် ကွန်ပျူတာစနစ်နှင့် ပတ်သက်သည့် အရာများထက် ဂဏန်းကုလ အတန်းနှင့် ပိုတူသည်။ ဒါပေမယ့် အဲဒါကို မသိလိုက်ဘဲ နေ့စဉ်သုံးနေတဲ့ အရေးကြီးဆုံး algorithms တွေကို တစ်ကြိမ်တည်းမှာ သက်သေပြသွားတာက ဒါက ဘယ်လိုလဲ။

ခေတ်မီ ဖြန့်ဝေသည့် စနစ်အများစုသည် Paxos ၏ သဘောတူညီမှု အယ်လဂိုရီသမ်နှင့် ၎င်း၏ အမျိုးမျိုးသော ပြုပြင်မွမ်းမံမှုများကို အသုံးပြုသည်။ အအေးဆုံးအချက်မှာ တရားဝင်မှုနှင့် မူအရ၊ ဤ algorithm တည်ရှိမှု ဖြစ်နိုင်ခြေကို ဘောပင်နှင့် စာရွက်ဖြင့် ရိုးရိုးရှင်းရှင်း သက်သေပြနိုင်သည် ။ လက်တွေ့တွင်၊ algorithm ကို cloud များရှိ node အများအပြားတွင် လုပ်ဆောင်နေသော စနစ်ကြီးများတွင် အသုံးပြုသည်။

ဆက်လက်ဆွေးနွေးမည့်အရာ- ဗိုလ်ချုပ်နှစ်ဦး၏တာဝန်နွေးနွေးထွေးထွေး ရှာကြည့်ရအောင် ဗိုလ်ချုပ်နှစ်ယောက်ရဲ့ တာဝန်.

ငါတို့မှာ အနီနဲ့ အဖြူ စစ်တပ်နှစ်ခုရှိတယ်။ လူဖြူတပ်များသည် အဝိုင်းခံမြို့၌ အခြေစိုက်သည်။ ဗိုလ်ချုပ်ကြီး A1 နှင့် A2 ဦးဆောင်သော အနီရောင်တပ်များသည် မြို့၏ နှစ်ဖက်တွင် တည်ရှိသည်။ ခေါင်းနီတွေရဲ့ တာဝန်က အဖြူရောင်မြို့ကို တိုက်ခိုက်ပြီး အနိုင်ရဖို့ပါ။ သို့သော်လည်း စစ်ဗိုလ်ချုပ်တစ်ဦးစီ၏ စစ်တပ်သည် အဖြူတပ်ထက် သေးငယ်သည်။

သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

အနီရောင်များအတွက် အောင်ပွဲခံနိုင်သည့် အခြေအနေများ- ဗိုလ်ချုပ်နှစ်ဦးစလုံးသည် လူဖြူများထက် ကိန်းဂဏန်းအသာစီးရစေရန်အတွက် တစ်ပြိုင်နက်တည်း တိုက်ခိုက်ရမည်ဖြစ်သည်။ ထိုသို့လုပ်ဆောင်ရန် ဗိုလ်ချုပ်ကြီး A1 နှင့် A2 တို့သည် အချင်းချင်း သဘောတူညီရန် လိုအပ်သည်။ လူတိုင်းက သီးခြားတိုက်ခိုက်ရင် ခေါင်းနီတွေ ဆုံးရှုံးသွားမယ်။

သဘောတူညီချက်တစ်ခုရရှိရန် ဗိုလ်ချုပ်ကြီး A1 နှင့် A2 တို့သည် ဖြူမြို့ပိုင်နက်မှတဆင့် အပြန်အလှန် သံတမန်များ ပေးပို့နိုင်သည်။ သံတမန်သည် မဟာမိတ်စစ်ဗိုလ်ချုပ်တစ်ဦးထံ အောင်မြင်စွာရောက်ရှိနိုင်သည် သို့မဟုတ် ရန်သူက ကြားဖြတ်ဟန့်တားနိုင်သည်။ မေးခွန်း- ဆံပင်နီ ဗိုလ်ချုပ်များ (A1 မှ A2 မှ A2 သို့ A1 မှ AXNUMX သို့ သံတမန်များ ပေးပို့ခြင်း အဆင့်ဆင့်) သည် X နာရီတွင် တိုက်ခိုက်ရန် သဘောတူကြောင်း အာမခံထားသော ထိုကဲ့သို့ ဆက်သွယ်မှုမျိုး ရှိပါသလား။ အာမခံချက်များအရ စစ်ဗိုလ်ချုပ်နှစ်ဦးစလုံးသည် မဟာမိတ် (အခြားဗိုလ်ချုပ်) သည် သတ်မှတ်ထားသောအချိန်၌ X ကို ကျိန်းသေတိုက်ခိုက်မည်ကို တိကျသေချာသော အတည်ပြုချက်ရှိမည်မဟုတ်ဟု ဆိုလိုသည်။

A1 သည် A2 သို့ စာတိုပေးပို့သည်- "ဒီနေ့ သန်းခေါင်ယံမှာ တိုက်ခိုက်ကြရအောင်။" General A1 သည် General A2 ထံမှ အတည်ပြုချက်မရှိဘဲ တိုက်ခိုက်၍မရပါ။ A1 မှတမန်ရောက်လာပါက General A2 က "ဟုတ်ပါတယ်၊ ဒီနေ့ လူဖြူတွေကို သတ်ကြရအောင်။" သို့သော် ယခု ဗိုလ်ချုပ်ကြီး A2 သည် ၎င်း၏တမန် ရောက်ရှိလာခြင်း ရှိ၊ မရှိကို မသိရသေးသော်လည်း တိုက်ခိုက်မှုသည် တပြိုင်နက်တည်း ဖြစ်မည်ကို အာမခံချက် မရှိပါ။ ယခု General A2 ကို ထပ်မံအတည်ပြုရန် လိုအပ်ပါသည်။

၎င်းတို့၏ ဆက်သွယ်မှုကို ထပ်လောင်းဖော်ပြပါက၊ မက်ဆေ့ချ် ဖလှယ်မှု အကြိမ်ရေ မည်မျှပင် ရှိနေပါစေ စစ်ဗိုလ်ချုပ် နှစ်ဦးစလုံးသည် ၎င်းတို့၏ မက်ဆေ့ချ်များကို လက်ခံရရှိကြောင်း အာမခံနိုင်မည်မဟုတ်ကြောင်း ရှင်းရှင်းလင်းလင်း သိသာလာပါသည်။

ဗိုလ်ချုပ်နှစ်ဦး ပြဿနာသည် ယုံကြည်စိတ်ချရသော ဆက်သွယ်မှု မရှိသော node နှစ်ခုရှိသည့် အလွန်ရိုးရှင်းသော ဖြန့်ဝေသည့်စနစ်၏ ကြီးမြတ်သော သရုပ်ဖော်ပုံဖြစ်သည်။ ဆိုလိုသည်မှာ ၎င်းတို့ကို ထပ်တူကျအောင်ပြုလုပ်ထားကြောင်း 100% အာမခံချက်မရှိပါ။ အလားတူပြဿနာများကို ဆောင်းပါးတွင် နောက်ပိုင်းတွင် ပိုမိုကြီးမားသောအတိုင်းအတာဖြင့်သာ ဆွေးနွေးထားသည်။

ကျွန်ုပ်တို့သည် ဖြန့်ဝေသည့်စနစ်၏ သဘောတရားကို မိတ်ဆက်ပေးသည်။

ဖြန့်ဝေသည့်စနစ်သည် မက်ဆေ့ချ်များ ဖလှယ်နိုင်သော ကွန်ပျူတာအုပ်စုများ (ယခုနောက်ပိုင်း ၎င်းတို့ကို nodes ဟုခေါ်သည်)။ node တစ်ခုချင်းစီသည် ကိုယ်ပိုင်အုပ်ချုပ်ခွင့်ရှိသော အရာတစ်မျိုးဖြစ်သည်။ node တစ်ခုသည် လုပ်ဆောင်စရာများကို သူ့ဘာသာသူ လုပ်ဆောင်နိုင်သော်လည်း အခြား node များနှင့် ဆက်သွယ်ရန်အတွက် ၎င်းသည် မက်ဆေ့ဂျ်များ ပေးပို့ခြင်းနှင့် လက်ခံရန် လိုအပ်သည်။

မက်ဆေ့ချ်များကို အတိအကျ အကောင်အထည်ဖော်ပုံ၊ မည်သို့သော ပရိုတိုကောများကို အသုံးပြုထားသည် - ဤအခြေအနေတွင် ကျွန်ုပ်တို့အတွက် စိတ်မဝင်စားပါ။ ဖြန့်ဝေသည့်စနစ်၏ node များသည် မက်ဆေ့ချ်ပေးပို့ခြင်းဖြင့် အချင်းချင်း ဒေတာဖလှယ်နိုင်စေရန် အရေးကြီးပါသည်။

အဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုယ်တိုင်က အလွန်ရှုပ်ထွေးပုံမပေါ်သော်လည်း ဖြန့်ဝေသည့်စနစ်တွင် ကျွန်ုပ်တို့အတွက် အရေးကြီးမည့် အရည်အချင်းများစွာရှိသည်ကို ထည့်သွင်းစဉ်းစားရပါမည်။

ဖြန့်ဝေသည့်စနစ်များ၏ အရည်အချင်းများ

  1. တစ်ပြိုင်နက်တည်း - စနစ်အတွင်း တပြိုင်နက်တည်း သို့မဟုတ် တပြိုင်နက်တည်း ဖြစ်ပျက်နေသည့် အဖြစ်အပျက်များ ဖြစ်နိုင်ခြေ။ ထို့အပြင်၊ ကျွန်ုပ်တို့တွင် ဤဖြစ်ရပ်များ၏ တိကျရှင်းလင်းသော အစီအစဉ်မရှိသရွေ့ မတူညီသော node နှစ်ခုတွင် ဖြစ်ပေါ်လာသည့် အဖြစ်အပျက်များကို ကျွန်ုပ်တို့ ထည့်သွင်းစဉ်းစားပါမည်။ ဒါပေမယ့် စည်းကမ်းအရတော့ ကျွန်တော်တို့မှာ မရှိပါဘူး။
  2. ကမ္ဘာ့နာရီ မရှိပါ။. ကမ္ဘာလုံးဆိုင်ရာနာရီမရှိခြင်းကြောင့် ကျွန်ုပ်တို့တွင် တိကျသောအစီအစဉ်များမရှိပါ။ သာမာန်လူတွေရဲ့ ကမ္ဘာကြီးမှာ၊ ငါတို့မှာ နာရီနဲ့ အချိန်ဆိုတာ လုံးဝ ကျင့်သားရနေတယ်။ ဖြန့်ဝေသည့်စနစ်များနှင့်ပတ်သက်လာလျှင် အရာအားလုံး ပြောင်းလဲသွားပါသည်။ အလွန်တိကျသော အက်တမ်နာရီများပင်လျှင် ပျံ့လွင့်နေပြီး မည်သည့်ဖြစ်ရပ်နှစ်ခုမှ ပထမဖြစ်ခဲ့သည်ကို ကျွန်ုပ်တို့ မပြောနိုင်သော အခြေအနေများလည်း ရှိနိုင်ပါသည်။ ဒါကြောင့် အချိန်ကို အားကိုးလို့ မရဘူး။
  3. စနစ် node များ၏ အမှီအခိုကင်းမှု. အခြားပြဿနာတစ်ခုရှိပါသည်- ကျွန်ုပ်တို့၏ node များသည် ထာဝရမတည်မြဲသောကြောင့် တစ်ခုခုမှားသွားနိုင်သည်။ ဟာ့ဒ်ဒရိုက်သည် ကျရှုံးနိုင်သည်၊ cloud ရှိ virtual machine သည် ပြန်လည်စတင်နိုင်သည်၊ ကွန်ရက်သည် မှိတ်တုတ်မှိတ်တုတ်ဖြစ်နိုင်ပြီး မက်ဆေ့ချ်များ ဆုံးရှုံးသွားမည်ဖြစ်သည်။ ထို့အပြင်၊ node များအလုပ်လုပ်သည့်အခြေအနေများရှိနိုင်သော်လည်းတစ်ချိန်တည်းတွင် system ကိုဆန့်ကျင်သည်။ ပြဿနာများ၏ နောက်ဆုံးအတန်းသည် သီးခြားအမည်- ပုစ္ဆာကိုပင် ရရှိခဲ့သည်။ ဘိုင်ဇန်တိုင်း စစ်ဗိုလ်ချုပ်များ. ဤပြဿနာရှိသည့် ဖြန့်ဝေသည့်စနစ်၏ ရေပန်းအစားဆုံး ဥပမာမှာ Blockchain ဖြစ်သည်။ သို့သော် ယနေ့ကျွန်ုပ်တို့သည် ဤအထူးပြဿနာများကို ထည့်သွင်းစဉ်းစားမည်မဟုတ်ပါ။ တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော node များ ပျက်ကွက်နိုင်သည့် အခြေအနေများကို ကျွန်ုပ်တို့ စိတ်ဝင်စားပါမည်။
  4. node များအကြား ဆက်သွယ်မှုပုံစံများ (messaging model). မက်ဆေ့ချ်များ ဖလှယ်ခြင်းဖြင့် ဆက်သွယ်နိုင်သော node များကို ကျွန်ုပ်တို့ တည်ဆောက်ထားပြီးဖြစ်သည်။ လူသိများသော စာတိုပေးပို့ခြင်း မော်ဒယ်နှစ်ခု ရှိသည်- synchronous နှင့် asynchronous။

ဖြန့်ဝေမှုစနစ်များရှိ node များကြား ဆက်သွယ်မှုပုံစံများ

synchronous မော်ဒယ် - မက်ဆေ့ချ်တစ်ခုသည် node တစ်ခုမှ အခြားတစ်ခုသို့ရောက်ရှိရန် အာမခံထားသည့်အချိန်အတွင်း အကန့်အသတ်ရှိသောမြစ်ဝကျွန်းပေါ်ဒေသတစ်ခုရှိနေကြောင်း ကျွန်ုပ်တို့သေချာသိပါသည်။ အကယ်၍ ဤအချိန်ကျော်လွန်ပြီး မက်ဆေ့ဂျ် မရောက်ပါက၊ node မအောင်မြင်ကြောင်း ကျွန်ုပ်တို့ လုံခြုံစွာပြောနိုင်ပါသည်။ ဤပုံစံတွင် ကျွန်ုပ်တို့တွင် ခန့်မှန်းနိုင်သော စောင့်ဆိုင်းချိန်များရှိသည်။

အပြိုင်အဆိုင် မော်ဒယ် - asynchronous မော်ဒယ်များတွင် စောင့်ဆိုင်းချိန်သည် အကန့်အသတ်ရှိသည်ဟု ကျွန်ုပ်တို့ယူဆသည်၊ သို့သော် node ပျက်ကွက်ကြောင်း ကျွန်ုပ်တို့အာမခံနိုင်ပြီးနောက် ထိုကဲ့သို့သော မြစ်ဝကျွန်းပေါ်အချိန်မျိုး မရှိတော့ပါ။ အဲဒါတွေ။ node တစ်ခုမှ မက်ဆေ့ချ်အတွက် စောင့်ဆိုင်းချိန်သည် ထင်သလို ကြာမြင့်နိုင်သည်။ ဒါက အရေးကြီးတဲ့ အဓိပ္ပာယ်ဖွင့်ဆိုချက်ဖြစ်ပြီး အဲဒါကို ထပ်လောင်းပြောပါမယ်။

ဖြန့်ဝေသည့်စနစ်များတွင် အများဆန္ဒ၏ သဘောတရား

အများသဘောတူလက်ခံမှု သဘောတရားကို တရားဝင်မသတ်မှတ်မီ၊ ကျွန်ုပ်တို့ လိုအပ်နေသည့် အခြေအနေတစ်ခု၏ ဥပမာတစ်ခုကို သုံးသပ်ကြည့်ကြပါစို့၊ ပြည်နယ်စက်ပုံတူ.

ဖြန့်ဝေထားသော မှတ်တမ်းအချို့ရှိသည်။ ကျွန်ုပ်တို့သည် ၎င်းကို တသမတ်တည်းဖြစ်စေရန်နှင့် ဖြန့်ဝေစနစ်၏ node များအားလုံးတွင် တူညီသောဒေတာပါဝင်စေလိုပါသည်။ node များထဲမှတစ်ခုသည် log တွင်ရေးမည့်တန်ဖိုးအသစ်တစ်ခုကိုသိသောအခါ၊ ၎င်း၏တာဝန်သည်ဤတန်ဖိုးကိုအခြား node များအားလုံးသို့ပေးဆောင်ရန်ဖြစ်လာသည်၊ သို့မှသာ log ကို node များအားလုံးတွင်မွမ်းမံပြီးစနစ်သည်တသမတ်တည်းအခြေအနေအသစ်သို့ပြောင်းရွှေ့သွားမည်ဖြစ်သည်။ ဤကိစ္စတွင်၊ node များအချင်းချင်းသဘောတူရန်အရေးကြီးသည်- အဆိုပြုထားသောတန်ဖိုးအသစ်မှန်ကန်ကြောင်း node များအားလုံးသဘောတူသည်၊ node အားလုံးသည်ဤတန်ဖိုးကိုလက်ခံသည်၊ ဤအခြေအနေတွင်မှသာလျှင်လူတိုင်းသည် log တွင်တန်ဖိုးအသစ်ကိုရေးနိုင်သည်။

တစ်နည်းဆိုရသော်၊ ၎င်းတွင် ပိုမိုသက်ဆိုင်ရာအချက်အလက်များရှိကြောင်း ဆုံမှတ်တစ်ခုမှ မကန့်ကွက်ဘဲ အဆိုပြုထားသောတန်ဖိုးသည် မှားယွင်းနေပါသည်။ သဘောတူညီချက်နှင့် မှန်ကန်သောလက်ခံထားသောတန်ဖိုးတစ်ခုအတွက် သဘောတူညီချက်သည် ဖြန့်ဝေမှုစနစ်တွင် သဘောတူညီမှုဖြစ်သည်။ ဆက်လက်၍၊ ကျွန်ုပ်တို့သည် ဖြန့်ဝေသည့်စနစ်အား အများသဘောတူလက်ခံရန် အာမခံချက်ပေးသည့် အယ်လဂိုရီသမ်များအကြောင်း ဆွေးနွေးပါမည်။
သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ
တရားဝင်အားဖြင့်၊ ကျွန်ုပ်တို့သည် အများသဘောတူ အယ်လဂိုရီသမ် (သို့မဟုတ် ရိုးရှင်းစွာ သဘောတူညီမှု အယ်လဂိုရီသမ်) တစ်ခုအား ဖြန့်ဝေသည့်စနစ်အား ပြည်နယ် A မှ ပြည်နယ် B သို့ လွှဲပြောင်းပေးသည့် လုပ်ဆောင်ချက်တစ်ခုအဖြစ် ကျွန်ုပ်တို့ သတ်မှတ်နိုင်သည် ။ ထို့အပြင်၊ ဤအခြေအနေကို node များအားလုံးမှ လက်ခံထားပြီး node များအားလုံးက ၎င်းကို အတည်ပြုနိုင်ပါသည်။ ထွက်လာသည့်အတိုင်း၊ ဤတာဝန်သည် ပထမတစ်ချက်တွင် ထင်ရသကဲ့သို့ အသေးအဖွဲမဟုတ်ပါ။

Consensus Algorithm ၏ ဂုဏ်သတ္တိများ

စနစ်ဆက်လက်တည်ရှိနေစေရန်နှင့် ပြည်နယ်တစ်ခုမှ ပြည်နယ်တစ်ခုသို့ ပြောင်းရွှေ့ရာတွင် တိုးတက်မှုအချို့ရှိစေရန်အတွက် အများသဘောတူသော အယ်လဂိုရီသမ်တွင် ဂုဏ်သတ္တိသုံးခုရှိရမည်-

  1. သဘောတူညီချက် - မှန်ကန်စွာလည်ပတ်နေသော node များအားလုံးသည် တူညီသောတန်ဖိုးကိုယူရပါမည် (ဆောင်းပါးများတွင် ဤပိုင်ဆိုင်မှုကို ဘေးကင်းရေးပိုင်ဆိုင်မှုဟုလည်းရည်ညွှန်းသည်)။ လက်ရှိလုပ်ဆောင်နေသည့် ဆုံမှတ်များအားလုံး (အခြားသူများနှင့် အဆက်အသွယ်မအောင်မြင်သေးသော သို့မဟုတ် မအောင်မြင်သေး) သည် သဘောတူညီချက်တစ်ခုရရှိပြီး နောက်ဆုံးဘုံတန်ဖိုးအချို့ကို လက်ခံရမည်ဖြစ်သည်။

    ကျွန်ုပ်တို့စဉ်းစားနေသော ဖြန့်ဝေစနစ်ရှိ ဆုံမှတ်များသည် သဘောတူလိုကြောင်း ဤနေရာတွင် နားလည်ရန် အရေးကြီးပါသည်။ ဆိုလိုသည်မှာ၊ ယခုကျွန်ုပ်တို့သည် တစ်စုံတစ်ခု ရိုးရှင်းစွာ ကျရှုံးနိုင်သော စနစ်များအကြောင်း ပြောနေပါသည် (ဥပမာ၊ အချို့သော node များ ကျရှုံးသည်)၊ သို့သော် ဤစနစ်တွင် အခြားသူများနှင့် တမင်တကာ တမင်လုပ်ဆောင်သော node များ လုံးဝမရှိပါ (ဘိုင်ဇန်တိုင်း စစ်ဗိုလ်ချုပ်များ၏ တာဝန်)။ ဤပိုင်ဆိုင်မှုကြောင့်၊ စနစ်သည် တသမတ်တည်းရှိနေပါသည်။

  2. သိကၡာသမာဓိ — မှန်မှန်ကန်ကန် လုပ်ဆောင်နေသော node များအားလုံး တူညီသောတန်ဖိုးကို ပေးဆောင်ပါက vဆိုလိုသည်မှာ မှန်မှန်ကန်ကန် လုပ်ဆောင်နေသော node တိုင်းသည် ဤတန်ဖိုးကို လက်ခံရမည်ဖြစ်သည်။ v.
  3. အဆုံး - မှန်ကန်သောလည်ပတ်နေသော node များအားလုံးသည် နောက်ဆုံးတွင် algorithm ကို စနစ်တိုးတက်မှုဖြစ်စေရန် ခွင့်ပြုသည့် အချို့သောတန်ဖိုး (liveness property) ကို နောက်ဆုံးတွင် ယူလိမ့်မည်။ မှန်ကန်စွာ လည်ပတ်နေသော node တစ်ခုစီတိုင်းသည် နောက်ဆုံးတန်ဖိုးကို မကြာမီ သို့မဟုတ် နောက်ပိုင်းတွင် လက်ခံပြီး ၎င်းကို အတည်ပြုရမည်- "ကျွန်ုပ်အတွက်၊ ဤတန်ဖိုးသည် မှန်သည်၊ ကျွန်ုပ်သည် စနစ်တစ်ခုလုံးကို သဘောတူပါသည်။"

အများသဘောတူ algorithm အလုပ်လုပ်ပုံ ဥပမာ

အယ်လဂိုရီသမ်၏ ဂုဏ်သတ္တိများကို လုံးဝရှင်းရှင်းလင်းလင်း မသိနိုင်ပါ။ ထို့ကြောင့်၊ အရိုးရှင်းဆုံး သဘောတူညီမှု အယ်လဂိုရီသမ်ကို တစ်ပြိုင်နက်တည်း မက်ဆေ့ခ်ျပို့သည့် မော်ဒယ်ဖြင့် စနစ်တစ်ခုတွင် မည်သည့်အဆင့်များ ဖြတ်သန်းသွားသည်ကို ဥပမာတစ်ခုဖြင့် ကျွန်ုပ်တို့ ဥပမာတစ်ခုဖြင့် ဖော်ပြမည်ဖြစ်ပြီး၊ ဤအရာအားလုံးသည် မျှော်လင့်ထားသည့်အတိုင်း လုပ်ဆောင်နိုင်ပြီး မက်ဆေ့ချ်များ ပျောက်ဆုံးကာ မည်သည့်အရာမှ ကွဲထွက်သွားခြင်း မရှိပါ (ဤသည်မှာ အမှန်တကယ် ဖြစ်ပါသလား။)

  1. အိမ်ထောင်ပြုခြင်း (Propose) ဖြင့် စတင်သည်။ client သည် "Node 1" ဟုခေါ်သော node နှင့်ချိတ်ဆက်ပြီး ငွေပေးငွေယူတစ်ခုစတင်ကာ node သို့တန်ဖိုးအသစ်တစ်ခုရောက်ရှိသွားသည်ဟုယူဆကြပါစို့ - O. ယခုမှစ၍ "Node 1" ဟုခေါ်ဆိုပါမည်။ အဆိုပြုရန်. အဆိုပြုသူအနေဖြင့်၊ "Node 1" သည် ယခုအခါတွင် ဒေတာအသစ်များရှိကြောင်း စနစ်တစ်ခုလုံးကို အသိပေးရမည်ဖြစ်ပြီး၊ ၎င်းသည် အခြား node များအားလုံးထံ မက်ဆေ့ချ်များ ပေးပို့သည်- "ကြည့်။ "O" ဆိုတဲ့ အဓိပ္ပါယ်က ငါ့ဆီရောက်လာပြီး အဲဒါကို ချရေးချင်လိုက်တာ။ သင့်မှတ်တမ်းတွင် “O” ကို မှတ်တမ်းတင်မည်ဖြစ်ကြောင်း အတည်ပြုပါ။

    သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

  2. နောက်တစ်ဆင့်မှာ အဆိုပြုတန်ဖိုး (Voting) အတွက် မဲပေးခြင်း ဖြစ်သည်။ ဘာအတွက်လဲ အခြား node များသည် မကြာသေးမီက အချက်အလက်များကို လက်ခံရရှိပြီး ၎င်းတို့တွင် တူညီသော ငွေပေးငွေယူဆိုင်ရာ ဒေတာများ ရှိသည်။

    သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

    node “Node 1” သည် ၎င်း၏အဆိုပြုချက်ကို ပေးပို့သောအခါ၊ အခြား node များသည် ဤဖြစ်ရပ်ရှိ ဒေတာအတွက် ၎င်းတို့၏မှတ်တမ်းများကို စစ်ဆေးသည်။ ကွဲလွဲမှုများမရှိပါက၊ node များမှကြေငြာသည်- "ဟုတ်တယ်၊ ဒီဖြစ်ရပ်အတွက် တခြားဒေတာမရှိပါဘူး။ “O” တန်ဖိုးသည် ကျွန်ုပ်တို့နှင့် ထိုက်တန်သော နောက်ဆုံးအချက်အလက်များဖြစ်သည်။

    အခြားကိစ္စများတွင်၊ node များသည် “Node 1” ကိုတုံ့ပြန်နိုင်သည်- “နားထောင်ပါ။ ကျွန်ုပ်တွင် ဤငွေပေးငွေယူနှင့်ပတ်သက်သော နောက်ထပ်ဒေတာများရှိသည်။ 'အို' မဟုတ်ဘူး၊ ဒါပေမယ့် ပိုကောင်းတယ်။"

    မဲပေးသည့်အဆင့်တွင်၊ node များသည် ဆုံးဖြတ်ချက်တစ်ခု ရောက်ရှိလာသည်- ၎င်းတို့အားလုံးသည် တူညီသောတန်ဖိုးကို လက်ခံသည် သို့မဟုတ် ၎င်းတို့အနက်မှ တစ်ဦးက ကန့်ကွက်မဲပေးခြင်းဖြင့် သူ့တွင် မကြာသေးမီက အချက်အလက်များစွာရှိကြောင်း ဖော်ပြသည်။

  3. ဆန္ဒမဲပေးပွဲ အောင်မြင်ပြီး လူတိုင်းက ထောက်ခံခဲ့လျှင် စနစ်သည် တန်ဖိုးကို လက်ခံခြင်း အဆင့်အသစ်သို့ ရွေ့သွားမည်ဖြစ်သည်။ “Node 1” သည် အခြား node များနှင့် အစီရင်ခံစာများမှ တုံ့ပြန်မှုအားလုံးကို စုဆောင်းသည်- “လူတိုင်းက “O” တန်ဖိုးကို သဘောတူကြသည်။ ယခုအခါ "O" သည် ကျွန်ုပ်တို့၏ အဓိပ္ပါယ်အသစ်ဖြစ်ပြီး လူတိုင်းအတွက် တူညီကြောင်း တရားဝင်ကြေငြာပါသည်။ သင့်စာအုပ်ငယ်လေးထဲမှာ ရေးမှတ်ထားဖို့ မမေ့ပါနဲ့။ မင်းရဲ့ မှတ်တမ်းမှာ ရေးမှတ်ထား!”

    သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

  4. ကျန်ရှိသော node များသည် “O” တန်ဖိုးကို ရေးမှတ်ထားကြောင်း အတည်ပြုချက် (လက်ခံသည်) ပေးပို့သည်၊ ဤအချိန်အတွင်း မည်သည့်အရာမှ အသစ်ရောက်ရှိလာခြင်းမရှိသေးပါ (အဆင့်နှစ်ဆင့် ကျူးလွန်မှုတစ်မျိုး)။ ဤထူးခြားသောဖြစ်ရပ်ပြီးနောက်၊ ကျွန်ုပ်တို့သည် ဖြန့်ဝေငွေပေးငွေယူ ပြီးမြောက်ကြောင်း ကျွန်ုပ်တို့ယူဆပါသည်။
    သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ

ထို့ကြောင့် ရိုးရှင်းသောကိစ္စတစ်ခုတွင် အများသဘောတူသည့် အယ်လဂိုရီသမ်တွင် အဆင့်လေးဆင့်ပါဝင်သည်- အဆိုပြုခြင်း၊ မဲပေးခြင်း (မဲပေးခြင်း၊ လက်ခံခြင်း)၊ အတည်ပြုလက်ခံခြင်း (လက်ခံသည်)။

အကယ်၍ အဆင့်တစ်ဆင့်တွင် ကျွန်ုပ်တို့သည် သဘောတူညီချက်ကို မရရှိနိုင်ပါက၊ အဆိုပြုထားသည့်တန်ဖိုးကို အတည်ပြုရန် ငြင်းဆိုထားသည့် node များမှ ပေးဆောင်သည့် အချက်အလက်များကို ထည့်သွင်းစဉ်းစားကာ algorithm ကို ပြန်လည်စတင်သည်။

အပျက်သဘောဆောင်သောစနစ်တွင် အများသဘောတူသော အယ်လဂိုရီသမ်

ကျွန်ုပ်တို့သည် synchronous messaging မော်ဒယ်အကြောင်းပြောနေသောကြောင့်၊ ဤမတိုင်မီတွင်၊ အရာအားလုံးချောမွေ့ခဲ့သည်။ သို့သော် ခေတ်သစ်ကမ္ဘာတွင် ကျွန်ုပ်တို့သည် အရာအားလုံးကို တပြိုင်တည်းလုပ်ဆောင်လေ့ရှိသည်ကို ကျွန်ုပ်တို့သိသည်။ node တစ်ခုမှ တုံ့ပြန်မှုအတွက် စောင့်ဆိုင်းချိန်သည် ထင်သလို ရှည်လျားနိုင်သည်ဟု ကျွန်ုပ်တို့ယုံကြည်သည့် အပြိုင်အဆိုင် မက်ဆေ့ခ်ျပို့သည့်ပုံစံဖြင့် စနစ်တစ်ခုတွင် အလားတူ အယ်လဂိုရီသမ်တစ်ခု မည်သို့အလုပ်လုပ်သနည်း (နည်းလမ်းအားဖြင့်၊ node တစ်ခု၏ ပျက်ကွက်မှုကို နမူနာအဖြစ် ယူဆနိုင်သည်၊ node သည် အချိန်အကြာကြီး မထင်သလို တုံ့ပြန်နိုင်သည်။)

ယခု ကျွန်ုပ်တို့သည် အများသဘောတူထားသော အယ်လဂိုရီသမ်သည် နိယာမအားဖြင့် မည်သို့အလုပ်လုပ်သည်ကို သိလာကြပြီး ယခုအချိန်အထိ စူးစမ်းလေ့လာလိုသူများအတွက် မေးခွန်းတစ်ခုဖြစ်ပါသည်- N nodes စနစ်တစ်ခုအတွင်းရှိ node မည်မျှမျှ မအောင်မြင်နိုင်သောကြောင့် စနစ်သည် အများသဘောဆန္ဒကို ရရှိနိုင်ဆဲဖြစ်သည်။

အဖြေမှန်နှင့် မျှတမှုသည် spoiler ၏နောက်ကွယ်တွင် ရှိနေသည်။မှန်ကန်သောအဖြေ: 0. ဒွိဟရုနိုက်စနစ်ရှိ ဆုံမှတ်တစ်ခုပင်လျှင် မအောင်မြင်ပါက၊ စနစ်သည် သဘောတူညီမှုကို ရရှိနိုင်လိမ့်မည်မဟုတ်ပါ။ ဤထုတ်ပြန်ချက်ကို FLP သီအိုရီတွင် သက်သေပြထားပြီး အချို့သောစက်ဝိုင်းများတွင် လူသိများသော (1985၊ Fischer၊ Lynch၊ Paterson၊ ဆောင်းပါး၏အဆုံးတွင် မူရင်းနှင့် လင့်ခ်)- "အနည်းဆုံး node တစ်ခုပျက်ကွက်ပါက ဖြန့်ဝေသောသဘောဆန္ဒကို ရရှိရန် မဖြစ်နိုင်ပေ။ ”
သေတ္တာမပါသော Schrödinger ၏ကြောင်- ဖြန့်ဝေမှုစနစ်များတွင် သဘောတူညီမှုပြဿနာ
ယောက်ျားလေးတို့၊ ဒါဆို ငါတို့မှာ ပြဿနာတစ်ခုရှိတယ်၊ ငါတို့က အရာအားလုံးကို တပြိုင်နက်တည်း ဖြစ်လေ့ရှိတယ်။ ဤတွင်။ ဘယ်လိုဆက်ပြီး အသက်ရှင်ရမလဲ။

သီအိုရီအကြောင်း၊ သင်္ချာအကြောင်းပဲ ပြောနေကြတာ။ သင်္ချာဘာသာစကားမှ ကျွန်ုပ်တို့၏ အင်ဂျင်နီယာဘာသာသို့ ဘာသာပြန်ဆိုထားသည့် "သဘောတူညီမှုမရနိုင်"ဟူသည် အဘယ်နည်း။ ဆိုလိုသည်မှာ “အမြဲတမ်း မအောင်မြင်နိုင်” ဟုဆိုလိုသည်။ သဘောတူညီမှု မရနိုင်တဲ့ ကိစ္စမျိုး ရှိတယ်။ ဒါက ဘယ်လိုကိစ္စမျိုးလဲ။

ဤသည်မှာ အထက်ဖော်ပြပါ အသက်ရှင်သန်မှု ပိုင်ဆိုင်မှုကို အတိအကျ ချိုးဖောက်ခြင်း ဖြစ်သည်။ ကျွန်ုပ်တို့တွင် ဘုံသဘောတူညီချက်တစ်ခုမရှိပါ၊ ကျွန်ုပ်တို့တွင် node အားလုံးမှတုံ့ပြန်မှုမရှိပါက စနစ်သည် တိုးတက်မှုမရှိနိုင် (ကန့်သတ်အချိန်အတွင်း မပြီးမြောက်နိုင်)။ အဘယ်ကြောင့်ဆိုသော် asynchronous စနစ်တွင် ကျွန်ုပ်တို့တွင် ခန့်မှန်းနိုင်သော တုံ့ပြန်မှုအချိန်မရှိသောကြောင့် node ပျက်သွားခြင်း ရှိ၊

ဒါပေမယ့် လက်တွေ့မှာတော့ အဖြေကို ရှာတွေ့နိုင်ပါတယ်။ ကျွန်ုပ်တို့၏ algorithm သည် မအောင်မြင်ပါက အချိန်အကြာကြီး အလုပ်လုပ်နိုင်ပါစေ (ဖြစ်နိုင်ချေ အကန့်အသတ်မရှိ အလုပ်လုပ်နိုင်သည်)။ သို့သော် အခြေအနေအများစုတွင်၊ node အများစုသည် မှန်ကန်စွာလုပ်ဆောင်သောအခါ၊ ကျွန်ုပ်တို့သည် စနစ်တွင် တိုးတက်မှုရှိလိမ့်မည်။

လက်တွေ့တွင်၊ ကျွန်ုပ်တို့သည် တစ်စိတ်တစ်ပိုင်း တစ်စိတ်တစ်ပိုင်း ထပ်တူကျသော ဆက်သွယ်မှုပုံစံများနှင့် ကိုင်တွယ်ဖြေရှင်းပါသည်။ တစ်စိတ်တစ်ပိုင်း ထပ်တူပြုခြင်းကို အောက်ပါအတိုင်း နားလည်ထားသည်- ယေဘူယျကိစ္စတွင်၊ ကျွန်ုပ်တို့တွင် အညီအမျှ စံနမူနာတစ်ခု ရှိသည်၊ သို့သော် အချိန်ကာလတစ်ခု၏ "ကမ္ဘာ့တည်ငြိမ်ရေးအချိန်" ၏ အချို့သော အယူအဆကို တရားဝင် မိတ်ဆက်ထားသည်။

ဒီအချိန်ဟာ အချိန်အတိုင်းအတာတစ်ခုအထိ မရောက်နိုင်ပေမယ့် တစ်နေ့တော့ ရောက်လာရမယ်။ virtual နှိုးစက်နာရီသည် မြည်လာမည်ဖြစ်ပြီး ထိုအချိန်မှစ၍ မက်ဆေ့ဂျ်များရောက်ရှိလာမည့် အချိန်ကို မြစ်ဝကျွန်းပေါ်ဒေသမှ ကျွန်ုပ်တို့ ခန့်မှန်းနိုင်ပါသည်။ ဤအခိုက်အတန့်မှစ၍၊ စနစ်သည် ပြိုင်တူဂရုနိုက်မှ တစ်ပြိုင်တည်းအဖြစ်သို့ ပြောင်းလဲသွားသည်။ လက်တွေ့တွင်၊ ကျွန်ုပ်တို့သည် ထိုကဲ့သို့သော စနစ်များကို အတိအကျ ကိုင်တွယ်ဖြေရှင်းပါသည်။

Paxos algorithm သည် အများဆန္ဒဖြင့် ပြဿနာများကို ဖြေရှင်းပေးသည်။

Paxos အချို့သော node များ ပျက်သွားနိုင်သည့် ဖြစ်နိုင်ခြေကို မူတည်၍ တစ်စိတ်တစ်ပိုင်း တစ်စိတ်တစ်ပိုင်း ထပ်တူကျသည့် စနစ်များအတွက် သဘောတူညီမှု ပြဿနာကို ဖြေရှင်းပေးသည့် အယ်လဂိုရီသမ် မိသားစုတစ်ခု ဖြစ်သည်။ Paxos ၏ရေးသားသူဖြစ်သည်။ Leslie Lamport. သူသည် 1989 ခုနှစ်တွင် algorithm ၏တည်ရှိမှုနှင့်မှန်ကန်မှု၏တရားဝင်သက်သေတစ်ခုအဆိုပြုခဲ့သည်။

ဒါပေမယ့် သက်သေပြချက်က အသေးအဖွဲနဲ့ ဝေးကွာသွားခဲ့တယ်။ အယ်လဂိုရီသမ်ကိုဖော်ပြသည့် ပထမဆုံးထုတ်ဝေမှုမှာ 1998 ခုနှစ်တွင် (33 စာမျက်နှာ) သာထွက်ရှိခဲ့သည်။ ထွက်လာသည်နှင့်အမျှ၊ ၎င်းသည်နားလည်ရန်အလွန်ခက်ခဲခဲ့ပြီး 2001 ခုနှစ်တွင် 14 စာမျက်နှာယူခဲ့သောဆောင်းပါး၏ရှင်းလင်းချက်ကိုထုတ်ဝေခဲ့သည်။ အမှန်တကယ်တွင် အများဆန္ဒ၏ပြဿနာသည် ရိုးရှင်းသည်မဟုတ်ကြောင်း ပြသရန်အတွက် ထုတ်ဝေမှုများ၏ ပမာဏကို ပေးဆောင်ရခြင်းဖြစ်ပြီး ထိုကဲ့သို့သော အယ်လဂိုရီသမ်များ၏ နောက်ကွယ်တွင် ဉာဏ်အမြော်အမြင်ရှိသူများ၏ များပြားလှသော အလုပ်ပမာဏလည်း ရှိနေပါသည်။

Leslie Lamport ကိုယ်တိုင်က ဒုတိယရှင်းလင်းချက်ဆောင်းပါးတွင် ဖော်ပြချက်တစ်ခု၊ စာကြောင်းတစ်ကြောင်း (မည်သည်ကို မသတ်မှတ်ထားပါ) ဟူသည်ကို ၎င်း၏ဟောပြောပွဲ၌ မှတ်ချက်ချခဲ့သည်မှာ စိတ်ဝင်စားဖွယ်ကောင်းသည်။ ထို့အတွက်ကြောင့် ခေတ်မီ Paxos အကောင်အထည်ဖော်မှု အများအပြားသည် မှန်ကန်စွာ အလုပ်မလုပ်ပါ။

Paxos ၏အလုပ်အား အသေးစိတ်ခွဲခြမ်းစိတ်ဖြာခြင်းသည် ဆောင်းပါးတစ်ခုထက်ပိုယူရမည်ဖြစ်ပြီး၊ ထို့ကြောင့် algorithm ၏အဓိကအယူအဆကို အကျဉ်းချုံးဖော်ပြရန် ကြိုးစားပါမည်။ ကျွန်ုပ်၏ ဆောင်းပါး၏ အဆုံးတွင် လင့်ခ်များတွင် ဤအကြောင်းအရာသို့ နောက်ထပ် နစ်မြုပ်သွားမည့် အကြောင်းအရာများကို သင်တွေ့လိမ့်မည်။

Paxos တွင်ရာထူးများ

Paxos algorithm တွင် အခန်းကဏ္ဍများ၏ သဘောတရားတစ်ခုရှိသည်။ အဓိက သုံးခုကို သုံးသပ်ကြည့်ရအောင် (နောက်ထပ် အခန်းကဏ္ဍများပါရှိသော ပြုပြင်ပြောင်းလဲမှုများ ရှိသည်)။

  1. အဆိုပြုသူများ (အသုံးအနှုန်းများ- ခေါင်းဆောင်များ သို့မဟုတ် ညှိနှိုင်းရေးမှူးများ). ဤသူများသည် အသုံးပြုသူထံမှ တန်ဖိုးအသစ်များအကြောင်း လေ့လာပြီး ခေါင်းဆောင်၏အခန်းကဏ္ဍကို ရယူကြသူများဖြစ်သည်။ ၎င်းတို့၏တာဝန်မှာ တန်ဖိုးအသစ်အတွက် အဆိုပြုချက်တစ်ကျော့ကို စတင်ရန်နှင့် node များ၏ နောက်ထပ်လုပ်ဆောင်မှုများကို ညှိနှိုင်းရန်ဖြစ်သည်။ ထို့အပြင်၊ Paxos သည် အချို့သောအခြေအနေများတွင် ခေါင်းဆောင်များစွာရှိခြင်းကို ခွင့်ပြုသည်။
  2. လက်ခံသူများ (မဲဆန္ဒရှင်များ). ၎င်းတို့သည် သီးခြားတန်ဖိုးတစ်ခုကို လက်ခံရန် သို့မဟုတ် ငြင်းပယ်ရန် မဲပေးသည့် ခုံများဖြစ်သည်။ ၎င်းတို့၏ အခန်းကဏ္ဍသည် အလွန်အရေးကြီးသည်၊ အဘယ်ကြောင့်ဆိုသော် ဆုံးဖြတ်ချက်သည် ၎င်းတို့အပေါ်တွင်မူတည်သည်- အဘယ်ကြောင့်ဆိုသော် သဘောတူညီမှု အယ်လဂိုရီသမ်၏ နောက်အဆင့်တွင် စနစ်သည် မည်သည့်အခြေအနေသို့ သွားမည် (သို့မဟုတ် မပြုလုပ်နိုင်) ဖြစ်သောကြောင့် ဖြစ်သည်။
  3. သင်ယူသူ. စနစ်၏အခြေအနေပြောင်းလဲသောအခါတွင်လက်ခံထားသောတန်ဖိုးအသစ်ကိုရိုးရှင်းစွာလက်ခံပြီးရေးသော Node များ။ ၎င်းတို့သည် ဆုံးဖြတ်ချက်များမချဘဲ ၎င်းတို့သည် ဒေတာများကိုသာ လက်ခံရရှိပြီး သုံးစွဲသူထံ ပေးနိုင်ပါသည်။

node တစ်ခုသည် မတူညီသော အခြေအနေများတွင် အခန်းကဏ္ဍများစွာကို ပေါင်းစပ်နိုင်သည်။

အထမြောက်ခြင်းသဘောတရား

ကျွန်တော်တို့မှာ စနစ်တစ်ခုရှိတယ်လို့ ယူဆတယ်။ N ဆုံမှတ်များ ပြီးတော့ သူတို့ထဲက အများဆုံး F node များပျက်နိုင်သည်။ F node များ ပျက်ကွက်ပါက၊ ကျွန်ုပ်တို့တွင် အနည်းဆုံးရှိရပါမည်။ 2F+1 လက်ခံသူဆုံမှတ်များ။

အဆိုးဆုံးအခြေအနေမှာတောင် မှန်မှန်ကန်ကန်အလုပ်လုပ်တဲ့ “good” node အများစုရှိဖို့ ဒါက လိုအပ်တယ်။ အဲဒါပါပဲ။ F+1 သဘောတူထားသော "good" node များနှင့် နောက်ဆုံးတန်ဖိုးကို လက်ခံပါမည်။ မဟုတ်ပါက၊ ကျွန်ုပ်တို့၏ မတူညီသောဒေသခံအဖွဲ့များသည် မတူညီသော အဓိပ္ပါယ်များကို လက်ခံကြပြီး အချင်းချင်း သဘောမတူနိုင်သည့် အခြေအနေမျိုး ရှိနိုင်ပါသည်။ ထို့ကြောင့် မဲအနိုင်ရရှိရန် ပကတိအများစု လိုအပ်သည်။

Paxos consensus algorithm ၏ ယေဘူယျ အယူအဆ

Paxos algorithm တွင် အဆင့်နှစ်ဆင့်ကြီးများ ပါဝင်ပြီး ၎င်းကို အဆင့်နှစ်ဆင့်စီ ခွဲခြားထားသည်။

  1. အဆင့် 1a- ပြင်ဆင်ပါ။. ပြင်ဆင်မှုအဆင့်အတွင်း ခေါင်းဆောင် (အဆိုပြုသူ) သည် ဆုံမှတ်အားလုံးကို အသိပေးသည်- "ကျွန်ုပ်တို့သည် မဲပေးခြင်းအဆင့်အသစ်ကို စတင်နေပါသည်။ ငါတို့မှာ ဝိုင်းအသစ်ရှိတယ်။ ဤဝိုင်း၏နံပါတ်သည် n ဖြစ်သည်။ အခုပဲ မဲပေးတော့မယ်။" ယခုအချိန်တွင်၊ ၎င်းသည် စက်ဝိုင်းအသစ်တစ်ခု၏အစကို ရိုးရိုးရှင်းရှင်းဖော်ပြသော်လည်း တန်ဖိုးအသစ်တစ်ခုကို အစီရင်ခံခြင်းမရှိပါ။ ဤအဆင့်၏တာဝန်မှာ အလှည့်အသစ်တစ်ခုကို စတင်ရန်နှင့် ၎င်း၏ထူးခြားသောနံပါတ်ကို လူတိုင်းအား အသိပေးရန်ဖြစ်သည်။ အဝိုင်းနံပါတ်သည် အရေးကြီးသည်၊ ၎င်းသည် ယခင်ခေါင်းဆောင်များအားလုံး၏ ယခင်မဲပေးဂဏန်းများအားလုံးထက် ကြီးသောတန်ဖိုးဖြစ်ရပါမည်။ စနစ်ရှိ အခြား node များသည် ခေါင်းဆောင်၏ အချက်အလက် မည်မျှ မကြာသေးသည်ကို နားလည်နိုင်သောကြောင့် ၎င်းသည် အဝိုင်းနံပါတ်ကြောင့် ဖြစ်သည်။ အခြားသော ဆုံမှတ်များတွင် နောက်ပိုင်းအကျော့များစွာမှ မဲရလဒ်များ ရှိနေပြီး ခေါင်းဆောင်ကို ခေတ်နောက်ကျနေပြီဟု ရိုးရိုးရှင်းရှင်း ပြောပြနိုင်ဖွယ်ရှိသည်။
  2. အဆင့် 1b- ကတိပေးပါ။. လက်ခံသူဆုံမှတ်များသည် မဲပေးသည့်အဆင့်အသစ်၏ အရေအတွက်ကို လက်ခံရရှိသောအခါ၊ ရလဒ်နှစ်ခု ဖြစ်နိုင်သည်-
    • ဆန္ဒမဲအသစ်၏ နံပါတ်သည် လက်ခံသူပါဝင်ခဲ့သည့် ယခင်မဲအရေအတွက်ထက် ပိုများသည်။ ထို့နောက် လက်ခံသူသည် n ထက်နိမ့်သောမဲများ ထပ်မံပါဝင်မည်မဟုတ်ကြောင်း ခေါင်းဆောင်ထံသို့ ကတိတစ်ခု ပေးပို့သည်။ အကယ်၍ လက်ခံသူသည် တစ်စုံတစ်ခုကို မဲပေးပြီးပြီ (ဆိုလိုသည်မှာ၊ ၎င်းသည် ဒုတိယအဆင့်တွင် တန်ဖိုးအချို့ကို လက်ခံထားပြီးဖြစ်သည်)၊ ထို့နောက် ၎င်းသည် လက်ခံထားသောတန်ဖိုးနှင့် ၎င်း၏ကတိအတိုင်း ပါဝင်ခဲ့သည့် မဲအရေအတွက်ကို ပူးတွဲပါရှိသည်။
    • မဟုတ်ပါက၊ လက်ခံသူသည် အရေအတွက်ပိုများသောမဲများအကြောင်း သိထားပြီးပါက၊ ပြင်ဆင်မှုအဆင့်ကို လျစ်လျူရှုပြီး ခေါင်းဆောင်ကို တုံ့ပြန်မည်မဟုတ်ပါ။
  3. အဆင့် 2a- လက်ခံပါ။. ခေါင်းဆောင်သည် quorum (စနစ်အတွင်းရှိ node အများစု) မှ တုံ့ပြန်မှုကို စောင့်ရန်လိုအပ်ပြီး လိုအပ်သော တုံ့ပြန်မှုအရေအတွက်ကို လက်ခံရရှိပါက၊ ပွဲများဖွံ့ဖြိုးတိုးတက်မှုအတွက် ရွေးချယ်စရာနှစ်ခုရှိသည်။
    • လက်ခံသူအချို့က မဲပေးပြီးသော တန်ဖိုးများကို ပေးပို့ကြသည်။ ဤကိစ္စတွင်၊ ခေါင်းဆောင်သည် အများဆုံးနံပါတ်ဖြင့် မဲမှတန်ဖိုးကို ရွေးသည်။ ဤတန်ဖိုးကို x ဟုခေါ်ဆို၍ ၎င်းသည် "လက်ခံ (n, x)" ကဲ့သို့သော node များထံ မက်ဆေ့ချ်ပို့သည်၊ ပထမတန်ဖိုးသည် ၎င်း၏ကိုယ်ပိုင် Propose အဆင့်မှ မဲပေးသည့်နံပါတ်ဖြစ်ပြီး ဒုတိယတန်ဖိုးသည် လူတိုင်းစုဆောင်းထားသည့်အရာဖြစ်သည်၊ i.e. အမှန်တကယ်မဲပေးသောတန်ဖိုး။
    • လက်ခံသူများမှ မည်သည့်တန်ဖိုးများကိုမျှ မပေးပို့သော်လည်း ဤအကျော့တွင် ရိုးရိုးမဲပေးမည်ဟု ကတိပြုပါက၊ ခေါင်းဆောင်သည် ၎င်းတို့၏တန်ဖိုးကို မဲပေးရန် ဖိတ်ခေါ်နိုင်ပြီး ပထမနေရာမှ ခေါင်းဆောင်ဖြစ်လာသည့် တန်ဖိုးဖြစ်သည်။ y လို့ ခေါ်ရအောင်။ ၎င်းသည် ယခင်ရလဒ်နှင့်ဆင်တူသော “လက်ခံ (n၊ y)” ကဲ့သို့သော ဆုံမှတ်များအားလုံးထံ စာတိုပေးပို့သည်။
  4. အဆင့် 2b- လက်ခံသည်။. ထို့အပြင်၊ ခေါင်းဆောင်ထံမှ "လက်ခံ(...)" မက်ဆေ့ဂျ်ကို လက်ခံရရှိသောအခါ လက်ခံသူသည် ၎င်းနှင့် သဘောတူသည် (တန်ဖိုးအသစ်နှင့် သဘောတူကြောင်း အတည်ပြုချက်ကို ပေးပို့သည်) အချို့ (အခြား) အချို့ကို ကတိမပေးပါက၊ နံပါတ်အဝိုင်းဖြင့် မဲပေးရာတွင် ခေါင်းဆောင်ပါဝင်ရန် n' > nမဟုတ်ပါက အတည်ပြုချက်တောင်းခံမှုကို လျစ်လျူရှုပါ။

    ဆုံမှတ်အများစုသည် ခေါင်းဆောင်ကို တုံ့ပြန်ပြီး ၎င်းတို့အားလုံးသည် တန်ဖိုးအသစ်ကို အတည်ပြုပါက၊ တန်ဖိုးအသစ်ကို လက်ခံသည်ဟု ယူဆပါသည်။ ဟူး! အများစုသို့ မရောက်ရှိပါက သို့မဟုတ် တန်ဖိုးအသစ်ကို လက်ခံရန် ငြင်းဆိုထားသည့် ဆုံမှတ်များရှိနေပါက အရာအားလုံးသည် ပြန်လည်စတင်မည်ဖြစ်သည်။

Paxos algorithm အလုပ်လုပ်ပုံက ဒီလိုပါ။ ဤအဆင့်တစ်ခုစီတွင် သိမ်ငယ်စိတ်များစွာရှိသည်၊ ကျွန်ုပ်တို့သည် အမျိုးမျိုးသောကျရှုံးမှုများ၊ ခေါင်းဆောင်များစွာ၏ ပြဿနာများနှင့် အခြားအရာများကို လက်တွေ့ကျကျ မစဉ်းစားခဲ့ဘဲ၊ ဤဆောင်းပါး၏ ရည်ရွယ်ချက်မှာ စာဖတ်သူကို မြင့်မားသောအဆင့်တွင် ဖြန့်ဝေထားသော ကွန်ပျူတာလောကသို့ မိတ်ဆက်ပေးရန်သာဖြစ်သည်။

Paxos သည်၎င်း၏တစ်ခုတည်းသောအမျိုးအစားမဟုတ်ကြောင်း၊ အခြားသော algorithms များရှိသည်၊ ဥပမာ၊ ဖေါင်ဒါပေမယ့် ဒါက တခြားဆောင်းပါးအတွက် ခေါင်းစဉ်တစ်ခုပါ။

ဆက်လက်လေ့လာရန် အကြောင်းအရာများ လင့်ခ်များ

စတင်သူအဆင့်-

Leslie Lamport အဆင့်-

source: www.habr.com

မှတ်ချက် Add