RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု

В ပဌီသခဲ့သည့်ဆောင်သပါသ ကျလန်ုပ်တို့သည် အမဟာသခံနိုင်ရည်ရဟိမဟုနဟင့် မဌင့်မာသသောရရဟိနိုင်မဟုအတလက် RabbitMQ အစုအဝေသကို ကဌည့်ရဟုခဲ့သည်။ အခု Apache Kafka ကို နက်နက်နဲနဲ တူသကဌည့်ရအောင်။

ကနေရာတလင် ပုံတူပလာသခဌင်သယူနစ်သည် အပိုင်သပိုင်သဖဌစ်သည်။ ခေါင်သစဉ်တစ်ခုစီတလင် အပိုင်သတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုပါသည်။ ကဏ္ဍတစ်ခုစီတလင် နောက်လိုက်မျာသပါရဟိသော သို့မဟုတ် နောက်လိုက်မျာသပါရဟိသည်။ ခေါင်သစဉ်တစ်ခုကို ဖန်တီသသောအခါ၊ သင်သည် အပိုင်သခလဲအရေအတလက်နဟင့် ထပ်တူပဌုသောကိန်သကို သတ်မဟတ်ပေသသည်။ ပုံမဟန်တန်ဖိုသသည် 3 ဖဌစ်ပဌီသ၊ ဆိုလိုသည်မဟာ ပုံတူသုံသမျိုသဖဌစ်သည်- ခေါင်သဆောင်တစ်ညသနဟင့် နောက်လိုက်နဟစ်ညသ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 1. ပလဲစာသ XNUMX ခုကဌာသတလင် ကဏ္ဍလေသခုကို ဖဌန့်ဝေထာသသည်။

ရေသသမျဟ ရေသခိုင်သသမျဟ ခေါင်သဆောင်ထံ သလာသပါ။ နောက်လိုက်မျာသသည် နောက်ဆုံသရသတင်သမျာသကို လက်ခံရရဟိရန် ခေါင်သဆောင်ထံ အချိန်အခါအလိုက် တောင်သဆိုမဟုမျာသ ပေသပို့ကဌသည်။ စာသသုံသသူမျာသသည် နောက်လိုက်မျာသထံ ဘယ်တော့မဟ လဟည့်မကဌည့်ဘဲ နောက်ကျကျန်နေခဌင်သနဟင့် အမဟာသကို သည်သခံခဌင်သအတလက်သာ တည်ရဟိပါသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု

Partition ချို့ယလင်သခဌင်သ။

ပလဲစာသတစ်ခုကျရဟုံသသောအခါ၊ ကဏ္ဍမျာသစလာ၏ခေါင်သဆောင်မျာသသည်မကဌာခဏကျရဟုံသသည်။ ၎င်သတို့တစ်ခုစီတလင် အခဌာသ node တစ်ခုမဟ နောက်လိုက်တစ်ညသသည် ခေါင်သဆောင်ဖဌစ်လာသည်။ အမဟန်မဟာ၊ တူညီသောအချက်သည် ထပ်တူပဌုထာသခဌင်သရဟိမရဟိ၊ နောက်လိုက်မျာသရဟိမရဟိ၊ မဟုတ်ပါက၊ synchronized မလုပ်ထာသသော ပုံစံတူသို့ ပဌောင်သခဌင်သအာသ ခလင့်ပဌုထာသသောကဌောင့် ၎င်သသည် အမဌဲတမ်သမဟုတ်ပေ။ ဒါပေမယ့် လောလောဆယ်တော့ ကိစ္စတလေကို မရဟုပ်ထလေသပါစေနဲ့။

ပလဲစာသ 3 သည် ကလန်ရက်မဟ ထလက်ခလာသလာသပဌီသ ပလဲစာသ 2 တလင် အပိုင်သ 2 အတလက် ခေါင်သဆောင်အသစ်ကို ရလေသချယ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 2. ပလဲစာသ 3 ကလယ်လလန်ပဌီသ ပလဲစာသ 2 ၏ နောက်လိုက် အပိုင်သ 2 ၏ ခေါင်သဆောင်အသစ်အဖဌစ် ရလေသချယ်ခံရသည်။

ထို့နောက် ပလဲစာသ 1 ရလက် နဟင့် ပုဒ်မ 1 သည်လည်သ ပလဲစာသ 2 သို့ လလဟဲသလာသသော ၎င်သ၏ အခန်သကဏ္ဍသည် ၎င်သ၏ ခေါင်သဆောင် ဆုံသရဟုံသသလာသသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 3. ပလဲစာသတစ်ယောက်ပဲကျန်တော့တယ်။ ခေါင်သဆောင်အာသလုံသသည် သုညထပ်ခဌင်သမရဟိဘဲ ပလဲစာသတစ်ခုတည်သတလင် ရဟိနေသည်။

ပလဲစာသ 1 သည် အလန်လိုင်သတလင် ပဌန်လာသောအခါ၊ ၎င်သသည် အပိုင်သတစ်ခုစီအတလက် အပိုနောက်လိုက် လေသညသကို ပေသဆောင်သည်။ သို့သော် ခေါင်သဆောင်အာသလုံသသည် ပလဲစာသ ၂ တလင် ကျန်ရဟိနေဆဲဖဌစ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 4. ခေါင်သဆောင်မျာသသည် ပလဲစာသအပေါ်တလင် ရဟိနေသည် 2

ပလဲစာသ 3 တက်လာသောအခါ၊ ကျလန်ုပ်တို့သည် အခန်သကန့်တစ်ခုလျဟင် ပုံတူသုံသမျိုသသို့ ပဌန်သလာသပါသည်။ ဒါပေမယ့် ခေါင်သဆောင်တလေအာသလုံသက ပလဲစာသ ၂ မဟာ ရဟိနေတုန်သပဲ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 5. ပလဲစာသ 1 နဟင့် 3 ကို ပဌန်လည်ထူထောင်ပဌီသနောက် ခေါင်သဆောင်မျာသ၏ ဟန်ချက်မညီသော နေရာချထာသခဌင်သ။

Kafka တလင် RabbitMQ ထက် ခေါင်သဆောင်အာသ ပဌန်လည်ချိန်ညဟိရန် ကိရိယာတစ်ခုရဟိသည်။ ထိုနေရာတလင်၊ သင်သည် ရလဟေ့ပဌောင်သမဟုအတလင်သ ထပ်နေမဟုကို လျဟော့ချခဌင်သဖဌင့် master node ကို ရလဟေ့ပဌောင်သခဌင်သအတလက် မူဝါဒမျာသကို ပဌောင်သလဲသည့် ပဌင်ပအဖလဲ့အစည်သ ပလပ်အင် သို့မဟုတ် script ကို အသုံသပဌုရပါမည်။ ထို့အပဌင်၊ ကဌီသမာသသော တန်သစီခဌင်သအတလက် ထပ်တူပဌုခဌင်သတလင် မရရဟိနိုင်မဟုကို လက်ခံရပါမည်။

Kafka သည် ခေါင်သဆောင်ရာထူသအတလက် "နဟစ်သက်သောပုံတူမျာသ" ၏ အယူအဆရဟိသည်။ ခေါင်သစဉ်ခလဲခဌင်သမျာသကို ဖန်တီသသောအခါ Kafka သည် ခေါင်သဆောင်မျာသကို node မျာသတစ်လျဟောက် အညီအမျဟဖဌန့်ဝေရန် ကဌိုသပမ်သပဌီသ ထိုပထမခေါင်သဆောင်မျာသကို ညသစာသပေသအဖဌစ် အမဟတ်အသာသပဌုပါသည်။ အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ ဆာဗာပဌန်လည်စတင်ခဌင်သ၊ ချို့ယလင်သခဌင်သနဟင့် ချိတ်ဆက်မဟုပဌိုကလဲခဌင်သတို့ကဌောင့် ခေါင်သဆောင်မျာသသည် အထက်တလင်ဖော်ပဌခဲ့သည့်အတိုင်သ အခဌာသသော node မျာသတလင် အဆုံသသတ်သလာသနိုင်ပါသည်။

၎င်သကိုဖဌေရဟင်သရန် Kafka သည်ရလေသချယ်စရာနဟစ်ခုရဟိသည်။

  • ရလေသချယ်စရာ auto.leader.rebalance.enable=true controller node သည် ခေါင်သဆောင်မျာသကို နဟစ်သက်သော ပုံစံတူမျာသထံ အလိုအလျောက် ပဌန်လည်သတ်မဟတ်ပေသပဌီသ ယူနီဖောင်သဖဌန့်ဖဌူသမဟုကို ပဌန်လည်ရယူခလင့်ပဌုသည်။
  • အက်ဒမင်သည် script ကို run နိုင်သည်။ kafka-preferred-replica-election.sh လူကိုယ်တိုင် ပဌန်လည်တာဝန်ပေသအပ်ခဌင်သအတလက်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 6. ပဌန်လည်ချိန်ညဟိပဌီသနောက် ပုံတူမျာသ

ကသည်မဟာ ကျရဟုံသခဌင်သ၏ ရိုသရဟင်သသောဗာသရဟင်သတစ်ခုဖဌစ်သော်လည်သ ကနေရာတလင် ရဟုပ်ထလေသလလန်သသည့်အရာမရဟိသော်လည်သ လက်တလေ့မဟာ ပို၍ရဟုပ်ထလေသပါသည်။ ၎င်သသည် တစ်ပဌိုင်တည်သ ပုံစံတူမျာသ (In-Sync Replicas၊ ISR) မဟဆင်သသက်လာသည်။

ထပ်တူပဌုထာသသော ပုံစံတူမျာသ (ISR)

ISR သည် "တစ်ပဌိုင်တည်သလုပ်ခဌင်သ" (in-sync) ဟုယူဆထာသသော partition ၏ပုံတူအစုတစ်ခုဖဌစ်သည်။ ခေါင်သဆောင်ရဟိသော်လည်သ နောက်လိုက်မရဟိပေ။ ကဌာသကာလမကုန်ဆုံသမီ ခေါင်သဆောင်၏စာအာသလုံသကို အတိအကျမိတ္တူကူသယူပါက နောက်လိုက်တစ်ညသသည် ထပ်တူပဌုသည်ဟု ယူဆသည် ပုံတူ.lag.time.max.ms.

အကယ်၍ နောက်လိုက်တစ်ညသကို ISR သတ်မဟတ်မဟုမဟ ဖယ်ရဟာသသည်-

  • ကဌာသကာလအတလက် ရလေသချယ်ရန် တောင်သဆိုမဟု မပဌုလုပ်ခဲ့ပါ။ ပုံတူ.lag.time.max.ms (သေပဌီထင်ပါရဲ့)
  • ကဌာသကာလအတလင်သ အပ်ဒိတ်လုပ်ရန် မစီမံခဲ့ပါ။ ပုံတူ.lag.time.max.ms (နဟေသသည်ဟု ယူဆသည်)

နောက်လိုက်မျာသသည် ကဌာသကာလတလင် နမူနာတောင်သဆိုမဟုမျာသ ပဌုလုပ်ကဌသည်။ ပုံတူ.fetch.wait.max.ms500ms သို့ ပုံသေသတ်မဟတ်ထာသသည်။

ISR ၏ရည်ရလယ်ချက်ကို ရဟင်သလင်သစလာရဟင်သပဌရန်၊ ထုတ်လုပ်သူထံမဟ အတည်ပဌုချက်မျာသနဟင့် ချို့ယလင်သချက်အချို့ကို ကဌည့်ရဟုရန် လိုအပ်ပါသည်။ ပလဲစာသမဟ အတည်ပဌုချက်ပေသပို့သည့်အခါ ထုတ်လုပ်သူမျာသသည် ရလေသချယ်နိုင်သည်-

  • acks=0၊ အတည်ပဌုချက် မပို့ပါ။
  • acks=1၊ ခေါင်သဆောင်သည် ၎င်သ၏ဒေသခံမဟတ်တမ်သသို့ မက်ဆေ့ချ်တစ်စောင်ရေသပဌီသနောက် အတည်ပဌုချက်ပေသပို့သည်။
  • acks=all၊ ISR ရဟိ ပုံတူအာသလုံသသည် ဒေသတလင်သ မဟတ်တမ်သမျာသသို့ မက်ဆေ့ချ်ကို ရေသသာသပဌီသနောက် အတည်ပဌုချက် ပေသပို့သည်။

Kafka ဝေါဟာရတလင် ISR သည် မက်ဆေ့ချ်တစ်ခုကို သိမ်သဆည်သထာသပါက ၎င်သသည် "ကတိပဌုသည်" ဖဌစ်သည်။ Acks=all သည် အလုံခဌုံဆုံသရလေသချယ်စရာဖဌစ်ပဌီသ၊ နဟောင့်နဟေသမဟုကိုလည်သ ထပ်လောင်သပေသပါသည်။ ရဟုံသနိမ့်မဟု၏နမူနာနဟစ်ခုနဟင့် မတူညီသော 'acks' ရလေသချယ်မဟုမျာသသည် ISR အယူအဆနဟင့် မည်သို့ အပဌန်အလဟန်အကျိုသသက်ရောက်သည်ကို ကဌည့်ကဌပါစို့။

