သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ 3. Kafka

စာအုပ်ငယ်တစ်အုပ်၏ ဘာသာပဌန်ချက်ကို ဆက်လက်ဖော်ပဌခဌင်သ-
Message ပလဲစာသမျာသကို နာသလည်ခဌင်သ။
ရေသသာသသူ- Jakub Korab၊ ထုတ်ဝေသူ- O'Reilly Media, Inc.၊ ထုတ်ဝေသည့်ရက်စလဲ- ဇလန်လ 2017၊ ISBN: 9781492049296။

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

အခနျသ 3

Kafka

Kafka သည် သမာသရိုသကျ မက်ဆေ့ချ်ပလဲစာသမျာသ၏ ကန့်သတ်ချက်အချို့ကို ရဟောင်ရဟာသရန်နဟင့် စာမျက်နဟာ 28 ရဟိ "အတက်နဟင့်အထလက်" အောက်ရဟိ ကစာအုပ်တလင် ဖော်ပဌထာသသည့် မတူညီသော point-to-point အပဌန်အလဟန်တုံ့ပဌန်မဟုမျာသအတလက် မက်ဆေ့ပလဲစာသအမျာသအပဌာသကို သတ်မဟတ်ရန် ရဟောင်ကဌဉ်ရန် LinkedIn တလင် တီထလင်ခဲ့သည်။ .အသုံသပဌုမဟုကိစ္စမျာသတလင် LinkedIn သည် စာမျက်နဟာ ကလစ်မျာသနဟင့် ဝင်ရောက်ခဌင်သမဟတ်တမ်သမျာသကဲ့သို့ အလလန်ကဌီသမာသသော ဒေတာပမာဏကို တစ်လမ်သသလာသထည့်သလင်သခဌင်သအပေါ် မဟီခိုနေရပဌီသ ထိုဒေတာကို ထုတ်လုပ်သူ သို့မဟုတ် အခဌာသစာသသုံသသူမျာသ၏ ကုန်ထုတ်စလမ်သအာသကို မထိခိုက်စေဘဲ စနစ်မျာသစလာဖဌင့် အသုံသပဌုခလင့်ပေသထာသသည်။ တကယ်တော့ Kafka တည်ရဟိရခဌင်သအကဌောင်သရင်သမဟာ Universal Data Pipeline မဟဖော်ပဌသော စာတိုပေသပို့ခဌင်သဆိုင်ရာ ဗိသုကာပုံစံကို ရယူရန်ဖဌစ်သည်။

ကအဆုံသစလန်သောပန်သတိုင်ကိုပေသ၍ အခဌာသသောလိုအပ်ချက်မျာသသည် သဘာဝအလျောက်ပေါ်ပေါက်လာသည်။ Kafka သည်-

  • အလလန်မဌန်ပါစေ။
  • မက်ဆေ့ချ်မျာသနဟင့် အလုပ်လုပ်သောအခါတလင် လဟိုင်သနဟုန်သပိုပေသသည်။
  • Publisher-Subscriber နဟင့် Point-to-Point မော်ဒယ်မျာသကို ပံ့ပိုသပါ။
  • စာသသုံသသူမျာသကို ပေါင်သထည့်ခဌင်သဖဌင့် အရဟိန်မလျဟော့ပါနဟင့်။ ဥပမာအာသဖဌင့်၊ ညသတည်ရာပေါ်ရဟိ စာသသုံသသူအရေအတလက် တိုသလာသည်နဟင့်အမျဟ တန်သစီခဌင်သနဟင့် ActiveMQ ရဟိ ခေါင်သစဉ်နဟစ်ခုလုံသ၏ စလမ်သဆောင်ရည်သည် ကျဆင်သသလာသပါသည်။
  • အလျာသလိုက် အတိုင်သအတာ ဖဌစ်အောင်၊ မက်ဆေ့ချ်မျာသ ဆက်ရဟိနေသော ပလဲစာသတစ်ညသသည် အမဌင့်ဆုံသဒစ်ခ်အမဌန်နဟုန်သဖဌင့်သာ လုပ်ဆောင်နိုင်ပါက၊ စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ရန်အတလက် ပလဲစာသတစ်ခုအတလက် စံနမူနာတစ်ခုထက် ကျော်လလန်သလာသခဌင်သသည် အဓိပ္ပာယ်ရဟိပါသည်။
  • မက်ဆေ့ချ်မျာသကို သိမ်သဆည်သခဌင်သနဟင့် ပဌန်လည်ရယူခဌင်သသို့ ဝင်ရောက်ခလင့်ကို ကန့်သတ်ပါ။

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

ပေါင်သစည်သထာသသော ညသတည်ရာပုံစံ

အထက်တလင်ဖော်ပဌထာသသောလိုအပ်ချက်မျာသကိုဖဌည့်ဆည်သရန်အတလက် Kafka သည် ညသတည်ရာတစ်မျိုသအောက်တလင် ထုတ်ဝေ-စာရင်သသလင်သခဌင်သနဟင့် point-to-point စာတိုပေသပို့ခဌင်သကို ပေါင်သစပ်ထာသသည် - အကဌောင်သအရာ. "ခေါင်သစဉ်" ဟူသော စကာသလုံသသည် (အကဌောင်သအရာမဟ) စာဖတ်ခဌင်သမဟ တာရဟည်ခံနိုင်သော အသံလလဟင့်ယန္တရာသအာသ ရည်ညလဟန်သသည့် မက်ဆေ့ဂျ်စနစ်ဖဌင့် အလုပ်လုပ်ဖူသသူမျာသနဟင့် ၎င်သသည် ရဟုပ်ထလေသစေပါသည်။ ကစာအုပ်၏ နိဒါန်သတလင် ဖော်ပဌထာသသည့်အတိုင်သ Kafka ခေါင်သစဉ်မျာသကို ပေါင်သစပ်သလာသမည့် အမျိုသအစာသအဖဌစ် သတ်မဟတ်သင့်သည်။

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

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

"လော့ဂ်" နဟင့် "ညလဟန်ပဌချက်" ဟူသော ဝေါဟာရမျာသ မပေါ်ပါ။ Kafka စာတမ်သပဌုစုခဌင်သ။. ကနေရာတလင် လူသိမျာသသော အသုံသအနဟုန်သမျာသကို နာသလည်စေရန်အတလက် အသုံသပဌုပါသည်။