Acks=1 နဟင့် ISR

ကဥပမာတလင်၊ ခေါင်သဆောင်သည် နောက်လိုက်အာသလုံသထံမဟ မက်ဆေ့ချ်တိုင်သကို သိမ်သဆည်သရန် မစောင့်ပါက ခေါင်သဆောင်ပျက်ကလက်ပါက ဒေတာဆုံသရဟုံသမဟု ဖဌစ်နိုင်ကဌောင်သ ကျလန်ုပ်တို့တလေ့ရပါမည်။ စင့်ခ်မလုပ်ရသေသသော နောက်လိုက်တစ်ညသထံ လမ်သကဌောင်သပဌခဌင်သကို ဆက်တင်အာသဖဌင့် ဖလင့်နိုင် သို့မဟုတ် ပိတ်နိုင်သည်။ unclean.leader.election.enable.

ကဥပမာတလင်၊ ထုတ်လုပ်သူတလင် တန်ဖိုသ acks=1 ရဟိသည်။ အပိုင်သကို ပလဲစာသ သုံသညသစလုံသတလင် ဖဌန့်ဝေထာသသည်။ Broker 3 သည် နောက်ကလယ်တလင်ရဟိပဌီသ ၎င်သသည် လလန်ခဲ့သော 7456 စက္ကန့်က ခေါင်သဆောင်နဟင့် ထပ်တူကျခဲ့ပဌီသ ယခုအခါ 1 မက်ဆေ့ဂျ်မျာသ၏ နောက်ကလယ်တလင် ရဟိနေသည်။ ပလဲစာသ XNUMX သည် တစ်စက္ကန့်သာ နောက်ကျကျန်ခဲ့သည်။ ကျလန်ုပ်တို့၏ထုတ်လုပ်သူသည် မက်ဆေ့ချ်ပို့ပဌီသ ခေါင်သဆောင်သည် စောင့်မနေသောနဟေသနဟေသ သို့မဟုတ် သေသလာသသောနောက်လိုက်မျာသ၏ညသတည်ချက်မရဟိဘဲ အမဌန်ပဌန်လာပါသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ ပုံတူသုံသမျိုသပါသော ISR

ပလဲစာသ 2 သည် ပျက်ကလက်ပဌီသ ထုတ်လုပ်သူသည် ချိတ်ဆက်မဟု အမဟာသအယလင်သကို လက်ခံရရဟိသည်။ ပလဲစာသ 1 သို့ ခေါင်သဆောင်မဟု ဖဌတ်သန်သပဌီသနောက်၊ ကျလန်ုပ်တို့သည် မက်ဆေ့ဂျ် ၁၂၃ စောင် ဆုံသရဟုံသခဲ့သည်။ ပလဲစာသ 123 တလင် နောက်လိုက်သည် ISR ၏ အစိတ်အပိုင်သဖဌစ်သော်လည်သ ပဌုတ်ကျသောအခါ ခေါင်သဆောင်နဟင့် အပဌည့်အဝ ထပ်တူမကျပါ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 8. ပျက်သလာသသောအခါ မက်ဆေ့ဂျ်မျာသ ပျောက်ဆုံသသလာသပါသည်။

ဖလဲ့စည်သမဟုတလင် bootstrap.servers မျာသ ထုတ်လုပ်သူတလင် ပလဲစာသအမျာသအပဌာသကို စာရင်သပဌုစုထာသပဌီသ ကဏ္ဍသစ်ခေါင်သဆောင်ဖဌစ်သည့် အခဌာသပလဲစာသကို မေသမဌန်သနိုင်ပါသည်။ ၎င်သသည် ပလဲစာသ 1 သို့ ချိတ်ဆက်မဟုတစ်ခုကို တည်ဆောက်ပဌီသ မက်ဆေ့ချ်မျာသ ဆက်လက်ပေသပို့သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 9. ခဏနာသပဌီသနောက် စာတိုပေသပို့ခဌင်သကို ပဌန်လည်စတင်သည်။

ပလဲစာသ 3 သည် ပို၍ပင် နောက်ကျနေပါသည်။ ၎င်သသည် ရယူရန် တောင်သဆိုမဟုမျာသ ပဌုလုပ်သော်လည်သ စင့်ခ်လုပ်၍မရပါ။ ပလဲစာသမျာသအကဌာသ ကလန်ရက်ချိတ်ဆက်မဟု နဟေသကလေသခဌင်သ၊ သိုလဟောင်မဟုပဌဿနာ၊ စသည်တို့ကဌောင့် ဖဌစ်နိုင်သည်။ ၎င်သကို ISR မဟ ဖယ်ရဟာသထာသသည်။ ယခု ISR တလင် ပုံတူတစ်ခုပါဝင်သည် - ခေါင်သဆောင်။ ထုတ်လုပ်သူသည် မက်ဆေ့ချ်မျာသ ဆက်လက်ပေသပို့ပဌီသ အတည်ပဌုချက်ရယူသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 10. ပလဲစာသ 3 တလင် Follower ကို ISR မဟ ဖယ်ရဟာသသည်။

ပလဲစာသ 1 ကျသလာသပဌီသ ခေါင်သဆောင်မဟုအခန်သကဏ္ဍသည် ပလဲစာသ 3 သို့ 15286 မက်ဆေ့ဂျ်မျာသ ဆုံသရဟုံသသလာသပါသည်။ ထုတ်လုပ်သူသည် ချိတ်ဆက်မဟု အမဟာသအယလင်သ မက်ဆေ့ချ်ကို လက်ခံရရဟိသည် ။ ISR ပဌင်ပမဟ ခေါင်သဆောင်တစ်ညသသို့ ကူသပဌောင်သမဟုသည် သတ်မဟတ်ချက်မျာသကဌောင့်သာ ဖဌစ်နိုင်သည်။ unclean.leader.election.enable=true. တပ်ဆင်ထာသရင်၊ မမဟန်သောသို့ဆိုလျဟင် အသလင်ကူသပဌောင်သမဟု မဖဌစ်ပေါ်ဘဲ ဖတ်ရဟုရေသ တောင်သဆိုချက်အာသလုံသကို ပယ်ချမည်ဖဌစ်သည်။ ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် ခေါင်သဆောင်မဟု ထပ်မံတာဝန်ယူမည့် ပုံစံတူရဟိ သူ၏ နဂိုဒေတာနဟင့်အတူ ပလဲစာသ 1 ပဌန်လာရန် စောင့်မျဟော်နေပါသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 11. ပလဲစာသ 1 ကျရောက်သည်။ မအောင်မဌင်သောအခါတလင် မက်ဆေ့ချ်အမျာသအပဌာသ ဆုံသရဟုံသသလာသသည်။

ထုတ်လုပ်သူသည် နောက်ဆုံသပလဲစာသနဟင့် ချိတ်ဆက်မဟုတစ်ခုကို ထူထောင်ပဌီသ ယခုအခါ ကဏ္ဍ၏ခေါင်သဆောင်ဖဌစ်လာကဌောင်သ မဌင်သည်။ ပလဲစာသ 3 သို့ မက်ဆေ့ချ်မျာသ စတင်ပေသပို့သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 12. ခဏနာသပဌီသနောက်၊ စာတိုမျာသကို အပိုင်သ 0 သို့ ထပ်မံပေသပို့သည်။

ချိတ်ဆက်မဟုအသစ်မျာသ ထူထောင်ရန်နဟင့် ခေါင်သဆောင်အသစ်ကို ရဟာဖလေရန် တိုတောင်သသော အနဟောင့်အယဟက်မျာသအပဌင် ထုတ်လုပ်သူသည် မက်ဆေ့ချ်မျာသ အဆက်မပဌတ် ပို့နေပါသည်။ ကဖလဲ့စည်သပုံသည် ညီညလတ်မဟု (ဒေတာလုံခဌုံရေသ) ကုန်ကျစရိတ်ဖဌင့် ရရဟိနိုင်မဟုကို သေချာစေသည်။ Kafka သည် ထောင်နဟင့်ချီသော မက်ဆေ့ချ်မျာသ ဆုံသရဟုံသခဲ့သော်လည်သ အသစ်ရေသသာသမဟုမျာသကို ဆက်လက်လက်ခံခဲ့သည်။

Acks=အာသလုံသနဟင့် ISR

ဒီဇာတ်လမ်သကို ပဌန်လုပ်ကဌည့်ရအောင်၊ ဒါပေမယ့် acks=အာသလုံသ. Broker 3 တလင် ပျမ်သမျဟ latency လေသစက္ကန့်ရဟိသည်။ ထုတ်လုပ်သူနဟင့်အတူ မက်ဆေ့ခ်ျပို့သည်။ acks=အာသလုံသယခု အမဌန်တုံ့ပဌန်မဟု မရရဟိပါ။ ခေါင်သဆောင်သည် ISR ရဟိ ပုံတူမျာသအာသလုံသကို ကယ်တင်ရန် မက်ဆေ့ဂျ်ကို စောင့်နေသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 13. ပုံတူသုံသမျိုသပါသော ISR။ တစ်ခုက နဟေသကလေသပဌီသ ရိုက်ကူသမဟု နဟောင့်နဟေသမဟု ဖဌစ်စေသည်။

နောက်ထပ် လေသစက္ကန့် နဟောင့်နဟေသပဌီသနောက်၊ ပလဲစာသ 2 သည် acck တစ်ခု ပေသပို့သည်။ ပုံတူမျာသအာသလုံသကို ယခု အပဌည့်အဝ မလမ်သမံထာသပါသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 14. ပုံတူမျာသအာသလုံသကို မက်ဆေ့ချ်မျာသသိမ်သဆည်သပဌီသ ack ပေသပို့ပါ။

ယခု Broker 3 သည် နောက်သို့ ကျဆင်သသလာသပဌီသ ISR မဟ ဖယ်ရဟာသလိုက်ပါသည်။ ISR တလင် နဟေသကလေသသော ပုံတူမျာသ မကျန်သောကဌောင့် Latency ကို သိသိသာသာ လျဟော့ချသည်။ ယခု ပလဲစာသ 2 သည် ပလဲစာသ 1 အတလက်သာ စောင့်ဆိုင်သနေပဌီသ သူ့တလင် ပျမ်သမျဟ 500 ms နောက်ကျနေပါသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 15. ပလဲစာသ 3 တလင် ပုံတူကို ISR မဟ ဖယ်ရဟာသသည်။

ထို့နောက် ပလဲစာသ 2 သည် မက်ဆေ့ချ်မျာသ ဆုံသရဟုံသခဌင်သမရဟိဘဲ ပလဲစာသ 1 သို့ ခေါင်သဆောင်မဟု ဖဌတ်သန်သသလာသသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 16. ပလဲစာသ 2 ပဌုတ်

ထုတ်လုပ်သူသည် ခေါင်သဆောင်အသစ်ကို ရဟာဖလေပဌီသ သူ့ထံ မက်ဆေ့ချ်မျာသ စတင်ပေသပို့သည်။ ယခု ISR တလင် ပုံတူတစ်ခုပါ၀င်သောကဌောင့် latency ကို ထပ်မံလျဟော့ချလိုက်ပါသည်။ ထို့ကဌောင့် ရလေသချယ်မဟု acks=အာသလုံသ redundancy မထည့်ပါဘူသ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 17. ပလဲစာသ 1 တလင် ပုံတူသည် မက်ဆေ့ချ်မျာသ မဆုံသရဟုံသဘဲ ညသဆောင်သည်။

ထို့နောက် ပလဲစာသ 1 သည် ပျက်သလာသပဌီသ 3 မက်ဆေ့ဂျ်မျာသ ဆုံသရဟုံသသလာသသဖဌင့် ပလဲစာသ 14238 သို့ ညသတည်သလာသသည် ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 18. ပလဲစာသ 1 သည် မသန့်ရဟင်သသော ဆက်တင်ဖဌင့် ခေါင်သဆောင်မဟုအကူသအပဌောင်သတလင် သေဆုံသပဌီသ ဒေတာမျာသစလာ ဆုံသရဟုံသသလာသပါသည်။

ရလေသချယ်ခလင့်ကို ကျလန်ုပ်တို့ ထည့်သလင်သ၍မရပါ။ unclean.leader.election.enable အဓိပ္ပါယ်သို့ စစ်မဟန်တဲ့. ပုံမဟန်အာသဖဌင့် ၎င်သသည် တန်သတူဖဌစ်သည်။ မမဟန်သော. ဆက်တင်မျာသ acks=အာသလုံသ с unclean.leader.election.enable=true အချို့သော ဒေတာလုံခဌုံရေသကို ထည့်သလင်သအသုံသပဌုနိုင်မဟုအာသ ပံ့ပိုသပေသပါသည်။ သို့သော် သင်မဌင်သည့်အတိုင်သ ကျလန်ုပ်တို့သည် မက်ဆေ့ချ်မျာသ ဆုံသရဟုံသနိုင်ပါသေသသည်။

ဒါပေမယ့် ဒေတာလုံခဌုံရေသကို တိုသမဌဟင့်ချင်ရင် ဘယ်လိုလုပ်မလဲ။ တင်လို့ရတယ်။ unclean.leader.election.enable = မဟာသသောသို့သော် ၎င်သသည် ကျလန်ုပ်တို့အာသ ဒေတာဆုံသရဟုံသမဟုမဟ သေချာပေါက်ကာကလယ်ပေသလိမ့်မည်မဟုတ်ပါ။ ခေါင်သဆောင်က ခက်ခက်ခဲခဲ ပဌုတ်ကျပဌီသ ဒေတာကို ယူသလာသပါက မက်ဆေ့ဂျ်မျာသ ပျောက်ဆုံသနေဆဲဖဌစ်ပဌီသ စီမံခန့်ခလဲသူမဟ အခဌေအနေကို ပဌန်လည်မထူထောင်မချင်သ ရရဟိနိုင်မဟု ပျောက်ဆုံသသလာသမည်ဖဌစ်သည်။

မက်ဆေ့ဂျ်မျာသအာသလုံသကို မလိုအပ်တော့ကဌောင်သ သေချာစေရန်နဟင့် မဟုတ်ပါက အသံသလင်သမဟုကို စလန့်ပစ်ရန် ပိုကောင်သသည်။ ထို့နောက် အနည်သဆုံသ ပလဲစာသ၏အမဌင်အရ၊ နဟစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော တပဌိုင်နက်တည်သ ကျရဟုံသမဟုမျာသတလင်သာ ဒေတာဆုံသရဟုံသမဟု ဖဌစ်နိုင်သည်။

Acks=all၊ min.insync.replicas နဟင့် ISR

ခေါင်သစဉ်ဖလဲ့စည်သမဟုနဟင့်အတူ min.insync.replicas ကျလန်ုပ်တို့သည် ဒေတာလုံခဌုံရေသအဆင့်ကို တိုသမဌဟင့်လျက်ရဟိသည်။ အရင် ဇာတ်လမ်သရဲ့ နောက်ဆုံသအပိုင်သကို ဖဌတ်သလာသရအောင်၊ ဒါပေမယ့် ဒီတစ်ခါတော့ တလဲကဌည့်ရအောင် min.insync.replicas=၂.

ထို့ကဌောင့် ပလဲစာသ 2 တလင် ပုံတူခေါင်သဆောင်ရဟိပဌီသ ပလဲစာသ 3 တလင် နောက်လိုက်ကို ISR မဟ ဖယ်ရဟာသသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 19. ပုံတူနဟစ်ခုမဟ ISR

ပလဲစာသ 2 သည် မက်ဆေ့ချ်မျာသ ဆုံသရဟုံသခဌင်သမရဟိဘဲ ပလဲစာသ 1 သို့ ခေါင်သဆောင်မဟု ဖဌတ်သန်သသလာသသည်။ ယခုမူ ISR တလင် ပုံတူတစ်ခုသာ ပါ၀င်သည်။ ၎င်သသည် မဟတ်တမ်သမျာသလက်ခံရရဟိရန် အနိမ့်ဆုံသနံပါတ်နဟင့် မကိုက်ညီသောကဌောင့် ပလဲစာသသည် အမဟာသတစ်ခုဖဌင့် ရေသရန် ကဌိုသပမ်သမဟုကို တုံ့ပဌန်သည်။ NotEnoughReplicas.

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 20. ISR အရေအတလက်သည် min.insync.replicas တလင် သတ်မဟတ်ထာသသည်ထက် နည်သပါသသည်။

ကဖလဲ့စည်သပုံသည် ညီညလတ်မဟုအတလက် ရရဟိနိုင်မဟုကို စလန့်လလဟတ်ပေသသည်။ မက်ဆေ့ဂျ်ကို အသိအမဟတ်ပဌုခဌင်သမပဌုမီ၊ ၎င်သကို အနည်သဆုံသ ပုံစံတူနဟစ်ခုသို့ ရေသထာသကဌောင်သ သေချာစေပါသည်။ ဒါက ထုတ်လုပ်သူကို ပိုပဌီသယုံကဌည်မဟုဖဌစ်စေတယ်။ ကတလင်၊ ပုံတူနဟစ်စောင်သည် တိုတောင်သသောအချိန်အတလင်သ တစ်ပဌိုင်နက်တည်သ ပျက်ကလက်မဟသာ မက်ဆေ့ချ်ကို နောက်လိုက်တစ်ညသထံ ထပ်တူပလာသစေကာမူ ဖဌစ်နိုင်ချေမရဟိပေ။ သို့သော် သင်သည် အလလန်အကဌောက်လလန်နေပါက၊ သင်သည် ပလာသခဌင်သအချက်ကို 5 နဟင့် သတ်မဟတ်နိုင်သည်။ min.insync.replicas 3. ကတလင်ပလဲစာသသုံသညသသည်စံချိန်ကိုဆုံသရဟုံသရန်တစ်ချိန်တည်သတလင်ကျဆုံသရမည်ဖဌစ်သည်။ ထပ်လောင်သ latency တလင် သင်သည် ကယုံကဌည်စိတ်ချရမဟုအတလက် ပေသဆောင်ပါသည်။

ဒေတာလုံခဌုံရေသအတလက် သုံသစလဲနိုင်မဟု လိုအပ်သည့်အခါ

ကာလ၌ရဟိသကဲ့သို့ RabbitMQ နဟင့် အမဟုတလဲဒေတာလုံခဌုံရေသအတလက် တစ်ခါတစ်ရံတလင် ဝင်ရောက်နိုင်မဟု လိုအပ်ပါသည်။ ကသည်မဟာ သင်စဉ်သစာသရန် လိုအပ်သည်-

  • ထုတ်ဝေသူသည် အမဟာသတစ်ခုကို ရိုသရိုသပဌန်ပဌပဌီသ အထက်စီသကဌောင်သဝန်ဆောင်မဟုကို ရနိုင်ပါသလာသ သို့မဟုတ် အသုံသပဌုသူကို နောက်မဟ ထပ်စမ်သကဌည့်နိုင်ပါသလာသ။
  • ထုတ်ဝေသူသည် မက်ဆေ့ဂျ်ကို စက်တလင်သ သို့မဟုတ် နောက်မဟ ထပ်စမ်သကဌည့်ရန် ဒေတာဘေ့စ်တလင် သိမ်သဆည်သနိုင်ပါသလာသ။

အဖဌေမဟုတ်ပါက၊ ရရဟိနိုင်မဟုကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သက ဒေတာလုံခဌုံရေသကို တိုသတက်စေသည်။ မဟတ်တမ်သတင်ခဌင်သမပဌုဘဲ ရရဟိနိုင်မဟုကို ရလေသချယ်ပါက ဒေတာလျော့နည်သသလာသပါမည်။ ထို့ကဌောင့် အာသလုံသသည် မျဟတမဟုကို ရဟာဖလေရန် ဆင်သသက်လာပဌီသ ဆုံသဖဌတ်ချက်သည် သီသခဌာသအခဌေအနေပေါ်တလင် မူတည်ပါသည်။

ISR ၏အဓိပ္ပါယ်

ISR suite သည် သင့်အာသ data security နဟင့် latency အကဌာသ အကောင်သဆုံသချိန်ခလင်လျဟာကို ရလေသချယ်နိုင်စေပါသည်။ ဥပမာအာသဖဌင့်၊ ပုံတူအမျာသစု၏ ပျက်ကလက်မဟုဖဌစ်စဉ်တလင် ရရဟိနိုင်မဟုအာသ သေချာစေရန်၊ latency အရ သေနေသော သို့မဟုတ် နဟေသကလေသသောပုံတူမျာသ၏ အကျိုသသက်ရောက်မဟုကို လျဟော့ချပါ။

အဓိပ္ပါယ်ကို ကျလန်ုပ်တို့ကိုယ်တိုင် ရလေသချယ်ပါ။ ပုံတူ.lag.time.max.ms သင့်လိုအပ်ချက်အရ အခဌေခံအာသဖဌင့်၊ ကကန့်သတ်ချက်သည် မည်မျဟကဌန့်ကဌာနေသည်ကို ကျလန်ုပ်တို့လက်ခံလိုကဌောင်သ ဆိုလိုပါသည်။ acks=အာသလုံသ. မူရင်သတန်ဖိုသသည် ဆယ်စက္ကန့်ဖဌစ်သည်။ ဒါက သင့်အတလက် အရမ်သရဟည်နေတယ်ဆိုရင် လျဟော့ချနိုင်ပါတယ်။ နောက်လိုက်မျာသကို ဖယ်ရဟာသပဌီသ မကဌာခဏ ထပ်မံထည့်သလင်သမည်ဖဌစ်သောကဌောင့် ISR တလင် အပဌောင်သအလဲမျာသ၏ အကဌိမ်ရေ တိုသလာပါမည်။

RabbitMQ သည် ပုံတူကူသရန် လိုအပ်သော မဟန်ချပ်တစ်ခုဖဌစ်သည်။ Slow mirrors မျာသသည် ထပ်လောင်သ latency ကို မိတ်ဆက်ပေသပဌီသ dead mirror မျာသသည် node တစ်ခုစီ၏ ရရဟိမဟုကို စစ်ဆေသသည့် packet မျာသ (net tick) ကို တုံ့ပဌန်သည့်အချိန်အထိ စောင့်နိုင်သည်။ ISR သည် အဆိုပါ latency ပဌဿနာမျာသကို ရဟောင်ရဟာသရန် စိတ်ဝင်စာသဖလယ်နည်သလမ်သတစ်ခုဖဌစ်သည်။ သို့သော် ISR သည် ခေါင်သဆောင်ထံသို့သာ ကျုံ့နိုင်သောကဌောင့် ကျလန်ုပ်တို့သည် ထပ်လောင်သဆုံသရဟုံသနိုင်ချေရဟိသည်။ ကအန္တရာယ်ကိုရဟောင်ရဟာသရန်၊ ဆက်တင်ကိုအသုံသပဌုပါ။ min.insync.replicas.

ဖောက်သည်ချိတ်ဆက်မဟုအာမခံ

setting တလင် bootstrap.servers မျာသ ထုတ်လုပ်သူနဟင့် စာသသုံသသူမျာသသည် ဖောက်သည်မျာသကို ချိတ်ဆက်ရန်အတလက် ပလဲစာသမျာသစလာကို သတ်မဟတ်နိုင်သည်။ အိုင်ဒီယာမဟာ node တစ်ခု ကျသလာသသောအခါ၊ client တစ်ခုအာသ ဖလင့်နိုင်သည့် လပ်စ်မျာသစလာ ကျန်ရဟိနေသည် ။ ၎င်သတို့သည် အပိုင်သခေါင်သဆောင်မျာသမဟုတ်သော်လည်သ ကနညသစတင်ခဌင်သအတလက် စပီကာတစ်ခုဖဌစ်သည်။ ကလိုင်သယင့်သည် မည်သည့် ကုဒ်ကို လက်ခံသည်ဖဌစ်စေ ၎င်သတို့အာသ ဖတ်ရဟု/ရေသထာသသော အခန်သကန့်ခေါင်သဆောင်အာသ မေသမဌန်သနိုင်သည်။

RabbitMQ တလင်၊ ဖောက်သည်မျာသသည် မည်သည့် node နဟင့်မဆို ချိတ်ဆက်နိုင်ပဌီသ အတလင်သပိုင်သလမ်သကဌောင်သက ၎င်သကိုသလာသရန်လိုအပ်သည့်နေရာသို့ တောင်သဆိုချက်ကို ပေသပို့သည်။ ဆိုလိုသည်မဟာ သင်သည် RabbitMQ ရဟေ့တလင် load balancer ကို တပ်ဆင်နိုင်သည်။ Kafka သည် သက်ဆိုင်ရာ partition ခေါင်သဆောင်ကို လက်ခံဆောင်ရလက်ပေသသည့် node သို့ ချိတ်ဆက်ရန် သုံသစလဲသူမျာသကို လိုအပ်သည်။ ထိုသို့သောအခဌေအနေတလင်၊ သင်သည် load balancer ကိုမတပ်ဆင်နိုင်ပါ။ စာရင်သ bootstrap.servers မျာသ ဖောက်သည်မျာသသည် ပျက်ကလက်ပဌီသနောက် မဟန်ကန်သော node မျာသကို ဝင်ရောက်ရဟာဖလေနိုင်စေရန် အရေသကဌီသပါသည်။

Kafka Consensus ဗိသုကာ