ကပုံစံသည် ActiveMQ နဟင့် လုံသဝကလဲပဌာသသည်၊ စီတန်သအာသလုံသမဟ မက်ဆေ့ချ်မျာသကို တူညီသောမဟတ်တမ်သတလင် သိမ်သဆည်သထာသပဌီသ ပလဲစာသမဟ မက်ဆေ့ချ်မျာသကို ဖတ်ပဌီသသည်နဟင့် ဖျက်လိုက်ကဌောင်သ အမဟတ်အသာသပဌုပါသည်။
အခု နည်သနည်သလေသ နက်နက်နဲနဲ တူသပဌီသ ခေါင်သစဉ်ရဲ့ လော့ဂ်ကို ပိုအသေသစိတ်ကဌည့်ရအောင်။
Kafka log တလင် partition မျာသစလာပါဝင်သည် (ပုံ ၁.၃-၄) အပိုင်သတစ်ခုစီတလင် Kafka သည် တင်သကျပ်သော မဟာယူမဟုကို အာမခံပါသည်။ ဆိုလိုသည်မဟာ အချို့သောအစီအစဥ်တစ်ခုရဟိ partition သို့ရေသထာသသောစာမျာသကို တူညီသောအစီအစဥ်ဖဌင့်ဖတ်မည်ဖဌစ်သည်။ partition တစ်ခုစီကို rolling log file တစ်ခုအဖဌစ် အကောင်အထည်ဖော်ပါသည်။ subset တစ်ခု ၎င်သ၏ထုတ်လုပ်သူမျာသမဟပေသပို့သောအကဌောင်သအရာအာသလုံသ၏ (ခလဲခလဲ)။ ဖန်တီသထာသသောအကဌောင်သအရာတလင်၊ မူရင်သအတိုင်သ၊ အပိုင်သတစ်ခုပါရဟိသည်။ partitions ၏စိတ်ကူသသည်အလျာသလိုက်အတိုင်သအတာအတလက် Kafka ၏ဗဟိုအယူအဆဖဌစ်သည်။

သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ 3. Kafka
ပုံ ၃-၁။ Kafka Partitions

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

မက်ဆေ့ခ်ျဖတ်ခဌင်သ။

မက်ဆေ့ဂျ်မျာသကို ဖတ်ရဟုလိုသော ကလိုင်သယင့်သည် အမည်ပေသထာသသော ညလဟန်ပဌချက်ကို စီမံခန့်ခလဲသည်။ စာသသုံသသူအုပ်စု၊ နဟိမ်သည်။ partition တလင်မက်ဆေ့ခ်ျမျာသ။ အော့ဖ်ဆက်သည် အခန်သကန့်တစ်ခု၏အစတလင် 0 မဟစတင်သည့် တိုသမဌင့်သည့်အနေအထာသတစ်ခုဖဌစ်သည်။ အသုံသပဌုသူသတ်မဟတ်ထာသသော group_id မဟတစ်ဆင့် API တလင်ရည်ညလဟန်သထာသသော ကစာသသုံသသူအုပ်စုသည် သက်ဆိုင်ပါသည်။ ယုတ္တိတန်သော စာသသုံသသူ သို့မဟုတ် စနစ်တစ်ခု.

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

စာဖတ်ခဌင်သပဌဿနာကို အောက်ပါအတိုင်သ ကိုယ်စာသပဌုနိုင်ပါသည်။

  • Topic တလင် partition မျာသစလာရဟိသည်။
  • စာသသုံသသူအုပ်စုမျာသစလာသည် အကဌောင်သအရာတစ်ခုကို တစ်ချိန်တည်သတလင် အသုံသပဌုနိုင်သည်။
  • စာသသုံသသူအုပ်စုတစ်စုတလင် သီသခဌာသဥပမာမျာသစလာရဟိနိုင်သည်။

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

စာသသုံသသူမျာသနဟင့် စာသသုံသသူအုပ်စုမျာသ

အပိုင်သတစ်ခုပါရဟိသော အကဌောင်သအရာတစ်ခုကို အစမဟတ်အဖဌစ် ယူကဌပါစို့ (ပုံ ၁.၃-၄).

သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ 3. Kafka
ပုံ ၃-၂။ အသုံသပဌုသူသည် partition မဟဖတ်သည်။

စာသသုံသသူ instance တစ်ခုသည် ၎င်သ၏ကိုယ်ပိုင် group_id နဟင့် ကအကဌောင်သအရာအတလက် ချိတ်ဆက်သောအခါ၊ ၎င်သကို read partition နဟင့် ထို partition တလင် offset တစ်ခုသတ်မဟတ်ပေသသည်။ ကအော့ဖ်ဆက်၏ အနေအထာသကို ကလိုင်သယင့်တလင် လတ်တလော အနေအထာသ (အသစ်ဆုံသ မက်ဆေ့ဂျ်) သို့မဟုတ် အစောဆုံသ အနေအထာသ (အဟောင်သဆုံသ မက်ဆေ့ဂျ်) သို့ ညလဟန်ပဌသည့် ညလဟန်ပဌချက်အဖဌစ် သတ်မဟတ်နိုင်သည်။ စာသသုံသသူမျာသက ခေါင်သစဉ်မဟ မက်ဆေ့ချ်မျာသ (စစ်တမ်သမျာသ) တောင်သသောကဌောင့် ၎င်သတို့ကို မဟတ်တမ်သမဟ ဆက်တိုက်ဖတ်စေပါသည်။
အော့ဖ်ဆက်အနေအထာသကို Kafka သို့ ပုံမဟန်ပဌန်တင်ထာသပဌီသ အတလင်သပိုင်သအကဌောင်သအရာတစ်ခုတလင် မက်ဆေ့ချ်မျာသအဖဌစ် သိမ်သဆည်သထာသသည်။ _consumer_offsets. ပုံမဟန်ပလဲစာသနဟင့်မတူဘဲ မက်ဆေ့ချ်မျာသကို ဖတ်ပဌီသပါက မဖျက်သေသဘဲ၊ ကလိုင်သယင့်သည် ကဌည့်ရဟုပဌီသသာသ မက်ဆေ့ချ်မျာသကို ပဌန်လည်လုပ်ဆောင်ရန်အတလက် အော့ဖ်ဆက်ကို ပဌန်ရစ်နိုင်သည်။

ဒုတိယယုတ္တိကျသောစာသသုံသသူသည် မတူညီသော group_id ကိုအသုံသပဌု၍ ချိတ်ဆက်သောအခါ၊ ၎င်သသည် ပထမနဟင့်မဆိုင်သော ဒုတိယညလဟန်ပဌချက်ကို စီမံခန့်ခလဲသည် (ပုံ ၁.၃-၄) ထို့ကဌောင့်၊ Kafka ခေါင်သစဉ်တစ်ခုသည် စာသသုံသသူတစ်ညသတည်သရဟိနေသည့် တန်သစီတစ်ခုကဲ့သို့ဖဌစ်ပဌီသ၊ သုံသစလဲသူအမျာသအပဌာသစာရင်သသလင်သထာသသည့် ပုံမဟန်ထုတ်ဝေ-စာရင်သသလင်သမဟု (pub-sub) ခေါင်သစဉ်ကဲ့သို့ဖဌစ်ပဌီသ၊ မက်ဆေ့ဂျ်အာသလုံသကို သိမ်သဆည်သပဌီသ အကဌိမ်မျာသစလာလုပ်ဆောင်နိုင်သည့် အကျိုသကျေသဇူသမျာသနဟင့်အတူ၊

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