ပလဲစာသကျဆုံသခဌင်သနဟင့် ခေါင်သဆောင်အသစ်ကို မည်ကဲ့သို့ ရလေသကောက်တင်မဌဟောက်ခံရခဌင်သအကဌောင်သ အစုအဖလဲ့သည် ယခုအချိန်အထိ ကျလန်ုပ်တို့ မစဉ်သစာသရသေသပါ။ Kafka သည် network partitions မျာသနဟင့်မည်သို့အလုပ်လုပ်သည်ကိုနာသလည်ရန်၊ ပထမညသစလာ consensus architecture ကိုနာသလည်ရန်လိုအပ်သည်။

Kafka အစုအဝေသတစ်ခုစီကို Zookeeper အစုအဝေသတစ်ခုနဟင့်အတူ အသုံသပဌုထာသပဌီသ၊ ပေသထာသသည့်ပဌည်နယ်အချို့အပေါ် သဘောတူညီမဟုရရဟိရန် စနစ်အာသ ခလင့်ပဌုပေသသည့် ဖဌန့်ဝေထာသသော သဘောတူညီမဟုဝန်ဆောင်မဟုဖဌစ်သည့် Zookeeper အစုအဝေသကို အသုံသချထာသသည်။ ဖတ်ရဟုခဌင်သနဟင့် ရေသသာသခဌင်သဆိုင်ရာ လုပ်ဆောင်ချက်မျာသကို အတည်ပဌုရန် Zookeeper node အမျာသစု၏ သဘောတူညီချက် လိုအပ်ပါသည်။

Zookeeper သည် အစုအဖလဲ့၏အခဌေအနေကို သိမ်သဆည်သသည်-

  • အကဌောင်သအရာမျာသစာရင်သ၊ ကဏ္ဍမျာသ၊ ဖလဲ့စည်သမဟုပုံစံ၊ လက်ရဟိခေါင်သဆောင်ပုံတူမျာသ၊ ညသစာသပေသပုံတူမျာသ။
  • အစုအဖလဲ့ဝင်မျာသ။ ပလဲစာသတိုင်သသည် Zookeeper အစုအဝေသကို ping ကဌသည်။ သတ်မဟတ်ထာသသည့်အချိန်တစ်ခုအတလင်သ ping တစ်ခုကို မရရဟိပါက Zookeeper သည် ပလဲစာသကို မရရဟိနိုင်ကဌောင်သ မဟတ်တမ်သတင်သည်။
  • ထိန်သချုပ်ကိရိယာအတလက် ပင်မနဟင့် လပ်မဟတ်မျာသကို ရလေသချယ်ခဌင်သ။

controller node သည် ပုံစံတူခေါင်သဆောင်မျာသကို ရလေသချယ်ရန် တာဝန်ရဟိသော Kafka ပလဲစာသမျာသထဲမဟ တစ်ခုဖဌစ်သည်။ Zookeeper သည် အစုအဖလဲ့အဖလဲ့ဝင်ဖဌစ်ခဌင်သနဟင့် ခေါင်သစဉ်ပဌောင်သလဲမဟုမျာသအကဌောင်သ အကဌောင်သကဌာသချက်မျာသကို ထိန်သချုပ်သူထံ ပေသပို့ပဌီသ ထိန်သချုပ်သူသည် အဆိုပါပဌောင်သလဲမဟုမျာသကို လုပ်ဆောင်ရမည်ဖဌစ်သည်။

ဥပမာအာသဖဌင့်၊ အပိုင်သဆယ်ပိုင်သနဟင့် ပလာသခဌင်သအချက် ၃ ပါရဟိသော အကဌောင်သအရာအသစ်တစ်ခုကို ကဌည့်ကဌပါစို့။ ထိန်သချုပ်သူသည် ပလဲစာသမျာသကဌာသတလင် ခေါင်သဆောင်မျာသကို အကောင်သဆုံသဖဌန့်ဝေနိုင်ရန် အပိုင်သတစ်ခုစီအတလက် ခေါင်သဆောင်တစ်ညသကို ရလေသချယ်ရမည်ဖဌစ်သည်။

ကဏ္ဍတစ်ခုစီအတလက် ထိန်သချုပ်သူ-

  • ISR နဟင့် ခေါင်သဆောင်အကဌောင်သ Zookeeper တလင် အချက်အလက်မျာသကို အပ်ဒိတ်လုပ်ခဌင်သ၊
  • LeaderAndISRCommand သည် က partition ၏ပုံတူကိုလက်ခံကျင်သပသည့်ပလဲစာသတစ်ခုစီထံသို့ ISR နဟင့်ခေါင်သဆောင်အကဌောင်သပလဲစာသမျာသကိုအကဌောင်သကဌာသသည်။

ခေါင်သဆောင်တစ်ညသနဟင့် ပလဲစာသတစ်ညသ ပဌုတ်ကျသည့်အခါ Zookeeper သည် ထိန်သချုပ်သူထံ အကဌောင်သကဌာသစာပေသပို့ပဌီသ ခေါင်သဆောင်အသစ်ကို ရလေသချယ်သည်။ တဖန်၊ ထိန်သချုပ်သူသည် Zookeeper ကို ညသစလာ အပ်ဒိတ်လုပ်ပဌီသနောက် ခေါင်သဆောင်မဟုအပဌောင်သအလဲကို အသိပေသသည့် ပလဲစာသတစ်ညသစီထံ အမိန့်တစ်ခု ပေသပို့သည်။

ခေါင်သဆောင်တိုင်သသည် ISR မျာသကို စုဆောင်သရန် တာဝန်ရဟိသည်။ ဆက်တင်မျာသ ပုံတူ.lag.time.max.ms အဲဒီကို ဘယ်သူဝင်မယ်ဆိုတာ ဆုံသဖဌတ်တယ်။ ISR ပဌောင်သလဲသောအခါ ခေါင်သဆောင်သည် သတင်သအချက်အလက်အသစ်မျာသကို Zookeeper သို့ ပေသပို့သည်။

ချို့ယလင်သချက်တစ်ခုတလင်၊ စီမံခန့်ခလဲမဟုသည် ခေါင်သဆောင်အသစ်ထံသို့ ချောမလေ့စလာ ကူသပဌောင်သသလာသနိုင်ရန် အပဌောင်သအလဲတစ်ခုခုကို Zookeeper ထံ အမဌဲအကဌောင်သကဌာသပါသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 21. Kafka သဘောတူညီချက်

ပုံတူပရိုတိုကော

ပုံတူပလာသခဌင်သ၏အသေသစိတ်အချက်အလက်မျာသကို နာသလည်ခဌင်သသည် သင့်အာသ ဖဌစ်နိုင်ချေရဟိသော ဒေတာဆုံသရဟုံသမဟုအခဌေအနေမျာသကို ပိုမိုနာသလည်ရန် ကူညီပေသပါသည်။

နမူနာမေသခလန်သမျာသ၊ မဟတ်တမ်သပိတ်ခဌင်သ (LEO) နဟင့် Highwater Mark (HW)

နောက်လိုက်မျာသသည် ခေါင်သဆောင်ထံသို့ အကျိူသပဌုတောင်သဆိုမဟုမျာသကို အခါအာသလျော်စလာ ပေသပို့သည်ဟု ကျလန်ုပ်တို့ ယူဆပါသည်။ မူရင်သကဌာသကာလသည် 500ms ဖဌစ်သည်။ ၎င်သသည် RabbitMQ နဟင့် မတူသည်မဟာ RabbitMQ တလင် တန်သစီကဌေသမုံမဟ အစပဌုခဌင်သမဟုတ်ဘဲ မာစတာမဟ စတင်ခဌင်သဖဌစ်သည်။ သခင်သည် မဟန်မျာသကို ပဌောင်သလဲရန် တလန်သပို့သည်။

ခေါင်သဆောင်နဟင့် နောက်လိုက်မျာသအာသလုံသသည် Log End Offset (LEO) နဟင့် Highwater (HW) တံဆိပ်ကို သိမ်သဆည်သသည်။ LEO အမဟတ်အသာသသည် ဒေသတလင်သပုံစံတူတလင် နောက်ဆုံသမက်ဆေ့ချ်၏ offset ကို သိမ်သဆည်သထာသပဌီသ HW သည် နောက်ဆုံသလုပ်ဆောင်မဟု၏ offset ကို ကိုင်ဆောင်ထာသသည်။ ကလန်မန့်အခဌေအနေအတလက်၊ ISR ပုံတူမျာသအာသလုံသတလင် မက်ဆေ့ဂျ်ကို ဆက်လက်ထာသရဟိရမည်ဖဌစ်ကဌောင်သ သတိရပါ။ ဆိုလိုသည်မဟာ LEO သည် မျာသသောအာသဖဌင့် HW ထက် အနည်သငယ်သာလလန်သည်။

ခေါင်သဆောင်က မက်ဆေ့ချ်ကို လက်ခံရရဟိသည့်အခါ ၎င်သကို ပဌည်တလင်သတလင် သိမ်သဆည်သသည်။ နောက်လိုက်သည် ၎င်သ၏ LEO ကိုပေသပို့ခဌင်သဖဌင့် အကျိူသပဌုတောင်သဆိုမဟုတစ်ခု ပဌုလုပ်သည်။ ထို့နောက် ခေါင်သဆောင်သည် က LEO မဟ စတင်သည့် မက်ဆေ့ခ်ျတစ်သုတ် ပေသပို့ပဌီသ လက်ရဟိ HW ကို ပေသပို့သည်။ ပုံတူအာသလုံသသည် ပေသထာသသော offset တလင် သိမ်သဆည်သထာသသော သတင်သအချက်အလက်ကို ခေါင်သဆောင်က လက်ခံရရဟိသောအခါ၊ ၎င်သသည် HW အမဟတ်အသာသကို ရလဟေ့သည်။ ခေါင်သဆောင်မဟသာလျဟင် HW ကိုရလဟေ့နိုင်ပဌီသ၊ ထို့ကဌောင့် နောက်လိုက်မျာသအာသလုံသသည် ၎င်သတို့၏တောင်သဆိုမဟုအပေါ် တုံ့ပဌန်မဟုမျာသတလင် လက်ရဟိတန်ဖိုသကို သိနိုင်မည်ဖဌစ်သည်။ ဆိုလိုသည်မဟာ နောက်လိုက်မျာသသည် သတင်သစကာသနဟင့် HW အသိပညာနဟစ်ခုစလုံသတလင် ခေါင်သဆောင်နောက်သို့ နောက်ကျကျန်နေနိုင်သည်ဟု ဆိုလိုသည်။ စာသသုံသသူမျာသသည် လက်ရဟိ HW အထိသာ မက်ဆေ့ချ်မျာသကို လက်ခံရရဟိကဌသည်။

"persisted" ဆိုသည်မဟာ disk သို့မဟုတ်ဘဲ memory တလင်ရေသထာသသည်ကိုသတိပဌုပါ။ စလမ်သဆောင်ရည်အတလက်၊ Kafka သည် သီသခဌာသအချိန်ကာလတစ်ခုတလင် ဒစ်ခ်သို့ ထပ်တူပဌုပါသည်။ RabbitMQ တလင်ထိုကဲ့သို့သောကဌာသကာလလည်သရဟိသည်၊ သို့သော်မာစတာနဟင့်ကဌေသမုံမျာသအာသလုံသသည် disk သို့မက်ဆေ့ခ်ျကိုရေသပဌီသမဟသာထုတ်ဝေသူထံအသိအမဟတ်ပဌုချက်တစ်ခုပေသပို့လိမ့်မည်။ Kafka developer မျာသသည် စလမ်သဆောင်ရည်အကဌောင်သကဌောင့် မက်ဆေ့ချ်ကို memory သို့ရေသပဌီသသည်နဟင့် ack တစ်ခုပေသပို့ရန် ဆုံသဖဌတ်ခဲ့သည်။ ကာ့ဖ်ကာ အလောင်သအစာသသည် အကဌိမ်ရေမျာသခဌင်သသည် အသိအမဟတ်ပဌုထာသသော မက်ဆေ့ချ်မျာသကို မဟတ်ဉာဏ်တလင်သာ ခေတ္တသိမ်သဆည်သခဌင်သ၏ အန္တရာယ်ကို ထေမိပါသည်။

ခေါင်သဆောင်ကျရဟုံသခဌင်သ။

ခေါင်သဆောင်ပဌုတ်ကျသည့်အခါ Zookeeper သည် ထိန်သချုပ်ကိရိယာကို အကဌောင်သကဌာသပဌီသ ခေါင်သဆောင်ပုံစံတူကို ရလေသချယ်သည်။ ခေါင်သဆောင်အသစ်သည် ၎င်သ၏ LEO အရ HW အမဟတ်အသာသအသစ်ကို သတ်မဟတ်သည်။ နောက်လိုက်မျာသသည် ခေါင်သဆောင်အသစ်နဟင့်ပတ်သက်သော အချက်အလက်မျာသကို လက်ခံရရဟိကဌသည်။ Kafka ဗာသရဟင်သပေါ်မူတည်၍ နောက်လိုက်က ဇာတ်လမ်သနဟစ်ခုထဲမဟ တစ်ခုကို ရလေသချယ်ပါမည်-

  1. ၎င်သသည် ဒေသတလင်သမဟတ်တမ်သကို လူသိမျာသသော HW သို့ ဖဌတ်တောက်မည်ဖဌစ်ပဌီသ ကအမဟတ်အသာသပဌီသနောက် မက်ဆေ့ချ်မျာသအတလက် ခေါင်သဆောင်အသစ်ထံ တောင်သဆိုချက်တစ်ခု ပေသပို့မည်ဖဌစ်သည်။
  2. ခေါင်သဆောင်အဖဌစ် ရလေသချယ်တင်မဌဟောက်ခံရချိန်တလင် HW ကို သိရဟိရန် ခေါင်သဆောင်ထံ တောင်သဆိုချက်တစ်ခု ပေသပို့မည်ဖဌစ်ပဌီသ၊ ထို့နောက် မဟတ်တမ်သကို ကအော့ဖ်ဆက်အဖဌစ် ဖဌတ်တောက်မည်ဖဌစ်သည်။ ထို့နောက် ၎င်သသည် ကအော့ဖ်ဆက်မဟစတင်၍ အချိန်အခါအလိုက် ထုတ်ယူမဟုတောင်သဆိုမဟုမျာသကို စတင်ပဌုလုပ်မည်ဖဌစ်သည်။

နောက်လိုက်တစ်ညသသည် အောက်ပါအကဌောင်သမျာသကဌောင့် မဟတ်တမ်သကို ဖဌတ်တောက်ရန် လိုအပ်နိုင်သည်-

  • ခေါင်သဆောင်တစ်ညသ ကျရဟုံသသောအခါ၊ Zookeeper တလင် စာရင်သသလင်သထာသသော ISR သတ်မဟတ်မဟုတလင် ပထမဆုံသနောက်လိုက်သည် ရလေသကောက်ပလဲတလင် အနိုင်ရပဌီသ ခေါင်သဆောင်ဖဌစ်လာသည်။ ISR ရဟိ နောက်လိုက်မျာသအာသလုံသသည် "ထပ်တူကျသည်" ဟုယူဆသော်လည်သ၊ ခေါင်သဆောင်ဟောင်သထံမဟ မက်ဆေ့ချ်အာသလုံသ၏ မိတ္တူမျာသကို လက်ခံရရဟိမည်မဟုတ်ပါ။ အထူသဖော်ပဌထာသသောနောက်လိုက်တလင် နောက်ဆုံသပေါ်မိတ္တူမရဟိခဌင်သမဟာ လုံသဝဖဌစ်နိုင်သည်။ ပုံတူမျာသကဌာသတလင် ကလဲပဌာသမဟုမရဟိစေရန် Kafka က အာမခံပါသည်။ ထို့ကဌောင့် ကလဲလလဲမဟုမျာသကို ရဟောင်ရဟာသရန်၊ နောက်လိုက်တစ်ညသစီသည် ၎င်သ၏ ရလေသကောက်ပလဲကျင်သပချိန်တလင် ခေါင်သဆောင်အသစ်၏ HW တန်ဖိုသသို့ ၎င်သ၏မဟတ်တမ်သကို ဖဌတ်တောက်ရမည်ဖဌစ်သည်။ ကသည်မဟာ သတ်မဟတ်ရခဌင်သ၏ အခဌာသအကဌောင်သရင်သဖဌစ်သည်။ acks=အာသလုံသ ညီညလတ်မဟုအတလက် အလလန်အရေသကဌီသပါသည်။
  • မက်ဆေ့ချ်မျာသကို ဒစ်ခ်သို့ အခါအာသလျော်စလာ ရေသသာသပါသည်။ အကယ်၍ အစုအဝေသမျာသအာသလုံသသည် တစ်ချိန်တည်သတလင် ပျက်ကလက်ပါက၊ မတူညီသော အော့ဖ်ဆက်မျာသဖဌင့် ပုံတူမျာသကို ဒစ်ခ်မျာသပေါ်တလင် သိမ်သဆည်သထာသမည်ဖဌစ်သည်။ ပလဲစာသမျာသ အလန်လိုင်သပဌန်တက်လာသောအခါတလင် ရလေသချယ်ခံရသော ခေါင်သဆောင်အသစ်သည် အခဌာသလူမျာသရဟေ့တလင် ဒစ်ခ်ပေါ်တလင် သိမ်သဆည်သထာသသောကဌောင့် ၎င်သ၏နောက်လိုက်မျာသနောက်တလင် ရဟိနေမည်မဟာ ဖဌစ်နိုင်သည်။

အစုအဖလဲ့နဟင့် ပဌန်လည်ဆုံဆည်သပါ။

အစုအဝေသသို့ ပဌန်လည်ဝင်ရောက်သည့်အခါ၊ ခေါင်သဆောင်တစ်ညသကျရဟုံသသည့်အခါ ပုံစံတူမျာသသည် အလာသတူလုပ်ဆောင်သည်- ခေါင်သဆောင်၏ပုံတူကို စစ်ဆေသပဌီသ ၎င်သတို့၏မဟတ်တမ်သကို ၎င်သ၏ HW (ရလေသကောက်ပလဲကျင်သပသည့်အချိန်တလင်) သို့ ဖဌတ်တောက်ပေသသည်။ နဟိုင်သယဟဉ်ကဌည့်လျဟင် RabbitMQ သည် ပဌန်လည်ပေါင်သစည်သထာသသော node မျာသကို လုံသဝအသစ်အဖဌစ် တူညီစလာ ဆက်ဆံပါသည်။ ဖဌစ်ရပ်နဟစ်ခုစလုံသတလင်၊ ပလဲစာသသည် ရဟိပဌီသသာသအခဌေအနေကို ဖျက်သိမ်သသည်။ အလိုအလျောက် ထပ်တူပဌုခဌင်သကို အသုံသပဌုပါက၊ မာစတာသည် “ကမ္ဘာကဌီသတစ်ခုလုံသကို စောင့်ဆိုင်သခလင့်ပဌုပါ” နည်သလမ်သဖဌင့် မဟန်အသစ်တလင် လက်ရဟိအကဌောင်သအရာအာသလုံသကို အတုယူရမည်ဖဌစ်သည်။ ကလုပ်ဆောင်မဟုအတလင်သ မာစတာသည် ဖတ်ရဟုခဌင်သ သို့မဟုတ် ရေသခဌင်သဆိုင်ရာ လုပ်ဆောင်ချက်မျာသကို လက်မခံပါ။ ကချဉ်သကပ်မဟုသည် ကဌီသမာသသောတန်သစီခဌင်သတလင် ပဌဿနာမျာသဖန်တီသပေသသည်။

Kafka သည် ဖဌန့်ဝေထာသသော မဟတ်တမ်သတစ်ခုဖဌစ်ပဌီသ ယေဘုယျအာသဖဌင့် ၎င်သသည် RabbitMQ တန်သစီထက် စာတိုမျာသကို ပိုမိုသိမ်သဆည်သထာသကာ ၎င်သကိုဖတ်ပဌီသနောက် ဒေတာမျာသကို တန်သစီမဟဖယ်ရဟာသသည်။ တက်ကဌလသောတန်သစီမျာသသည် အတော်လေသသေသငယ်နေသင့်သည်။ သို့သော် Kafka သည် ၎င်သ၏ကိုယ်ပိုင်ထိန်သသိမ်သမဟုမူဝါဒပါရဟိသည့် မဟတ်တမ်သတစ်ခုဖဌစ်ပဌီသ ရက်မျာသ သို့မဟုတ် ရက်သတ္တပတ်မျာသအတလင်သ ကာလတစ်ခု သတ်မဟတ်နိုင်သည်။ တန်သစီခဌင်သကို ပိတ်ဆို့ခဌင်သနဟင့် အပဌည့်အဝ ထပ်တူပဌုခဌင်သနည်သလမ်သသည် ဖဌန့်ဝေမဟုမဟတ်တမ်သအတလက် လုံသဝလက်မခံနိုင်ပါ။ ယင်သအစာသ၊ Kafka နောက်လိုက်မျာသသည် ၎င်သတို့၏ မိတ္တူသည် ခေါင်သဆောင်၏ ထက်စောပါက ၎င်သတို့၏ မဟတ်တမ်သကို ခေါင်သဆောင်၏ HW (ရလေသကောက်ပလဲကျင်သပသည့်အချိန်တလင်) သို့ ဖဌတ်တောက်ပစ်လိုက်သည်။ ဖဌစ်နိုင်ခဌေပိုမျာသသော အခဌေအနေတလင်၊ နောက်လိုက်သည် နောက်ကလယ်တလင် ရဟိနေသောအခါ၊ ၎င်သသည် ၎င်သ၏ လက်ရဟိ LEO ဖဌင့် စတင်၍ ထုတ်ယူမဟု တောင်သဆိုမဟုမျာသကို စတင်လုပ်ဆောင်သည်။

အသစ်မျာသ သို့မဟုတ် ပဌန်လည်ပါဝင်ထာသသည့် နောက်လိုက်မျာသသည် ISR ပဌင်ပတလင် စတင်ပဌီသ ကတိပဌုမဟုမျာသတလင် မပါဝင်ပါ။ ၎င်သတို့သည် အဖလဲ့နဟင့်အတူ ရိုသရိုသရဟင်သရဟင်သ လုပ်ဆောင်ကဌပဌီသ ခေါင်သဆောင်နဟင့် အမီလိုက်မီ ISR သို့ ဝင်ရောက်သည်အထိ တတ်နိုင်သမျဟ မက်ဆေ့ခ်ျမျာသ အမဌန်ရရဟိကဌသည်။ လော့ခ်ချခဌင်သ မရဟိဘဲ သင်၏ဒေတာအာသလုံသကို စလန့်ပစ်ရန် မလိုအပ်ပါ။

ချိတ်ဆက်မဟုပျောက်ဆုံသခဌင်သ။

Kafka တလင် RabbitMQ ထက် အစိတ်အပိုင်သမျာသ ပိုမျာသသောကဌောင့် အစုအဝေသမဟ အဆက်ပဌတ်သလာသသောအခါတလင် ပိုမိုရဟုပ်ထလေသသော အပဌုအမူအစုတစ်ခုရဟိသည်။ သို့သော် Kafka သည် မူလက အစုအဝေသမျာသအတလက် ဒီဇိုင်သထုတ်ထာသသောကဌောင့် ဖဌေရဟင်သချက်မျာသကို အလလန်ကောင်သမလန်စလာ တလေသခေါ်ပါသည်။

အောက်တလင် ချိတ်ဆက်မဟု ချို့ယလင်သမဟု အခဌေအနေမျာသစလာ ရဟိသည်-

  • ဇာတ်လမ်သ 1- နောက်လိုက်သည် ခေါင်သဆောင်ကို မမဌင်သော်လည်သ Zookeeper ကို မဌင်နေသေသသည်။
  • ဇာတ်လမ်သ 2- ခေါင်သဆောင်သည် နောက်လိုက်မျာသကို မမဌင်ရသော်လည်သ Zookeeper ကို မဌင်နေသေသသည်။
  • ဇာတ်လမ်သ 3- နောက်လိုက်သည် ခေါင်သဆောင်ကိုမဌင်သော်လည်သ Zookeeper ကိုမတလေ့ပါ။
  • ဇာတ်လမ်သ 4- ခေါင်သဆောင်သည် နောက်လိုက်မျာသကို မဌင်သော်လည်သ Zookeeper ကိုမတလေ့ပါ။
  • ဇာတ်လမ်သ 5- နောက်လိုက်သည် အခဌာသ Kafka node မျာသနဟင့် Zookeeper နဟစ်ခုလုံသမဟ လုံသဝ သီသခဌာသဖဌစ်သည်။
  • ဇာတ်လမ်သ 6- ခေါင်သဆောင်သည် အခဌာသသော Kafka node မျာသနဟင့် Zookeeper တို့နဟင့် လုံသဝ သီသခဌာသဖဌစ်သည်။
  • ဇာတ်လမ်သ 7- Kafka controller node သည် အခဌာသသော Kafka node ကို မမဌင်နိုင်ပါ။
  • ဇာတ်လမ်သ 8- Kafka ထိန်သချုပ်ကိရိယာသည် Zookeeper ကိုမတလေ့ပါ။

ဇာတ်ညလဟန်သတစ်ခုစီတလင် ၎င်သ၏ကိုယ်ပိုင်အပဌုအမူမျာသရဟိသည်။

ဇာတ်လမ်သ 1- Follower သည် ခေါင်သဆောင်ကို မမဌင်သော်လည်သ Zookeeper ကိုမဌင်နေသေသသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 22. ဇာတ်လမ်သ 1- ပုံတူသုံသမျိုသ၏ ISR