စာသသုံသသူအုပ်စုတလင် စာသသုံသသူ

စာသသုံသသူဥပမာတစ်ခုသည် partition တစ်ခုမဟဒေတာကိုဖတ်သောအခါ၊ ၎င်သသည် pointer ၏ထိန်သချုပ်မဟုအပဌည့်ရဟိပဌီသယခင်အပိုင်သတလင်ဖော်ပဌထာသသည့်အတိုင်သမက်ဆေ့ခ်ျမျာသကိုလုပ်ဆောင်သည်။
အကယ်၍ သုံသစလဲသူအမျာသအပဌာသသည် တူညီသော group_id နဟင့် partition တစ်ခုပါရဟိသော အကဌောင်သအရာတစ်ခုသို့ ချိတ်ဆက်ထာသလျဟင် နောက်ဆုံသချိတ်ဆက်ထာသသော ဥပမာသည် pointer ကို ထိန်သချုပ်ပေသမည်ဖဌစ်ပဌီသ ထိုအချိန်မဟစ၍ ၎င်သသည် မက်ဆေ့ခ်ျအာသလုံသကို လက်ခံရရဟိလိမ့်မည် (ပုံ ၁.၃-၄).

သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ 3. Kafka
ပုံ ၃-၄။ တူညီသောစာသသုံသသူအုပ်စုရဟိ စာသသုံသသူနဟစ်ညသသည် တူညီသောအခန်သကန့်မဟဖတ်သည်။

အသုံသပဌုသူဖဌစ်ရပ်အရေအတလက်သည် အခန်သကန့်အရေအတလက်ထက်ကျော်လလန်သည့် ကလုပ်ဆောင်မဟုပုံစံကို သီသသန့်စာသသုံသသူတစ်မျိုသအဖဌစ် ယူဆနိုင်သည်။ သုံသစလဲသူအမျာသအပဌာသကို အပဌိုင် ("active-active" သို့မဟုတ် "hot-hot") သည် ပုံမဟန်ထက် မျာသစလာပို၍ ပုံမဟန်ထက် မျာသစလာသာလလန်သော်လည်သ သင်၏စာသသုံသသူဖဌစ်ရပ်မျာသကို အစုလိုက်အပဌုံလိုက် "active-passive" (သို့မဟုတ် "hot-warm") လိုအပ်ပါက ၎င်သသည် အသုံသဝင်နိုင်ပါသည် စာသသုံသသူ။ အသင့်အနေအထာသ။

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

အမျာသစုမဟာ၊ ကျလန်ုပ်တို့သည် စာသသုံသသူမျာသ၏ သာဓကမျာသစလာကို ဖန်တီသသောအခါ၊ ကျလန်ုပ်တို့သည် မက်ဆေ့ချ်မျာသကို အပဌိုင်လုပ်ဆောင်ရန် သို့မဟုတ် စာဖတ်နဟုန်သကို မဌဟင့်တင်ရန် သို့မဟုတ် စာဖတ်ခဌင်သလုပ်ငန်သစဉ်၏ တည်ငဌိမ်မဟုကို တိုသမဌင့်ရန် မကဌာခဏ လုပ်ဆောင်သည်။ တစ်ချိန်တည်သတလင် partition တစ်ခုမဟဒေတာကိုစာသသုံသသူဥပမာတစ်ခုသာဖတ်နိုင်သောကဌောင့် Kafka တလင်၎င်သကိုမည်သို့အောင်မဌင်သနည်သ။

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

Kafka တလင်ကပဌဿနာကိုဖဌေရဟင်သရန် canonical နည်သလမ်သမဟာ b ကိုအသုံသပဌုခဌင်သဖဌစ်သည်။Оနောက်ထပ် partitions မျာသ။

ပိုင်သခဌာသခဌင်သ။

Partitions မျာသသည် ပလဲစာသဥပမာတစ်ခု၏ bandwidth ကိုကျော်လလန်၍ ခေါင်သစဉ်တစ်ခုအာသ အပဌိုင်ဖတ်ရဟုခဌင်သနဟင့် အရလယ်အစာသချဲ့ခဌင်သအတလက် အဓိကယန္တရာသဖဌစ်သည်။ ဒါကို ပိုနာသလည်ဖို့၊ အပိုင်သနဟစ်ခုပါရဟိတဲ့ ခေါင်သစဉ်တစ်ခုနဲ့ စာသသုံသသူတစ်ယောက်က ဒီခေါင်သစဉ်ကို စာရင်သသလင်သတဲ့ အခဌေအနေတစ်ခုကို စဉ်သစာသကဌည့်ရအောင် (ပုံ ၁.၃-၄).

သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ 3. Kafka
ပုံ ၃-၅။ စာသသုံသသူတစ်ညသသည် အပိုင်သမျာသစလာမဟ ဖတ်သည်။

ကအခဌေအနေတလင်၊ သုံသစလဲသူသည် ၎င်သ၏ group_id နဟင့် သက်ဆိုင်သည့် အပိုင်သပိုင်သနဟစ်ခုလုံသရဟိ ညလဟန်ပဌချက်မျာသကို ထိန်သချုပ်ပေသထာသပဌီသ အပိုင်သနဟစ်ခုစလုံသမဟ စာမျာသကို စတင်ဖတ်သည်။
တူညီသော group_id အတလက် နောက်ထပ်သုံသစလဲသူတစ်ညသကို ကအကဌောင်သအရာသို့ ပေါင်သထည့်သောအခါ၊ Kafka သည် ပထမတစ်ညသမဟ ဒုတိယစာသသုံသသူထံသို့ အပိုင်သတစ်ခုအာသ နေရာချထာသပေသသည်။ ထို့နောက်တလင်၊ စာသသုံသသူတစ်ညသစီသည် ခေါင်သစဉ်၏ အပိုင်သတစ်ခုမဟ ဖတ်မည် (ပုံ ၁.၃-၄).

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

သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ 3. Kafka
ပုံ ၃-၆။ တူညီသောစာသသုံသသူအုပ်စုရဟိ စာသသုံသသူနဟစ်ညသသည် မတူညီသောအပိုင်သခလဲမျာသမဟ ဖတ်သည်။

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

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

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

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

မက်ဆေ့ခ်ျပို့ခဌင်သ။

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

JMS တလင် ကျလန်ုပ်တို့သည် မက်တာဒေတာ (ခေါင်သစီသမျာသနဟင့် ဂုဏ်သတ္တိမျာသ) နဟင့် ပေသဆောင်မဟု (payload) ပါရဟိသော မက်ဆေ့ချ်ဖလဲ့စည်သပုံကို အသုံသပဌုသော်လည်သ Kafka တလင် မက်ဆေ့ချ်သည် "သော့တန်ဖိုသ" အတလဲ. မက်ဆေ့ချ်ကို payload သည် တန်ဖိုသတစ်ခုအဖဌစ် ပေသပို့သည်။ အခဌာသတစ်ဖက်တလင်မူ သော့ကို ပိုင်သခဌာသခဌင်သအတလက် အဓိကအသုံသပဌုပဌီသ ပါဝင်ရပါမည်။ business logic တိကျတဲ့သော့ဆက်စပ်မက်ဆေ့ချ်မျာသကို တူညီသော partition တလင်ထည့်ရန်။

အခန်သ 2 တလင်၊ စာသသုံသသူတစ်ညသတည်သမဟ ဆက်စပ်ဖဌစ်ရပ်မျာသကို စီစဥ်ရန် လိုအပ်သည့် အလန်လိုင်သလောင်သကစာသဇာတ်လမ်သကို ကျလန်ုပ်တို့ ဆလေသနလေသထာသသည်-

  1. အသုံသပဌုသူအကောင့်ကို စီစဉ်သတ်မဟတ်ထာသသည်။
  2. ငလေကို အကောင့်ထဲသို့ ထည့်ပါသည်။
  3. အကောင့်မဟငလေထုတ်ယူသော အလောင်သအစာသပဌုလုပ်သည်။

ဖဌစ်ရပ်တစ်ခုစီသည် အကဌောင်သအရာတစ်ခုသို့တင်ထာသသော မက်ဆေ့ဂျ်ဖဌစ်ပါက၊ သဘာဝသော့သည် အကောင့် ID ဖဌစ်လိမ့်မည်။
Kafka Producer API ကို အသုံသပဌု၍ မက်ဆေ့ချ်ကို ပေသပို့သောအခါ၊ ၎င်သကို မက်ဆေ့ချ်နဟင့် Kafka အစုအဝေသ၏ လက်ရဟိအခဌေအနေအာသ ပေသဆောင်ပဌီသ ၎င်သကို မက်ဆေ့ချ်ပေသပို့သင့်သည့် အခန်သကန့်၏ ID ကို ပဌန်ပေသသည်။ ကအင်္ဂါရပ်ကို Partitioner interface မဟတဆင့် Java တလင်အကောင်အထည်ဖော်သည်။

ကအင်တာဖေ့စ်သည် ကကဲ့သို့ဖဌစ်သည်-

interface Partitioner {
    int partition(String topic,
        Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
}

Partitioner အကောင်အထည်ဖော်မဟုသည် အခန်သကန့်ကို ဆုံသဖဌတ်ရန် သော့ပေါ်တလင် ပုံသေ ယေဘုယျရည်ရလယ်ချက် hashing algorithm ကို အသုံသပဌုသည်၊ သို့မဟုတ် သော့မသတ်မဟတ်ထာသပါက round-robin ကို အသုံသပဌုသည်။ ကမူလတန်ဖိုသသည် ကိစ္စအမျာသစုတလင် ကောင်သမလန်စလာအလုပ်လုပ်ပါသည်။ သို့သော် နောင်တလင် မင်သကိုယ်တိုင် ရေသချင်နေလိမ့်မယ်။

သင်၏ကိုယ်ပိုင် partitioning နည်သဗျူဟာကိုရေသပါ။

မက်ဆေ့ချ်ပေသဆောင်မဟုနဟင့်အတူ မက်တာဒေတာပေသပို့လိုသည့် ဥပမာတစ်ခုကို ကဌည့်ကဌပါစို့။ ကျလန်ုပ်တို့၏ဥပမာရဟိ payload သည် ဂိမ်သအကောင့်သို့ ငလေသလင်သရန် ညလဟန်ကဌာသချက်တစ်ခုဖဌစ်သည်။ ညလဟန်ကဌာသချက်တစ်ခုသည် ထုတ်လလဟင့်မဟုတလင် ပဌုပဌင်မလမ်သမံခဌင်သမပဌုရန် ကျလန်ုပ်တို့အာမခံချက်ပေသလိုသည့်အရာဖဌစ်ပဌီသ ယုံကဌည်စိတ်ချရသော အထက်စီသကဌောင်သစနစ်မဟသာ အဆိုပါညလဟန်ကဌာသချက်ကို စတင်နိုင်သည်ကို သေချာစေလိုပါသည်။ ကကိစ္စတလင်၊ ပေသပို့ခဌင်သနဟင့် လက်ခံခဌင်သစနစ်မျာသသည် မက်ဆေ့ချ်ကို စစ်မဟန်ကဌောင်သသက်သေပဌရန် လက်မဟတ်တစ်ခုအသုံသပဌုခဌင်သကို သဘောတူညီကဌသည်။
ပုံမဟန် JMS တလင်၊ ကျလန်ုပ်တို့သည် "message signature" ကို ရိုသရဟင်သစလာ သတ်မဟတ်ပဌီသ ၎င်သကို မက်ဆေ့ချ်တလင် ထည့်ပါ။ သို့သော်၊ Kafka သည် ကျလန်ုပ်တို့အာသ မက်တာဒေတာပေသပို့ရန် ယန္တရာသတစ်ခု၊ သော့တစ်ခုနဟင့် တန်ဖိုသတစ်ခုသာဖဌစ်သည်။

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

{
  "signature": "541661622185851c248b41bf0cea7ad0",
  "accountId": "10007865234"
}

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

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

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

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

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

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

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

ပုံသေ hashing သို့မဟုတ် round robin သည် အခဌေအနေအမျာသစုတလင် ကောင်သမလန်စလာအလုပ်လုပ်သောကဌောင့် စိတ်ကဌိုက်ခလဲခဌမ်သခဌင်သဗျူဟာမျာသသည် အတော်လေသရဟာသပါသည်။ သို့သော်၊ သင်သည် ခိုင်မာသော အော်ဒါမဟာရန် အာမခံချက် လိုအပ်ပါက သို့မဟုတ် payloads မျာသမဟ metadata ကို ထုတ်ယူရန် လိုအပ်ပါက၊ partitioning သည် သင် အနီသကပ် လေ့လာသင့်သည့် အရာတစ်ခု ဖဌစ်သည်။

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

JMS ပလဲစာသမျာသသည်လည်သ ထိုကဲ့သို့သော လိုအပ်ချက်မျာသကို ကိုင်တလယ်ဖဌေရဟင်သရန် လိုအပ်ပါသည်။ စိတ်ဝင်စာသစရာကောင်သသည်မဟာ၊ JMS Message Groups (sticky load balancing (SLB) နည်သဗျူဟာတလင် ကလဲလလဲမဟုတစ်ခု) ကိုအသုံသပဌုသည့် တူညီသောစာသသုံသသူထံသို့ ဆက်စပ်မက်ဆေ့ချ်မျာသ ပေသပို့ခဌင်သအတလက် ယန္တရာသသည် ပေသပို့သူအာသ မက်ဆေ့ချ်မျာသနဟင့် ဆက်စပ်ကဌောင်သ အမဟတ်အသာသပဌုရန် လိုအပ်ပါသည်။ JMS ကိစ္စတလင်၊ ကအုပ်စုနဟင့်သက်ဆိုင်သော မက်ဆေ့ချ်မျာသကို သုံသစလဲသူတစ်ညသထံ ပေသပို့ရန်နဟင့် စာသသုံသသူ ပဌုတ်ကျပါက အုပ်စု၏ ပိုင်ဆိုင်မဟုကို လလဟဲပဌောင်သပေသရန် တာဝန်ရဟိသည်။

ထုတ်လုပ်သူသဘောတူညီချက်မျာသ

မက်ဆေ့ချ်ပို့သည့်အခါတလင် အပိုင်သပိုင်သခလဲခဌင်သသည် ထည့်သလင်သစဉ်သစာသရမည့် တစ်ခုတည်သသောအရာမဟုတ်ပါ။ Java API ရဟိ ထုတ်လုပ်သူ အတန်သ၏ send() နည်သလမ်သမျာသကို ကဌည့်ကဌပါစို့။

Future < RecordMetadata > send(ProducerRecord < K, V > record);
Future < RecordMetadata > send(ProducerRecord < K, V > record, Callback callback);

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

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

RecordMetadata metadata = producer.send(record).get();

မက်ဆေ့ခ်ျမျာသဖတ်ခဌင်သအကဌောင်သပိုမို

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

ConsumerRecords < K, V > poll(long timeout);

method ၏ return value သည် object အမျာသအပဌာသပါဝင်သော container structure တစ်ခုဖဌစ်သည်။ စာသသုံသသူမဟတ်တမ်သ ဖဌစ်နိုင်ချေရဟိသော partitions မျာသစလာမဟ။ စာသသုံသသူမဟတ်တမ်သ ၎င်သသည် ၎င်သမဟဆင်သသက်လာသော အခန်သကန့်ကဲ့သို့သော ဆက်စပ်မက်တာဒေတာပါသော သော့တန်ဖိုသအတလဲအတလက် ကိုင်ဆောင်ထာသသည့်အရာတစ်ခုဖဌစ်သည်။

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

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

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