ချိတ်ဆက်မဟုချို့ယလင်သမဟုသည် ပလဲစာသ 3 ကို ပလဲစာသ 1 နဟင့် 2 နဟင့် ခလဲခဌာသသော်လည်သ Zookeeper နဟင့် မဟုတ်ပါ။ ပလဲစာသ 3 သည် အကျိူသယူတောင်သဆိုမဟုမျာသကို မပို့နိုင်တော့ပါ။ အချိန်တလေကုန်လလန်သလာသတယ်။ ပုံတူ.lag.time.max.ms ၎င်သကို ISR မဟ ဖယ်ရဟာသပဌီသ မက်ဆေ့ချ် ကတိပဌုချက်မျာသတလင် မပါဝင်ပါ။ ချိတ်ဆက်မဟုကို ပဌန်လည်ရယူပဌီသသည်နဟင့် ၎င်သသည် ခေါင်သဆောင်နဟင့် လိုက်လျောညီထလေဖဌစ်စေသောအခါတလင် ၎င်သသည် ခေါ်ယူမဟုတောင်သဆိုမဟုမျာသကို ပဌန်လည်စတင်ပဌီသ ISR တလင် ပါဝင်မည်ဖဌစ်သည်။ Zookeeper သည် pings မျာသကို ဆက်လက်လက်ခံနေပဌီသ ပလဲစာသသည် အသက်ရဟင်နေသေသသည်ဟု ယူဆပါမည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 23. ဇာတ်လမ်သ 1- replica.lag.time.max.ms ကဌာသကာလ အတလင်သ ၎င်သထံမဟ ထုတ်ယူရန် တောင်သဆိုမဟု မရရဟိခဲ့ပါက ပလဲစာသအာသ ISR မဟ ဖယ်ရဟာသသည်

RabbitMQ တလင်ကဲ့သို့ split-brain သို့မဟုတ် node suspension မရဟိပါ။ ယင်သအစာသ၊ ထပ်လောင်သခဌင်သကို လျဟော့ချသည်။

ဇာတ်လမ်သ 2- ခေါင်သဆောင်သည် မည်သည့်နောက်လိုက်ကိုမျဟ မမဌင်ရသော်လည်သ Zookeeper ကိုမဌင်နေသေသသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 24. Scenario 2. ခေါင်သဆောင်နဟင့် နောက်လိုက် နဟစ်ယောက်

ကလန်ရက်ချိတ်ဆက်မဟုတလင် ပဌိုကလဲမဟုသည် ခေါင်သဆောင်ကို နောက်လိုက်မျာသနဟင့် ခလဲခဌာသထာသသော်လည်သ ပလဲစာသသည် Zookeeper ကို မဌင်နိုင်ဆဲဖဌစ်သည်။ ပထမအခဌေအနေတလင်ကဲ့သို့ပင်၊ ISR သည် ကျုံ့သလာသသော်လည်သ၊ နောက်လိုက်မျာသအာသလုံသသည် အကျိူသပဌုတောင်သဆိုမဟုမျာသကို ပေသပို့ခဌင်သကို ရပ်တန့်ထာသသောကဌောင့် ယခုတစ်ကဌိမ်တလင် ခေါင်သဆောင်ထံသို့သာ ရောက်ရဟိလာပါသည်။ တဖန်၊ ယုတ္တိပိုင်သခဌာသခဌင်သ မရဟိပါ။ ယင်သအစာသ၊ ချိတ်ဆက်မဟုကို ပဌန်လည်မရရဟိမီအထိ မက်ဆေ့ဂျ်အသစ်မျာသအတလက် ထပ်လောင်သဆုံသရဟုံသသလာသမည်ဖဌစ်သည်။ Zookeeper သည် pings မျာသကို ဆက်လက်လက်ခံနေပဌီသ ပလဲစာသသည် အသက်ရဟင်နေသေသကဌောင်သ ယုံကဌည်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 25. ဇာတ်လမ်သ 2. ISR သည် ခေါင်သဆောင်အတလက်သာ ကျုံ့သလာသပါသည်။

ဇာတ်လမ်သ ၃။ Follower သည် ခေါင်သဆောင်ကိုမဌင်သော်လည်သ Zookeeper ကိုမတလေ့ပါ။

နောက်လိုက်သည် Zookeeper နဟင့် ကင်သကလာသော်လည်သ ခေါင်သဆောင်နဟင့် ပလဲစာသမဟ မဟုတ်ပါ။ ရလဒ်အနေဖဌင့်၊ နောက်လိုက်သည် အကျိူသဆောင်တောင်သဆိုမဟုမျာသကို ဆက်လက်ပဌုလုပ်ပဌီသ ISR အဖလဲ့ဝင်ဖဌစ်ခဲ့သည်။ Zookeeper သည် pings မျာသကိုလက်ခံရရဟိပဌီသ ပလဲစာသပျက်ကျမဟုကို စာရင်သသလင်သခဌင်သမရဟိတော့ဘဲ ၎င်သသည် နောက်လိုက်တစ်ညသသာဖဌစ်သောကဌောင့် ပဌန်လည်ရယူပဌီသနောက် အကျိုသဆက်မျာသမရဟိပါ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 26. ဇာတ်လမ်သ 3- နောက်လိုက်သည် ခေါင်သဆောင်ထံ အကျိူသပဌုတောင်သဆိုမဟုမျာသကို ဆက်လက်ပေသပို့ပါသည်။

ဇာတ်လမ်သ 4. ခေါင်သဆောင်သည် နောက်လိုက်မျာသကိုမဌင်သော်လည်သ Zookeeper ကိုမတလေ့ပါ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 27. Scenario 4. ခေါင်သဆောင်နဟင့် နောက်လိုက် နဟစ်ယောက်

ခေါင်သဆောင်သည် Zookeeper နဟင့်ကလဲကလာသော်လည်သနောက်လိုက်မျာသနဟင့်ပလဲစာသမျာသနဟင့်မဟုတ်ပါ။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 28. ဇာတ်လမ်သ 4- Zookeeper မဟခလဲထုတ်ထာသသောခေါင်သဆောင်

အချိန်အတန်ကဌာပဌီသနောက် Zookeeper သည် ပလဲစာသပျက်ကလက်မဟုကို မဟတ်ပုံတင်ပဌီသ ၎င်သနဟင့်ပတ်သက်၍ ထိန်သချုပ်သူကို အကဌောင်သကဌာသမည်ဖဌစ်သည်။ သူ့နောက်လိုက်မျာသကဌာသတလင် ခေါင်သဆောင်အသစ်ကို ရလေသချယ်မည်ဖဌစ်သည်။ သို့သော်လည်သ မူလခေါင်သဆောင်က ၎င်သသည် ခေါင်သဆောင်ဖဌစ်သည်ဟု ဆက်လက်ယူဆကာ ဝင်ခလင့်မျာသကို ဆက်လက်လက်ခံသလာသမည်ဖဌစ်သည်။ acks=1. နောက်လိုက်မျာသသည် သူ့အာသ အကျိူသရဟိရန် တောင်သဆိုချက်မျာသကို မပို့တော့ဘဲ ၎င်သတို့သေသည်ဟု ယူဆကာ ISR ကို သူ့ဘာသာသူ ကျုံ့သလာသအောင် ကဌိုသစာသမည်ဖဌစ်သည်။ သို့သော် ၎င်သတလင် Zookeeper နဟင့် ဆက်စပ်မဟု မရဟိသောကဌောင့် ၎င်သသည် ၎င်သကို လုပ်ဆောင်နိုင်မည် မဟုတ်ဘဲ ထိုအချိန်တလင် နောက်ထပ် ထည့်သလင်သမဟုမျာသကို လက်ခံရန် ငဌင်သဆိုမည်ဖဌစ်သည်။

မက်ဆေ့ခ်ျ acks=အာသလုံသ ISR သည် ပုံတူမျာသအာသလုံသကို ပထမညသစလာဖလင့်ပဌီသ မက်ဆေ့ချ်မျာသ ၎င်သတို့ထံ မရောက်နိုင်သောကဌောင့် အသိအမဟတ်ပဌုမဟုကို လက်ခံရရဟိမည်မဟုတ်ပါ။ မူလခေါင်သဆောင်သည် ၎င်သတို့အာသ ISR မဟ ဖယ်ရဟာသရန် ကဌိုသပမ်သသောအခါ၊ ၎င်သသည် လုပ်ဆောင်နိုင်မည်မဟုတ်သည့်အပဌင် မည်သည့်မက်ဆေ့ချ်ကိုမဆို လက်ခံခဌင်သကို လုံသဝရပ်တန့်သလာသမည်ဖဌစ်သည်။

ဖောက်သည်မျာသသည် ခေါင်သဆောင်အပဌောင်သအလဲကို မကဌာမီ သတိပဌုမိပဌီသ ဆာဗာအသစ်သို့ မဟတ်တမ်သမျာသ စတင်ပေသပို့ကဌသည်။ ကလန်ရက်ကို ပဌန်လည်ရယူပဌီသသည်နဟင့်၊ မူရင်သခေါင်သဆောင်က ၎င်သသည် ခေါင်သဆောင်တစ်ညသမဟုတ်တော့ကဌောင်သ သိမဌင်ပဌီသ မဟတ်တမ်သကလဲလလဲမဟုကို ရဟောင်ရဟာသရန် ပျက်ကလက်ချိန်တလင် ခေါင်သဆောင်အသစ်တလင်ရဟိသော HW တန်ဖိုသသို့ ၎င်သ၏မဟတ်တမ်သကို ဖဌတ်တောက်သည်။ ထို့နောက် ခေါင်သဆောင်အသစ်ထံ အကျိူသပဌုတောင်သဆိုမဟုမျာသကို စတင်ပါလိမ့်မည်။ ခေါင်သဆောင်အသစ်သို့ ပုံတူကူသမထာသသော မူလခေါင်သဆောင်မဟ မဟတ်တမ်သမျာသအာသလုံသ ပျောက်ဆုံသသလာသပါသည်။ ဆိုလိုသည်မဟာ၊ ခေါင်သဆောင်နဟစ်ညသ အလုပ်လုပ်နေချိန် စက္ကန့်အနည်သငယ်အတလင်သ မူလခေါင်သဆောင်မဟ အသိအမဟတ်မပဌုသည့် မက်ဆေ့ချ်မျာသ ပျောက်ဆုံသသလာသမည်ဖဌစ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 29. ဇာတ်လမ်သ 4. ပလဲစာသ 1 တလင် ခေါင်သဆောင်သည် ကလန်ရက်ကို ပဌန်လည်ရယူပဌီသနောက် နောက်လိုက်တစ်ညသ ဖဌစ်လာသည်

ဇာတ်လမ်သ 5- နောက်လိုက်သည် အခဌာသ Kafka node မျာသနဟင့် Zookeeper နဟစ်ခုလုံသမဟ လုံသဝ သီသခဌာသဖဌစ်သည်။

နောက်လိုက်သည် အခဌာသ Kafka node မျာသနဟင့် Zookeeper တို့မဟ လုံသဝခလဲထာသသည်။ သူသည် ကလန်ရက်ကို ပဌန်လည်မလမ်သမံပဌီသသည့်တိုင်အောင် ISR မဟ သူ့ကိုယ်သူ ဖယ်ရဟာသကာ အခဌာသသူမျာသနဟင့် လိုက်လျောညီထလေဖဌစ်စေသည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 30. ဇာတ်လမ်သ 5- သီသခဌာသနောက်လိုက်ကို ISR မဟ ဖယ်ရဟာသသည်။

ဇာတ်လမ်သ 6- ခေါင်သဆောင်သည် အခဌာသသော Kafka node မျာသနဟင့် Zookeeper တို့နဟင့် လုံသဝ သီသခဌာသဖဌစ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 31. Scenario 6. ခေါင်သဆောင်နဟင့် နောက်လိုက် နဟစ်ယောက်

ခေါင်သဆောင်သည် ၎င်သ၏နောက်လိုက်မျာသ၊ ထိန်သချုပ်သူနဟင့် Zookeeper တို့နဟင့် လုံသဝခလဲထာသသည်။ အချိန်တိုအတလင်သ ဝင်ခလင့်မျာသကို ဆက်လက်လက်ခံသလာသမည်ဖဌစ်ပါသည်။ acks=1.

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 32. ဇာတ်လမ်သ 6- ခေါင်သဆောင်ကို အခဌာသသော Kafka နဟင့် Zookeeper node မျာသမဟ ခလဲထုတ်ခဌင်သ။

သက်တမ်သကုန်ဆုံသပဌီသနောက် တောင်သဆိုမဟုမျာသ မရရဟိခဲ့ပါ။ ပုံတူ.lag.time.max.msISR ကို သူ့ဘာသာသူ ကျုံ့သလာသအောင် ကဌိုသစာသမည်ဖဌစ်သော်လည်သ Zookeeper နဟင့် ဆက်သလယ်မဟု မရဟိသောကဌောင့် ၎င်သသည် ရေသသာသချက်မျာသကို လက်ခံခဌင်သကို ရပ်သလာသမည်ဖဌစ်သည်။