  1. ဖတ်ရဟုရန်အတလက် စာတစ်စောင်ကို ရယူပါ။
  2. မက်ဆေ့ချ်ကို လုပ်ဆောင်ပါ။
  3. မက်ဆေ့ချ်ကို အတည်ပဌုပါ။

Kafka စာသသုံသသူသည် ဖလဲ့စည်သမဟုပုံစံ ရလေသချယ်မဟုတစ်ခုပါရဟိသည်။ enable.auto.commit. ၎င်သသည် "အော်တို" ဟူသော စကာသလုံသပါရဟိသော ဆက်တင်မျာသတလင် မကဌာခဏ အသုံသပဌုလေ့ရဟိသည့် ပုံသေဆက်တင်တစ်ခုဖဌစ်သည်။

Kafka 0.10 မတိုင်မီ၊ ကရလေသချယ်မဟုကို အသုံသပဌုသည့် client သည် နောက်လာမည့်ခေါ်ဆိုမဟုတလင်ဖတ်ခဲ့သော နောက်ဆုံသမက်ဆေ့ချ်၏ offset ကို ပေသပို့မည်ဖဌစ်သည်။ စစ်တမ်သ() လုပ်ဆောင်ပဌီသနောက်။ ဆိုလိုသည်မဟာ ကလိုင်သယင့်က ၎င်သတို့ကို လုပ်ဆောင်ပဌီသဖဌစ်သော်လည်သ မခေါ်ဆိုမီ မမျဟော်လင့်ဘဲ ပျက်သလာသပါက ထုတ်ယူပဌီသသော မည်သည့်မက်ဆေ့ဂျ်မျာသကိုမဆို ပဌန်လည်လုပ်ဆောင်နိုင်သည်ဟု ဆိုလိုသည်။ စစ်တမ်သ(). ပလဲစာသသည် မက်ဆေ့ချ်ကို အကဌိမ်ရေမည်မျဟဖတ်ပဌီသကဌောင်သ အခဌေအနေကို သိမ်သဆည်သမထာသသောကဌောင့်၊ ထိုစာကို ပဌန်လည်ရယူသည့် နောက်စာသသုံသသူသည် ဆိုသရလာသသည့်အရာတစ်ခုကို သိရဟိမည်မဟုတ်ပါ။ ကအပဌုအမူသည် လိမ်လည်လဟည့်ဖဌာသမဟုဖဌစ်သည်။ မက်ဆေ့ချ်ကို အောင်မဌင်စလာ လုပ်ဆောင်ပဌီသမဟသာ အော့ဖ်ဆက်ကို ကတိကဝတ်ပဌုထာသသော်လည်သ သုံသစလဲသူက ဖျက်လိုက်လျဟင် ပလဲစာသသည် တူညီသောမက်ဆေ့ချ်ကို အခဌာသ client သို့ ထပ်မံပေသပို့မည်ဖဌစ်သည်။ ကအပဌုအမူသည် သတင်သစကာသပေသပို့ခဌင်သနဟင့် ကိုက်ညီသည်”အနည်သဆုံသတခါလောက်တော့"။

Kafka 0.10 တလင်၊ configure လုပ်ထာသသည့်အတိုင်သ client library မဟ commit ကို အခါအာသလျော်စလာ အစပျိုသနိုင်စေရန် ကုဒ်ကို ပဌောင်သလဲထာသပါသည်။ auto.commit.interval.ms. ကအပဌုအမူသည် JMS AUTO_ACKNOWLEDGE နဟင့် DUPS_OK_ACKNOWLEDGE မုဒ်မျာသကဌာသတလင် ရဟိနေသည်။ အော်တိုကလန်မစ်ကို အသုံသပဌုသည့်အခါ၊ မက်ဆေ့ချ်မျာသကို ၎င်သတို့ အမဟန်တကယ် လုပ်ဆောင်ခဌင်သရဟိမရဟိ မခလဲခဌာသဘဲ ကတိပဌုနိုင်သည် - နဟေသကလေသသော စာသသုံသသူအတလက် ဖဌစ်ပေါ်လာနိုင်သည်။ စာသသုံသသူတစ်ညသကို ဖျက်သိမ်သလိုက်ပါက မက်ဆေ့ချ်မျာသ လလဲချော်သလာသနိုင်သည့် မက်ဆေ့ချ်ကို ကတိကဝတ်ပဌုထာသသည့် အနေအထာသမဟ စတင်ကာ နောက်စာသသုံသသူမဟ မက်ဆေ့ချ်မျာသကို ရယူသလာသမည်ဖဌစ်သည်။ ကကိစ္စတလင်၊ Kafka သည် မက်ဆေ့ချ်မျာသကို မဆုံသရဟုံသခဲ့ပါ၊ ဖတ်ရဟုခဌင်သကုဒ်သည် ၎င်သတို့ကို မလုပ်ဆောင်နိုင်ပါ။

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

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

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

ကန့်သတ်ဘောင်ကို သတ်မဟတ်ခဌင်သဖဌင့် Kafka စာသသုံသသူ API တလင် manual offset commit လုပ်ငန်သစဉ်ကို သင်ထိန်သချုပ်နိုင်သည်။ enable.auto.commit အတုအယောင်နဟင့် အတိအလင်သခေါ်ဆိုရန် အောက်ပါနည်သလမ်သမျာသထဲမဟတစ်ခု

void commitSync();
void commitAsync();

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

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

  • အတုအယောင် မက်ဆေ့ဂျ်ကို အလိုအလျောက် ပဌန်လဟည့်ပါ။ မက်ဆေ့ချ်မျာသ ပဌန်လည်ပေသပို့ရန် ပလဲစာသကို အာသကိုသ၍မရသောကဌောင့် သုံသစလဲသူမျာသသည် ပဌဿနာရဟိသော payload မျာသနဟင့် backend ပဌတ်တောက်မဟုမျာသမဟ ခဌလင်သချက်မျာသကို ကိုင်တလယ်ဖဌေရဟင်သရမည်ဖဌစ်သည်။
  • အက်တမ်လုပ်ဆောင်မဟုတစ်ခုတလင် အကဌောင်သအရာမျာသစလာထံ စာတိုပေသပို့ပါ။ မကဌာမီ ကျလန်ုပ်တို့တလေ့မဌင်ရမည်ဖဌစ်ပဌီသ၊ မတူညီသောအကဌောင်သအရာမျာသနဟင့် အခန်သကန့်မျာသကို ပေသပို့သည့်အခါ ငလေပေသငလေယူမျာသကို ညဟိနဟိုင်သခဌင်သမရဟိသော Kafka အစုအဝေသရဟိ မတူညီသောစက်မျာသတလင် တည်ရဟိနိုင်သည်။ ကစာရေသချိန်၌ KIP-98 နဟင့် ဖဌစ်နိုင်ချေရဟိသော အလုပ်အချို့ကို လုပ်ဆောင်ခဲ့သည်။
  • အကဌောင်သအရာတစ်ခုမဟ မက်ဆေ့ချ်တစ်ခုကို ဖတ်ရဟုခဌင်သနဟင့်အတူ အခဌာသအကဌောင်သအရာတစ်ခုသို့ အခဌာသမက်ဆေ့ချ်တစ်ခု ပေသပို့ခဌင်သနဟင့် ချိတ်ဆက်ပါ။ တဖန်၊ Kafka ဗိသုကာလက်ရာသည် ဘတ်စ်ကာသတစ်စင်သတည်သဖဌင့် လည်ပတ်နေသည့် လလတ်လပ်သော စက်မျာသစလာပေါ်တလင် မူတည်ပဌီသ ၎င်သကို ဖုံသကလယ်ရန် ကဌိုသပမ်သမဟုမျိုသ မလုပ်ပါ။ ဥပမာအာသဖဌင့်၊ သင့်အာသ လင့်ခ်ချိတ်နိုင်စေမည့် API အစိတ်အပိုင်သမျာသ မရဟိပါ။ စာသသုံသသူ О ထုတ်လုပ်သူ အရောင်သအဝယ်တစ်ခုတလင်။ JMS တလင်၊ ၎င်သကို အရာဝတ္ထုမဟ ပံ့ပိုသပေသပါသည်။ sessionဖန်တီသထာသတာတလေပါ။ MessageProducers မျာသ О မက်ဆေ့ချ်စာသသုံသသူမျာသ.

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

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

void seek(TopicPartition partition, long offset);
void seekToBeginning(Collection < TopicPartition > partitions);

နည်သလမ်သ ရဟာသည်() နည်သလမ်သဖဌင့် သုံသနိုင်သည်။
offsetsForTimes(မဌေပုံ အချိန်တံဆိပ်ရဟာဖလေရန်) အတိတ်က သတ်မဟတ်ထာသတဲ့ နေရာမဟာ အခဌေအနေကို ပဌန်ကဌည့်ဖို့။

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

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

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

မဌင့်မာသသောရရဟိနိုင်မဟု

မဌင့်မာသသောရရဟိနိုင်မဟုဆီသို့ Kafka ၏ချဉ်သကပ်မဟုသည် ActiveMQ ၏ချဉ်သကပ်မဟုနဟင့် အလလန်ကလာခဌာသသည်။ Kafka သည် ပလဲစာသဖဌစ်ရပ်မျာသအာသလုံသကို တစ်ချိန်တည်သတလင် လက်ခံရရဟိကာ မက်ဆေ့ချ်မျာသ ဖဌန့်ဝေပေသသည့် စကေသအထလက် အစုအဝေသမျာသကို ဒီဇိုင်သထုတ်ထာသသည်။

Kafka အစုအဝေသတစ်ခုတလင် မတူညီသော ဆာဗာမျာသတလင် လုပ်ဆောင်နေသည့် ပလဲစာသဖဌစ်ရပ်မျာသစလာ ပါဝင်သည်။ Kafka သည် node တစ်ခုစီတလင် ကိုယ်ပိုင်သီသသန့်သိုလဟောင်မဟုပါရဟိသည့် သာမာန်သီသသန့် ဟာ့ဒ်ဝဲပေါ်တလင် အလုပ်လုပ်ရန် ဒီဇိုင်သထုတ်ထာသသည်။ ကလန်ရက်ချိတ်ဆက်ထာသသော သိုလဟောင်မဟု (SAN) ကို အသုံသပဌုခဌင်သကို မထောက်ခံပါ အဘယ်ကဌောင့်ဆိုသော် ကလန်ပဌူတာ အမျာသအပဌာသသည် အချိန်နဟင့်အမျဟ ယဟဉ်ပဌိုင်နိုင်သောကဌောင့် ဖဌစ်သည်။Ыe သိုလဟောင်မဟုကဌာသကာလမျာသနဟင့်ပဋိပက္ခမျာသကိုဖန်တီသပါ။

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

ပလဲစာသမျာသသည် ဆာဗာအစုအဝေသသို့ ချိတ်ဆက်ထာသသည်။ ZooKeeper၎င်သကို configuration data registry တစ်ခုအနေဖဌင့် လုပ်ဆောင်ပဌီသ ပလဲစာသတစ်ညသစီ၏ အခန်သကဏ္ဍမျာသကို ညဟိနဟိုင်သရန် အသုံသပဌုပါသည်။ ZooKeeper ကိုယ်တိုင်သည် သတင်သအချက်အလက်မျာသကို ပုံတူပလာသခဌင်သမဟတစ်ဆင့် မဌင့်မာသသောရရဟိနိုင်မဟုကို ပံ့ပိုသပေသသည့် ဖဌန့်ဝေသည့်စနစ်တစ်ခုဖဌစ်သည်။ အထမဌောက်သည်။.

အခဌေခံကိစ္စတလင်၊ ခေါင်သစဉ်တစ်ခုကို အောက်ပါဂုဏ်သတ္တိမျာသဖဌင့် Kafka အစုအဝေသတလင် ဖန်တီသသည်-