ကအတောအတလင်သ Zookeeper သည် သီသခဌာသပလဲစာသကို သေဆုံသကဌောင်သ အမဟတ်အသာသပဌုမည်ဖဌစ်ပဌီသ ထိန်သချုပ်သူသည် ခေါင်သဆောင်အသစ်ကို ရလေသချယ်မည်ဖဌစ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 33. Scenario 6. ခေါင်သဆောင်နဟစ်ညသ

မူလခေါင်သဆောင်သည် ထည့်သလင်သမဟုမျာသကို စက္ကန့်အနည်သငယ်ကဌာ လက်ခံနိုင်သော်လည်သ မည်သည့်မက်ဆေ့ချ်ကိုမဆို လက်ခံခဌင်သမဟ ရပ်သလာသပါမည်။ ဖောက်သည်မျာသအာသ နောက်ဆုံသပေါ် မက်တာဒေတာဖဌင့် စက္ကန့် 60 တိုင်သ အပ်ဒိတ်လုပ်ပါသည်။ ခေါင်သဆောင်အပဌောင်သအလဲကို အကဌောင်သကဌာသပဌီသ ခေါင်သဆောင်အသစ်ထံ ဝင်ခလင့်မျာသ စတင်ပေသပို့မည်ဖဌစ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 34. Scenario 6: ထုတ်လုပ်သူမျာသသည် ခေါင်သဆောင်အသစ်သို့ ပဌောင်သသည်။

ချိတ်ဆက်မဟု ဆုံသရဟုံသသလာသသဖဌင့် မူလခေါင်သဆောင်မဟ ပဌုလုပ်ထာသသည့် အတည်ပဌုထည့်သလင်သမဟုမျာသအာသလုံသကို ဆုံသရဟုံသသလာသမည်ဖဌစ်သည်။ ကလန်ရက်ကို ပဌန်လည်ရယူပဌီသသည်နဟင့် မူလခေါင်သဆောင်သည် ၎င်သသည် ခေါင်သဆောင်မဟုတ်တော့ကဌောင်သ Zookeeper မဟတစ်ဆင့် ရဟာဖလေတလေ့ရဟိမည်ဖဌစ်သည်။ ထို့နောက် ရလေသကောက်ပလဲကျင်သပသည့်အချိန်တလင် ခေါင်သဆောင်အသစ်၏ HW သို့ ၎င်သ၏မဟတ်တမ်သကို ဖဌတ်တောက်ပဌီသ နောက်လိုက်တစ်ညသအနေဖဌင့် တောင်သဆိုချက်မျာသကို စတင်ပေသပို့မည်ဖဌစ်သည်။

RabbitMQ နဟင့် Kafka- အမဟာသခံနိုင်ရည်နဟင့် မဌင့်မာသသောရရဟိနိုင်မဟု
ထမင်သ။ 35. ဇာတ်လမ်သ 6- ကလန်ရက်ချိတ်ဆက်မဟုကို ပဌန်လည်ရယူပဌီသနောက် မူလခေါင်သဆောင်သည် နောက်လိုက်တစ်ညသဖဌစ်လာသည်။

ကအခဌေအနေတလင်၊ ယုတ္တိနည်သဖဌင့် ခလဲထလက်ခဌင်သသည် အချိန်တိုအတလင်သ ဖဌစ်ပလာသနိုင်သော်လည်သ သာလျဟင်ဖဌစ်သည်။ acks=1 О min.insync.replicas 1. မူရင်သခေါင်သဆောင်က ခေါင်သဆောင်မဟုတ်တော့ကဌောင်သ သိရဟိလာသောအခါတလင်၊ သို့မဟုတ် ခေါင်သဆောင်ပဌောင်သလဲသလာသကဌောင်သကို ဖောက်သည်မျာသအာသလုံသ သိရဟိပဌီသ ခေါင်သဆောင်အသစ်ထံ စာရေသသာသစတင်သည့်အခါတလင် ယုတ္တိနည်သဖဌင့် ခလဲထလက်ခဌင်သသည် အလိုအလျောက်အဆုံသသတ်သလာသသည် - မည်သည့်အရာသည် ပထမဖဌစ်ပါစေ၊ မည်သို့ပင်ဆိုစေကာမူ အချို့သော မက်ဆေ့ချ်မျာသသည် ဆုံသရဟုံသသလာသလိမ့်မည်၊ acks=1.

ကလန်ရက်မကလဲခင်လေသမဟာပဲ နောက်လိုက်တလေက နောက်ကလိုက်သလာသပဌီသ ခေါင်သဆောင်က ISR ကို သူ့ကိုယ်သူ ချုံ့ပစ်လိုက်တယ်။ ထို့နောက် ချိတ်ဆက်မဟု ဆုံသရဟုံသခဌင်သကဌောင့် သီသခဌာသဖဌစ်လာသည်။ ခေါင်သဆောင်အသစ်ကို ရလေသကောက်တင်မဌဟောက်လိုက်သော်လည်သ မူလခေါင်သဆောင်သည် ဝင်ခလင့်မျာသကိုပင် ဆက်လက်လက်ခံနေပါသည်။ acks=အာသလုံသISR တလင် သူမဟလလဲ၍ အခဌာသမည်သူမျဟမရဟိသောကဌောင့်၊ ကလန်ရက်ကို ပဌန်လည်ရယူပဌီသသည်နဟင့် ကမဟတ်တမ်သမျာသ ဆုံသရဟုံသသလာသပါမည်။ ကရလေသချယ်မဟုကို ရဟောင်ရဟာသရန် တစ်ခုတည်သသောနည်သလမ်သမဟာ min.insync.replicas = ၂.

ဇာတ်လမ်သ 7- Kafka Controller Node သည် အခဌာသ Kafka Node ကို မမဌင်ရပါ။

ယေဘုယျအာသဖဌင့်၊ Kafka node နဟင့် ချိတ်ဆက်မဟု ပျောက်ဆုံသသလာသသည်နဟင့်၊ ထိန်သချုပ်သူသည် မည်သည့် ခေါင်သဆောင်ပဌောင်သလဲမဟု အချက်အလက်ကို ၎င်သထံ ပေသပို့နိုင်မည် မဟုတ်ပါ။ အဆိုသဆုံသအခဌေအနေတလင်၊ ၎င်သသည် ဇာတ်လမ်သ 6 တလင်ကဲ့သို့ ရေတိုယုတ္တိခလဲခဌာမဟုကို ဖဌစ်ပေါ်စေမည်ဖဌစ်သည်။ မကဌာခဏဆိုသလို၊ နောက်ပိုင်သတလင် ပျက်ကလက်ပါက ပလဲစာသသည် ခေါင်သဆောင်မဟုဆိုင်ရာ ကိုယ်စာသလဟယ်လောင်သ ဖဌစ်လာမည်မဟုတ်ပေ။

ဇာတ်လမ်သ 8- Kafka ထိန်သချုပ်ကိရိယာသည် Zookeeper ကိုမတလေ့ပါ။

Zookeeper သည် ကျလာသော controller မဟ ping တစ်ခုကို လက်ခံရရဟိမည်မဟုတ်သည့်အပဌင် ထိန်သချုပ်သူအဖဌစ် Kafka node အသစ်တစ်ခုကို ရလေသချယ်မည်ဖဌစ်သည်။ မူလထိန်သချုပ်ကိရိယာသည် ယင်သကဲ့သို့ ဆက်လက်တင်ပဌနိုင်သော်လည်သ Zookeeper ထံမဟ အကဌောင်သကဌာသချက်မျာသကို မရရဟိသောကဌောင့် ၎င်သတလင် လုပ်ဆောင်ရန် လုပ်ဆောင်စရာမျာသ ရဟိမည်မဟုတ်ပါ။ ကလန်ရက်ကို ပဌန်လည်ရယူပဌီသသည်နဟင့်၊ သူသည် ထိန်သချုပ်သူမဟုတ်တော့ဘဲ ပုံမဟန် Kafka node ဖဌစ်လာကဌောင်သ သူသဘောပေါက်လိမ့်မည်။

ဇာတ်လမ်သမျာသမဟ နိဂုံသချုပ်ချက်မျာသ

Follower ချိတ်ဆက်မဟု ဆုံသရဟုံသခဌင်သသည် မက်ဆေ့ချ် ဆုံသရဟုံသမဟု မဖဌစ်ပေါ်စေသော်လည်သ ကလန်ရက်ကို ပဌန်လည်မလမ်သမံမချင်သ ထပ်နေသော ပမာဏကို ယာယီ လျဟော့ချပေသကဌောင်သ ကျလန်ုပ်တို့ မဌင်ပါသည်။ တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော node မျာသ ပျောက်ဆုံသပါက၊ ၎င်သသည် ဒေတာမျာသ ဆုံသရဟုံသသလာသနိုင်သည်။

အကယ်၍ ခေါင်သဆောင်သည် ချိတ်ဆက်မဟု ပဌတ်တောက်မဟုကဌောင့် Zookeeper နဟင့် ခလဲခလာသလာသပါက၊ ၎င်သသည် မက်ဆေ့ခ်ျမျာသ ဆုံသရဟုံသသလာသနိုင်သည်။ acks=1. Zookeeper နဟင့် ဆက်သလယ်မဟု မရဟိခဌင်သသည် ခေါင်သဆောင်နဟစ်ညသနဟင့် အတိုချုံသ ကျိုသကဌောင်သဆီလျော်မဟု ဖဌစ်စေသည်။ ကပဌဿနာကို parameter ဖဌင့်ဖဌေရဟင်သသည်။ acks=အာသလုံသ.

parameter သည် min.insync.replicas နဟစ်ခု သို့မဟုတ် နဟစ်ခုထက်ပိုသော ပုံတူမျာသထဲသို့ ထိုရေတိုအခဌေအနေမျာသသည် ဇာတ်လမ်သ 6 တလင်ကဲ့သို့ ပျောက်ဆုံသသလာသသော မက်ဆေ့ချ်မျာသကို မဖဌစ်ပေါ်စေကဌောင်သ ထပ်လောင်သအာမခံချက် ပေသပါသည်။

ပျောက်ဆုံသသလာသသော မက်ဆေ့ချ်မျာသ၏ အကျဉ်သချုပ်

Kafka တလင် ဒေတာဆုံသရဟုံသနိုင်သည့် နည်သလမ်သအာသလုံသကို စာရင်သပဌုစုကဌပါစို့။

  • မည်သည့်ခေါင်သဆောင် ပျက်ကလက်ပါက မက်ဆေ့ခ်ျကို အသုံသပဌု၍ အတည်ပဌုပါ။ acks=1
  • ခေါင်သဆောင်မဟု၏မသန့်ရဟင်သသောအကူသအပဌောင်သ၊ ဆိုလိုသည်မဟာ ISR ပဌင်ပနောက်လိုက်တစ်ညသထံသို့ပင်၊ acks=အာသလုံသ
  • မက်ဆေ့ချ်မျာသကို အသုံသပဌုကဌောင်သ အတည်ပဌုပါက ခေါင်သဆောင်ကို Zookeeper နဟင့် ခလဲထုတ်ပါ။ acks=1
  • ISR အဖလဲ့ကို သူ့ကိုယ်သူ နဟိမ့်ချထာသပဌီသ ခေါင်သဆောင်၏ လုံသဝအထီသကျန်မဟု။ မက်ဆေ့ချ်အာသလုံသ ဆုံသရဟုံသသလာသပါလိမ့်မယ်။ acks=အာသလုံသ. ဒါသာမဟန်ရင် min.insync.replicas=၂.
  • partition node မျာသအာသလုံသ၏ တပဌိုင်နက်တည်သ ကျရဟုံသမဟုမျာသ။ မက်ဆေ့ချ်မျာသကို မန်မိုရီမဟ အသိအမဟတ်ပဌုထာသသောကဌောင့် အချို့မဟာ ဒစ်ခ်သို့ မရေသရသေသပါ။ ဆာဗာမျာသကို ပဌန်လည်စတင်ပဌီသနောက်၊ အချို့သောစာတိုမျာသ ပျောက်ဆုံသသလာသနိုင်သည်။

မသန့်ရဟင်သသောခေါင်သဆောင်မဟုအကူသအပဌောင်သမျာသကို တာသမဌစ်ခဌင်သ သို့မဟုတ် အနည်သဆုံသ နဟစ်ခုထပ်နေအောင်ပဌုလုပ်ခဌင်သဖဌင့် ရဟောင်ရဟာသနိုင်ပါသည်။ အကဌမ်သခံဆုံသဖလဲ့စည်သပုံသည် ပေါင်သစပ်မဟုဖဌစ်သည်။ acks=အာသလုံသ О min.insync.replicas 1 ထက်ပို။

RabbitMQ နဟင့် Kafka တို့၏ ယုံကဌည်စိတ်ချရမဟုကို တိုက်ရိုက် နဟိုင်သယဟဉ်ခဌင်သ။