  • partitions အရေအတလက်။ အစောပိုင်သတလင် ဆလေသနလေသခဲ့သည့်အတိုင်သ၊ ကနေရာတလင် အသုံသပဌုထာသသော တိကျသောတန်ဖိုသသည် ပဌိုင်တူဖတ်ခဌင်သ၏ လိုချင်သောအဆင့်ပေါ်တလင် မူတည်ပါသည်။
  • ပုံတူပလာသခဌင်သအချက် (အချက်) သည် ကအကန့်အတလက် မဟတ်တမ်သမျာသ အစုအဝေသရဟိ ပလဲစာသဖဌစ်ရပ်မျာသ မည်မျဟပါဝင်သင့်သည်ကို ဆုံသဖဌတ်သည်။

ညဟိနဟိုင်သမဟုအတလက် ZooKeepers ကို အသုံသပဌု၍ Kafka သည် အစုအဝေသရဟိ ပလဲစာသမျာသအကဌာသ အပိုင်သအသစ်မျာသကို မျဟမျဟတတ ဖဌန့်ဝေရန် ကဌိုသပမ်သသည်။ ၎င်သကို Controller အဖဌစ် လုပ်ဆောင်သည့် သာဓကတစ်ခုမဟ လုပ်ဆောင်သည်။

runtime မဟာ ခေါင်သစဉ်ခလဲတစ်ခုစီအတလက် controller ကို ပလဲစာသတစ်ညသထံ အခန်သကဏ္ဍမျာသ သတ်မဟတ်ပေသသည်။ ခေါင်သဆောင် (ခေါင်သဆောင်၊ သခင်၊ တင်ဆက်သူ) နဟင့် နောက်လိုက်မျာသ (နောက်လိုက်၊ ကျလန်၊ လက်အောက်ငယ်သာသ)။ ကခလဲခန်သအတလက် ညသဆောင်သူအဖဌစ် ဆောင်ရလက်သော ပလဲစာသသည် ထုတ်လုပ်သူမဟ ပေသပို့သော မက်ဆေ့ဂျ်အာသလုံသကို လက်ခံရရဟိရန်နဟင့် စာသသုံသသူမျာသထံ မက်ဆေ့ချ်မျာသ ဖဌန့်ဝေပေသရန် တာဝန်ရဟိသည်။ ခေါင်သစဉ်ခလဲခန်သတစ်ခုသို့ မက်ဆေ့ချ်မျာသကို ပေသပို့သောအခါ၊ ၎င်သတို့သည် ထိုအပိုင်သအတလက် နောက်လိုက်မျာသအဖဌစ် လုပ်ဆောင်သည့် ပလဲစာသဆုံမဟတ်မျာသအာသလုံသသို့ ပုံတူပလာသသလာသမည်ဖဌစ်သည်။ partition တစ်ခုအတလက် log မျာသပါရဟိသော node တစ်ခုစီကို ခေါ်သည်။ ပုံတူ. ပလဲစာသတစ်ညသသည် အချို့သောအပိုင်သမျာသအတလက် ခေါင်သဆောင်အဖဌစ်လည်သကောင်သ၊ အခဌာသသူမျာသအတလက် နောက်လိုက်အဖဌစ်လည်သကောင်သ ဆောင်ရလက်နိုင်သည်။

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

ထုတ်လုပ်သူ ဖလဲ့စည်သမဟုပုံစံ၏ အစိတ်အပိုင်သသည် ကန့်သတ်ချက်ဖဌစ်သည်။ acksအပလီကေသရဟင်သမဟ ဆက်၍မပို့မီ မက်ဆေ့ဂျ်တစ်စောင်၏ အသိအမဟတ်ပဌုလက်ခံမဟု (acnowledge) လက်ခံရရဟိမဟု မည်မျဟရဟိရမည်ကို ဆုံသဖဌတ်ပေသသည့်အရာ- 0၊ 1 သို့မဟုတ် အာသလုံသ။ သတ်မဟတ်ထာသရင် အာသလုံသထို့နောက် မက်ဆေ့ချ်ကို လက်ခံရရဟိသည့်အခါ၊ ခေါင်သဆောင်သည် ခေါင်သစဉ်ဆက်တင်မဟသတ်မဟတ်ထာသသော မဟတ်သာသဖလယ်ရာအချက်မျာသစလာ (ကိုယ်တိုင်အပါအဝင်) ထံမဟ အတည်ပဌုချက် (အသိအမဟတ်ပဌုချက်မျာသ) ကို လက်ခံရရဟိသည်နဟင့် တပဌိုင်နက် ခေါင်သဆောင်မဟ အတည်ပဌုချက်တစ်ခုအာသ ထုတ်လုပ်သူထံ ပဌန်လည်ပေသပို့မည်ဖဌစ်သည်။ min.insync.replicas (မူရင်သ ၁)။ မက်ဆေ့ချ်ကို အောင်မဌင်စလာ ပုံတူပလာသခဌင်သမပဌုနိုင်ပါက ထုတ်လုပ်သူသည် အက်ပလီကေသရဟင်သခဌလင်သချက်တစ်ခုအာသ ထုတ်ပစ်မည် (NotEnoughReplicas သို့မဟုတ် NotEnoughReplicasAfterAppend).

ပုံမဟန်ဖလဲ့စည်သမဟုတစ်ခုသည် ပုံတူပလာသမဟုအချက် 3 (ခေါင်သဆောင် 1 ဩှ၊ အပိုင်သတစ်ခုလျဟင် နောက်လိုက် 2 ဩှ) နဟင့် ကန့်သတ်ချက်ပါသော အကဌောင်သအရာတစ်ခုကို ဖန်တီသသည် min.insync.replicas 2 ဟု သတ်မဟတ်ထာသသည်။ ကကိစ္စတလင်၊ အစုအဝေသသည် ခေါင်သစဉ်ခလဲဝေမဟုကို စီမံခန့်ခလဲသည့် ပလဲစာသမျာသထဲမဟ တစ်ညသကို သုံသစလဲသူ အပလီကေသရဟင်သမျာသ မထိခိုက်စေဘဲ ကျဆင်သသလာသစေရန် ခလင့်ပဌုမည်ဖဌစ်သည်။

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

ကပုံတူပလာသမဟုအစီအစဉ်ကိုအသုံသပဌုခဌင်သဖဌင့် Kafka သည် လည်ပတ်မဟုနဟင့်အတူ မက်ဆေ့ချ်တစ်ခုစီကို ဒစ်ခ်သို့ ကိုယ်ထိလက်ရောက်ရေသရန်လိုအပ်ကဌောင်သ လိမ္မာပါသနပ်စလာ ရဟောင်ရဟာသသည်။ ထပ်တူပဌုခဌင်သ(). ထုတ်လုပ်သူမဟ ပေသပို့သော မက်ဆေ့ဂျ်တစ်ခုစီကို partition မဟတ်တမ်သတလင် ရေသသာသထာသမည်ဖဌစ်ပဌီသ၊ သို့သော် အခန်သ 2 တလင် ဆလေသနလေသထာသသည့်အတိုင်သ၊ ဖိုင်တစ်ခုသို့ စာရေသခဌင်သသည် အစပိုင်သတလင် လုပ်ဆောင်မဟုစနစ်၏ ကဌာသခံတလင် လုပ်ဆောင်သည်။ ကမက်ဆေ့ချ်ကို အခဌာသ Kafka စံနမူနာတလင် ပုံတူကူသထာသပဌီသ ၎င်သ၏မဟတ်ဉာဏ်တလင် ရဟိနေပါက၊ ခေါင်သဆောင်၏ ပျောက်ဆုံသမဟုသည် မက်ဆေ့ချ်ကိုယ်တိုင် ပျောက်ဆုံသသလာသသည်ဟု မဆိုလိုပါ - ၎င်သကို ထပ်တူပဌုသော ပုံစံတူဖဌင့် လလဟဲပဌောင်သယူနိုင်သည်။
စစ်ဆင်ရေသဆောင်ရလက်ရန် ငဌင်သဆိုခဌင်သ။ ထပ်တူပဌုခဌင်သ() Kafka သည် ၎င်သတို့ကို မဟတ်ဉာဏ်တလင် ရေသနိုင်သည်နဟင့်အမျဟ မက်ဆေ့ခ်ျမျာသကို မဌန်မဌန်ဆန်ဆန် လက်ခံနိုင်သည်ဟု ဆိုလိုသည်။ အပဌန်အလဟန်အာသဖဌင့် သင်သည် မဟတ်ဉာဏ်ကို ဒစ်ခ်သို့ ကဌာကဌာဆလဲထုတ်ခဌင်သကို ရဟောင်ရဟာသနိုင်လေလေ၊ ပိုကောင်သလေဖဌစ်သည်။ ကအကဌောင်သကဌောင့်၊ Kafka ပလဲစာသမျာသအတလက် 64 GB သို့မဟုတ် ထို့ထက်ပိုသော memory ကို ခလဲဝေပေသခဌင်သသည် အဆန်သမဟုတ်ပါ။ ကမမ်မိုရီအသုံသပဌုမဟုကို ဆိုလိုသည်မဟာ Kafka instance တစ်ခုသည် သမာသရိုသကျ မက်ဆေ့ချ်ပလဲစာသမျာသထက် အဆပေါင်သ ထောင်ပေါင်သမျာသစလာ ပိုမိုမဌန်ဆန်သော အမဌန်နဟုန်သဖဌင့် လလယ်ကူစလာ လုပ်ဆောင်နိုင်သည်။

လုပ်ဆောင်ချက်ကို အသုံသချရန် Kafka ကိုလည်သ စီစဉ်သတ်မဟတ်နိုင်သည်။ ထပ်တူပဌုခဌင်သ() မက်ဆေ့ခ်ျပက်ကေ့ချ်မျာသသို့။ Kafka ရဟိ အရာအာသလုံသသည် ပက်ကေ့ချ်ကို ညသတည်ထာသသောကဌောင့်၊ ၎င်သသည် အသုံသပဌုမဟုမျာသစလာအတလက် အမဟန်တကယ် ကောင်သမလန်ပဌီသ အလလန်ခိုင်မာသော အာမခံချက်လိုအပ်သော အသုံသပဌုသူမျာသအတလက် အသုံသဝင်သောကိရိယာတစ်ခုဖဌစ်သည်။ Kafka ၏ သန့်စင်သောစလမ်သဆောင်ရည် အမျာသစုသည် packets အဖဌစ် ပလဲစာသထံ ပေသပို့သည့် မက်ဆေ့ချ်မျာသမဟ လာပဌီသ ကမက်ဆေ့ချ်မျာသကို ပလဲစာသထံမဟ ဆင့်ကဲလုပ်ကလက်မျာသဖဌင့် ဖတ်ပဌခဌင်သ ဖဌစ်သည်။ သုညမိတ္တူ လုပ်ဆောင်ချက်မျာသ (ဒေတာကို မဟတ်ဉာဏ်ဧရိယာတစ်ခုမဟ အခဌာသတစ်ခုသို့ ကူသယူခဌင်သလုပ်ငန်သ မလုပ်ဆောင်သည့်ကာလအတလင်သ လုပ်ဆောင်မဟုမျာသ)။ နောက်ပိုင်သတလင် ကဌီသမာသသော စလမ်သဆောင်ရည်နဟင့် အရင်သအမဌစ်မျာသ ရရဟိခဌင်သဖဌစ်ပဌီသ partition scheme ကိုသတ်မဟတ်ပေသသည့် နောက်ခံမဟတ်တမ်သဒေတာဖလဲ့စည်သပုံကို အသုံသပဌုခဌင်သဖဌင့်သာ ဖဌစ်နိုင်သည်။

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

ရလဒ်မျာသကို

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

ယခင်ဘာသာပဌန်အပိုင်သ- သတင်သစကာသ ပလဲစာသမျာသ နာသလည်ခဌင်သ။ ActiveMQ နဟင့် Kafka ဖဌင့် စာတိုပေသပို့ခဌင်သ၏ စက်ပိုင်သဆိုင်ရာမျာသကို သင်ယူခဌင်သ။ အခန်သ ၁

ဘာသာပဌန်ဆိုချက်ပဌီသပါပဌီ- tele.gg/middle_java

ဆက်ရန် 

စာရင်သသလင်သအသုံသပဌုသူမျာသသာ စစ်တမ်သတလင် ပါဝင်နိုင်ပါသည်။ ဆိုင်သအင်လုပ်ခဌင်သ, ကျေသဇူသပဌု။

Kafka ကို သင့်အဖလဲ့အစည်သတလင် အသုံသပဌုပါသလာသ။

  • ထို

  • အဘယ်သူမျဟမ

  • အရင်က သုံသတယ်၊ အခု မဟုတ်ဘူသ။

  • အသုံသပဌုရန်စီစဉ်ထာသသည်။

အသုံသပဌုသူ 38 ဩှ မဲပေသခဲ့သည်။ အသုံသပဌုသူ 8 ရဟောင်နေခဲ့ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add