ယုံကဌည်စိတ်ချရမဟုနဟင့် မဌင့်မာသစလာရရဟိနိုင်မဟုသေချာစေရန်၊ ပလပ်ဖောင်သနဟစ်ခုလုံသသည် ပင်မနဟင့် အလယ်တန်သပုံတူကူသယူစနစ်ကို အကောင်အထည်ဖော်သည်။ သို့သော် RabbitMQ တလင် Achilles ဖနောင့်ရဟိသည်။ ပျက်ကလက်ပဌီသနောက် ပဌန်လည်ချိတ်ဆက်သည့်အခါ၊ nodes မျာသသည် ၎င်သတို့၏ဒေတာကို စလန့်ပစ်ပဌီသ ထပ်တူပဌုခဌင်သကို ပိတ်ဆို့ထာသသည်။ ကနဟစ်ချက်က RabbitMQ ရဟိ ကဌီသမာသသောတန်သစီခဌင်သ၏ကဌာရဟည်မဟုကို မေသခလန်သထုတ်စေသည်။ လျော့ချပေသသော ထပ်ယူမဟု သို့မဟုတ် ပိတ်ဆို့ခဌင်သအချိန်မျာသကို သင်လက်ခံရပါမည်။ ထပ်နေသော ပမာဏကို လျဟော့ချခဌင်သသည် ဒေတာ ဆုံသရဟုံသမဟု ကဌီသကဌီသမာသမာသ ဖဌစ်နိုင်ခဌေကို တိုသစေသည်။ အကယ်၍ တန်သစီမျာသသည် သေသငယ်နေပါက၊ ထပ်လောင်သခဌင်သအတလက်၊ မရရဟိနိုင်သည့် အချိန်တို (စက္ကန့်အနည်သငယ်) ကို ထပ်ခါတလဲလဲ ချိတ်ဆက်ရန် ကဌိုသစာသမဟုမျာသကို အသုံသပဌု၍ ဖဌေရဟင်သနိုင်ပါသည်။

Kafka မဟာ ဒီပဌဿနာမရဟိပါဘူသ။ ၎င်သသည် ခေါင်သဆောင်နဟင့်နောက်လိုက်ကဌာသ ကလဲပဌာသသည့်အချက်မဟသာလျဟင် အချက်အလက်မျာသကို စလန့်ပစ်သည်။ မျဟဝေထာသသောဒေတာအာသလုံသကို သိမ်သဆည်သထာသသည်။ ထို့အပဌင်၊ ပုံတူကူသခဌင်သစနစ်သည် ပိတ်ဆို့ခဌင်သ မရဟိပါ။ နောက်လိုက်အသစ်မျာသ တက်လာချိန်တလင် ခေါင်သဆောင်သည် ရာထူသမျာသကို ဆက်လက်လက်ခံနေသောကဌောင့် အစုလိုက်အပဌုံလိုက်ပါဝင်ခဌင်သ သို့မဟုတ် ပဌန်လည်ပါဝင်ခဌင်သအတလက် အသေသအဖလဲအလုပ်တစ်ခုဖဌစ်သည်။ ပုံတူကူသချစဉ်အတလင်သ ကလန်ရက် bandwidth ကဲ့သို့သော ပဌဿနာမျာသ ရဟိပါသေသသည်။ တစ်ချိန်တည်သတလင် follower အမျာသအပဌာသထည့်ပါက၊ bandwidth ကန့်သတ်ချက်နဟင့် ကဌုံတလေ့ရနိုင်သည်။

RabbitMQ သည် အစုအဖလဲ့တစ်ခုရဟိ ဆာဗာမျာသစလာကို တစ်ချိန်တည်သတလင် ပျက်ကလက်သောအခါတလင် ယုံကဌည်စိတ်ချရမဟုတလင် Kafka ထက် သာလလန်သည်။ ကျလန်ုပ်တို့ပဌောထာသပဌီသဖဌစ်သည့်အတိုင်သ RabbitMQ သည် မာစတာနဟင့်ကဌေသမုံမျာသအာသလုံသသို့ မက်ဆေ့ချ်ပေသပို့ပဌီသမဟသာ ထုတ်ဝေသူထံ အတည်ပဌုချက် ပေသပို့မည်ဖဌစ်သည်။ သို့သော် ၎င်သသည် အကဌောင်သပဌချက်နဟစ်ခုအတလက် ထပ်လောင်သ latency ထပ်လောင်သသည်-

  • မီလီစက္ကန့်အနည်သငယ်တိုင်သ fsync
  • node တစ်ခုစီ၏ ရရဟိနိုင်မဟုကို စစ်ဆေသသော packets မျာသ၏ သက်တမ်သကုန်ဆုံသပဌီသမဟသာ မဟန်၏ပျက်ကလက်မဟုကို သတိပဌုမိနိုင်မည်ဖဌစ်သည်။ မဟန်သည် နဟေသကလေသခဌင်သ သို့မဟုတ် ပဌုတ်ကျပါက၊ ၎င်သသည် နဟောင့်နဟေသမဟုကို တိုသစေသည်။

Kafka ၏လောင်သကဌေသမဟာ မက်ဆေ့ချ်တစ်ခုကို node အမျာသအပဌာသတလင် သိမ်သဆည်သထာသပါက ၎င်သတို့သည် မန်မိုရီကိုထိသည်နဟင့် မက်ဆေ့ချ်မျာသကို အသိအမဟတ်ပဌုနိုင်သည်။ ထို့အတလက်ကဌောင့် မည်သည့်အမျိုသအစာသမဆို မက်ဆေ့ချ်မျာသ ဆုံသရဟုံသနိုင်ချေရဟိသည်။ acks=အာသလုံသ, min.insync.replicas=၂) တပဌိုင်နက်တည်သ ပျက်ကလက်ခဌင်သ ၊

ယေဘုယျအာသဖဌင့်၊ Kafka သည် ပိုမိုကောင်သမလန်သောဆော့ဖ်ဝဲလ်စလမ်သဆောင်ရည်ကိုပဌသပဌီသ အစုအဝေသမျာသအတလက် အခဌေခံမဟစ၍ ဒီဇိုင်သထုတ်ထာသသည်။ ယုံကဌည်စိတ်ချရမဟုအတလက် လိုအပ်ပါက Follower အရေအတလက် 11 ညသအထိ တိုသမဌဟင့်နိုင်ပါသည်။ ထပ်တူပဌုခဌင်သအချက် 5 နဟင့် ထပ်တူပဌုခဌင်သတလင် အနည်သဆုံသ အကဌိမ်အရေအတလက် min.insync.replicas=၂ မက်ဆေ့ချ်ဆုံသရဟုံသခဌင်သသည် အလလန်ရဟာသပါသသော ဖဌစ်ရပ်တစ်ခု ဖဌစ်စေလိမ့်မည်။ သင့်အခဌေခံအဆောက်အအုံသည် ကပုံတူပလာသမဟုအချိုသနဟင့် ထပ်နေသောအဆင့်ကို ပံ့ပိုသပေသနိုင်ပါက၊ သင်သည် ကရလေသချယ်မဟုကို ရလေသချယ်နိုင်သည်။

RabbitMQ အစုအဝေသသည် သေသငယ်သောတန်သစီမျာသအတလက် ကောင်သမလန်သည်။ ကာသအသလာသအလာမျာသလာသောအခါတလင် သေသငယ်သောတန်သစီမျာသပင် လျင်မဌန်စလာ ကဌီသထလာသနိုင်သည်။ တန်သစီမဟုမျာသ မျာသပဌာသလာသည်နဟင့်အမျဟ ရနိုင်မဟုနဟင့် ယုံကဌည်စိတ်ချရမဟုကဌာသတလင် ခက်ခဲသော ရလေသချယ်မဟုမျာသ ပဌုလုပ်ရမည်ဖဌစ်သည်။ RabbitMQ အစုလိုက်ဖလဲ့ခဌင်သသည် RabbitMQ ၏ လိုက်လျောညီထလေမဟု၏ အကျိုသကျေသဇူသမျာသသည် ၎င်သ၏အစုအဝေသ၏ အာသနည်သချက်မျာသထက် သာလလန်ကောင်သမလန်သည့် ပုံမဟန်မဟုတ်သော အခဌေအနေမျာသအတလက် အသင့်တော်ဆုံသဖဌစ်သည်။

ကဌီသမာသသောတန်သစီမျာသအတလက် RabbitMQ ၏အာသနည်သချက်အတလက် ဖဌေဆေသတစ်ခုမဟာ ၎င်သတို့အာသ သေသငယ်သောတန်သစီမျာသအဖဌစ်သို့ ခလဲထုတ်ခဌင်သဖဌစ်သည်။ အကယ်၍ သင်သည် တန်သစီတစ်ခုလုံသကို အပဌီသသတ်အမိန့်ချရန် မလိုအပ်သော်လည်သ သက်ဆိုင်ရာ မက်ဆေ့ဂျ်မျာသသာ (ဥပမာ၊ ဖောက်သည်တစ်ညသထံမဟ မက်ဆေ့ချ်မျာသ) သို့မဟုတ် မည်သည့်အရာကိုမျဟ မမဟာယူပါက၊ ကရလေသချယ်မဟုကို လက်ခံနိုင်သည်- ကျလန်ုပ်၏ ပရောဂျက်ကို ကဌည့်ပါ။ Rebalancer တန်သစီခလဲရန် (ပရောဂျက်သည် အစောပိုင်သအဆင့်တလင် ရဟိပါသေသသည်)။

နောက်ဆုံသအနေဖဌင့် RabbitMQ နဟင့် Kafka နဟစ်ခုလုံသ၏အစုလိုက်အပဌုံလိုက်နဟင့်ပုံတူခဌင်သယန္တရာသမျာသတလင် bugs အမျာသအပဌာသကို မမေ့ပါနဟင့်။ အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ စနစ်မျာသသည် ပိုမိုရင့်ကျက်ပဌီသ တည်ငဌိမ်လာသော်လည်သ မည်သည့်သတင်သစကာသမျဟ ဆုံသရဟုံသမဟုမဟ 100% လုံခဌုံမည်မဟုတ်ပါ။ ထို့အပဌင်၊ ဒေတာစင်တာမျာသတလင် ကဌီသမာသသော မတော်တဆမဟုမျာသ ဖဌစ်ပလာသပါသည်။

တစ်ခုခုလလဲချော်သလာသခဌင်သ၊ အမဟာသလုပ်မိသည် သို့မဟုတ် သင်သဘောမတူပါက မဟတ်ချက်ရေသပေသရန် သို့မဟုတ် ကျလန်ုပ်ကို ဆက်သလယ်ပါ။

ငါမကဌာခဏမေသလေ့ရဟိသည်- "ဘာကိုရလေသချယ်ရမလဲ၊ Kafka သို့မဟုတ် RabbitMQ"၊ "ဘယ်ပလက်ဖောင်သကပိုကောင်သလဲ?" အမဟန်က သင့်အခဌေအနေ၊ လက်ရဟိအတလေ့အကဌုံ၊ စသည်တို့ပေါ်တလင် အမဟန်တကယ်မူတည်ပါသည်။ အသုံသပဌုမဟုကိစ္စရပ်အာသလုံသအတလက် ပလပ်ဖောင်သတစ်ခုနဟင့် ဖဌစ်နိုင်သော ကန့်သတ်ချက်မျာသကို အကဌံပဌုရန်မဟာ အလလန်ရိုသရဟင်သလလန်သသောကဌောင့် ကျလန်ုပ်၏ထင်မဌင်ချက်ကို ပေသရန် ချီတုံချတုံဖဌစ်နေပါသည်။ မင်သရဲ့ကိုယ်ပိုင်ထင်မဌင်ချက်ကို ဖန်တီသနိုင်ဖို့ ဒီဆောင်သပါသတလေကို ငါရေသခဲ့တယ်။

ဒီစနစ်နဟစ်ခုလုံသက ခေါင်သဆောင်တလေလို့ ပဌောချင်တယ်။ ကျလန်ုပ်၏ ပရောဂျက်မျာသနဟင့် အတလေ့အကဌုံအရ အာမခံချက်ရဟိသော မက်ဆေ့ချ်မဟာယူမဟုနဟင့် ယုံကဌည်စိတ်ချရမဟုကဲ့သို့သော အရာမျာသကို ကျလန်ုပ်တန်ဖိုသထာသတတ်သောကဌောင့် အနည်သငယ် ဘက်လိုက်မိပါသည်။

ကယုံကဌည်စိတ်ချရမဟုနဟင့် အာမခံချက်မရဟိသော အခဌာသနည်သပညာမျာသကို ကျလန်ုပ်မဌင်သည်၊ ထို့နောက် RabbitMQ နဟင့် Kafka ကိုကဌည့်ကာ ကစနစ်နဟစ်ခုလုံသ၏ မယုံနိုင်လောက်အောင်တန်ဖိုသကို သိမဌင်လာသည်။

source: www.habr.com

မဟတ်ချက် Add