نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

اي حبر!

اسان توهان کي ياد ڏياريندا آهيون ته ڪتاب جي پٺيان ڪوفي اسان لائبريري جي باري ۾ هڪ جيتري دلچسپ ڪم شايع ڪيو آهي ڪافڪا اسٽريمز API.

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

هينئر تائين، ڪميونٽي صرف هن طاقتور اوزار جي حدن کي سکي رهي آهي. تنهن ڪري، تازو هڪ مضمون شايع ڪيو ويو، جنهن جو ترجمو اسان توهان کي متعارف ڪرائڻ چاهيون ٿا. پنهنجي تجربي مان، ليکڪ ٻڌائي ٿو ته ڪفڪا اسٽريمز کي ورهايل ڊيٽا اسٽوريج ۾ ڪيئن بدلجي. پڙهڻ جو مزو وٺو!

Apache لائبريري ڪافڪا وهڪرو Apache Kafka جي چوٽي تي ورهايل اسٽريم پروسيسنگ لاءِ دنيا جي ادارن ۾ استعمال ٿيل. هن فريم ورڪ جي اڻڄاتل حصن مان هڪ اهو آهي ته اهو توهان کي مقامي رياست کي ذخيرو ڪرڻ جي اجازت ڏئي ٿو جيڪا موضوع جي پروسيسنگ جي بنياد تي پيدا ڪئي وئي آهي.

هن آرٽيڪل ۾، مان توهان کي ٻڌايان ٿو ته ڪيئن اسان جي ڪمپني هن موقعي کي فائدي سان استعمال ڪرڻ ۾ مدد ڪئي جڏهن ڪلائوڊ ايپليڪيشن سيڪيورٽي لاء هڪ پيداوار ٺاهي. Kafka Streams استعمال ڪندي، اسان گڏيل رياستي مائيڪرو سروسز ٺاھيون، جن مان ھر ھڪ فالٽ برداشت ڪندڙ ۽ سسٽم ۾ موجود شين جي حالت بابت قابل اعتماد معلومات جو انتهائي دستياب ذريعو طور ڪم ڪري ٿو. اسان لاء، هي هڪ قدم اڳتي آهي ٻنهي جي اعتبار ۽ سهولت جي آسانيءَ جي لحاظ کان.

جيڪڏهن توهان هڪ متبادل طريقي سان دلچسپي رکو ٿا جيڪو توهان کي توهان جي شين جي رسمي حالت کي سپورٽ ڪرڻ لاء هڪ واحد مرڪزي ڊيٽابيس استعمال ڪرڻ جي اجازت ڏئي ٿي، ان کي پڙهو، اهو دلچسپ ٿيندو ...

اسان ڇو سوچيو ته اهو وقت تبديل ڪرڻ جو طريقو آهي جيڪو اسان گڏيل رياست سان ڪم ڪريون ٿا

اسان کي ايجنٽ جي رپورٽن جي بنياد تي مختلف شين جي حالت کي برقرار رکڻ جي ضرورت آهي (مثال طور: حملي هيٺ سائيٽ هئي)؟ ڪافڪا اسٽريمز ڏانهن لڏڻ کان اڳ، اسان اڪثر رياستي انتظام لاءِ هڪ مرڪزي ڊيٽابيس (+ سروس API) تي ڀروسو ڪندا هئاسين. اهو طريقو ان جي نقصانات آهي: تاريخ جي سخت حالتون مطابقت ۽ هم وقت سازي کي برقرار رکڻ هڪ حقيقي چئلينج بڻجي ٿو. ڊيٽابيس هڪ رڪاوٽ بڻجي سگهي ٿي يا ختم ٿي سگهي ٿي نسل جي حالت ۽ اڻڄاڻائيءَ جو شڪار.

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

شڪل 1: هڪ عام تقسيم-رياست واري منظرنامي کي منتقلي کان اڳ ڏٺو ويو
ڪافڪا ۽ ڪافڪا اسٽريمز: ايجنٽ پنهنجن خيالن جو اظهار API ذريعي ڪن ٿا، تازه ڪاري رياست مرڪزي ڊيٽابيس ذريعي حساب ڪئي وئي آهي

ملو ڪافڪا اسٽريمز، ان کي آسان بڻائي شيئر اسٽيٽ مائڪرو سروسز ٺاهڻ

اٽڪل هڪ سال اڳ، اسان انهن مسئلن کي حل ڪرڻ لاءِ پنهنجي گڏيل رياستي منظرنامي تي سخت نظر وجهڻ جو فيصلو ڪيو. اسان فوري طور تي ڪافڪا اسٽريمز کي آزمائڻ جو فيصلو ڪيو - اسان ڄاڻون ٿا ته اهو ڪيترو اسپيبلبل، انتهائي دستياب ۽ غلطي برداشت ڪرڻ وارو آهي، ان ۾ ڪهڙي ڀرپور اسٽريمنگ ڪارڪردگي آهي (تبديليون، بشمول رياستي ڳالهيون). بس جيڪو اسان کي گهربل آهي، اهو ذڪر ڪرڻ نه گهرجي ته ڪافڪا ۾ پيغام رسائيندڙ سسٽم ڪيترو پختو ۽ قابل اعتماد بڻجي چڪو آهي.

اسان جي ٺاهيل رياستي مائيڪرو سروسز مان هر هڪ ڪافڪا اسٽريمز جي مٿان ٺهيل هئي بلڪل سادي ٽوپولاجيءَ سان. اهو مشتمل آهي 1) هڪ ذريعو 2) هڪ پروسيسر هڪ مسلسل اهم-قيمت واري اسٽور سان 3) هڪ سنڪ:

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

شڪل 2: رياستي مائڪرو سروسز لاءِ اسان جي اسٽريمنگ مثالن جي ڊفالٽ ٽوپولوجي. ياد رهي ته هتي پڻ هڪ مخزن آهي جنهن ۾ پلاننگ ميٽا ڊيٽا شامل آهي.

هن نئين طريقي ۾، ايجنٽ پيغامن کي ترتيب ڏين ٿا جيڪي ماخذ موضوع ۾ شامل ڪيا ويا آهن، ۽ صارفين- چون ٿا، هڪ ميل نوٽيفڪيشن سروس- حاصل ڪيو ڪمپيوٽيڊ شيئر اسٽيٽ کي سنڪ ذريعي (آئوٽ پٽ موضوع).

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

شڪل 3: نئين مثال ٽاسڪ فلو هڪ منظرنامي لاءِ گڏيل مائڪرو سروسز سان: 1) ايجنٽ هڪ پيغام ٺاهي ٿو جيڪو ڪافڪا جي ماخذ موضوع تي پهچي ٿو؛ 2) گڏيل رياست سان هڪ مائڪرو سروس (ڪافڪا اسٽريمز استعمال ڪندي) ان کي پروسيس ڪري ٿي ۽ حساب ڪيل رياست کي آخري ڪافڪا موضوع ڏانهن لکندو آهي؛ جنهن کان پوء 3) صارفين نئين رياست کي قبول ڪن ٿا

اي، هي تعمير ٿيل اهم قيمتي اسٽور اصل ۾ تمام مفيد آهي!

جيئن مٿي ذڪر ڪيو ويو آهي، اسان جي گڏيل رياستي ٽوپولوجي ۾ هڪ اهم-ويل اسٽور شامل آهي. اسان ان کي استعمال ڪرڻ لاء ڪيترائي اختيار مليا، ۽ انھن مان ٻه ھيٺ بيان ڪيا ويا آھن.

آپشن #1: حسابن لاءِ ڪيئي-ويل اسٽور استعمال ڪريو

اسان جي پهرين اهم-قيمت واري اسٽور ۾ معاون ڊيٽا شامل آهي جيڪا اسان کي حسابن لاءِ گهربل هئي. مثال طور، ڪن حالتن ۾ گڏيل رياست جو تعين ”اڪثريتي ووٽن“ جي اصول سان ڪيو ويندو هو. مخزن ڪجهه اعتراض جي صورتحال تي سڀ تازي ايجنٽ رپورٽون رکي سگهي ٿو. پوء، جڏهن اسان هڪ ايجنٽ يا ٻئي کان نئين رپورٽ ملي ٿي، اسان ان کي محفوظ ڪري سگهون ٿا، اسٽوريج مان ساڳئي اعتراض جي حالت بابت ٻين سڀني ايجنٽن کان رپورٽون حاصل ڪري سگهون ٿا، ۽ حساب ڪتاب کي ورجائي سگهون ٿا.
هيٺ ڏنل شڪل 4 ڏيکاري ٿو ته ڪيئن اسان ڪيئي/ويليو اسٽور کي پروسيسر جي پروسيسنگ طريقي سان ظاهر ڪيو ته جيئن نئين پيغام تي عمل ڪري سگهجي.

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

مثال 4: اسان پروسيسر جي پروسيسنگ طريقي لاءِ ڪي-ويليو اسٽور تائين رسائي کوليندا آهيون (ان کان پوءِ، هر اسڪرپٽ جيڪا گڏيل رياست سان ڪم ڪري ٿي ان کي لازمي طور تي لاڳو ڪرڻ گهرجي. doProcess)

اختيار #2: ڪافڪا اسٽريمز جي چوٽي تي هڪ CRUD API ٺاهڻ

اسان جي بنيادي ڪم جي وهڪري کي قائم ڪرڻ، اسان اسان جي گڏيل رياستي مائڪرو سروسز لاء هڪ RESTful CRUD API لکڻ جي ڪوشش ڪرڻ شروع ڪيو. اسان چاهيون ٿا ته ڪجهه يا سڀني شين جي حالت کي ٻيهر حاصل ڪرڻ جي قابل ٿي، انهي سان گڏ ڪنهن شئي جي حالت کي سيٽ يا ختم ڪريو (پسند جي حمايت لاء مفيد).

سڀني Get State APIs کي سپورٽ ڪرڻ لاءِ، جڏهن به اسان کي پروسيسنگ دوران رياست جي ٻيهر ڳڻپ ڪرڻ جي ضرورت پوندي هئي، ته اسان ان کي گهڻي وقت تائين هڪ تعمير ٿيل ڪي-ويليو اسٽور ۾ محفوظ ڪيو. انهي صورت ۾، ڪافڪا اسٽريمز جي هڪ واحد مثال کي استعمال ڪندي اهڙي API کي لاڳو ڪرڻ بلڪل آسان ٿي وڃي ٿو، جيئن هيٺ ڏنل فهرست ۾ ڏيکاريل آهي:

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

شڪل 5: ڪنهن شئي جي اڳڪٿي ڪيل حالت کي حاصل ڪرڻ لاءِ بلٽ ان ڪي-ويليو اسٽور استعمال ڪندي

API ذريعي هڪ اعتراض جي حالت کي اپڊيٽ ڪرڻ پڻ آسان آهي لاڳو ڪرڻ. بنيادي طور تي، توهان سڀني کي ڪرڻ جي ضرورت آهي ڪافڪا پروڊيوسر ٺاهيو ۽ ان کي استعمال ڪرڻ لاءِ رڪارڊ ٺاهيو جنهن ۾ نئين رياست شامل آهي. اهو يقيني بڻائي ٿو ته API جي ذريعي ٺاهيل سڀئي پيغام ساڳئي طريقي سان پروسيس ڪيا ويندا جيڪي ٻين پيدا ڪندڙن کان وصول ڪيا ويا آهن (مثال طور ايجنٽ).

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

شڪل 6: توهان ڪافڪا پروڊيوسر استعمال ڪندي ڪنهن شئي جي حالت مقرر ڪري سگهو ٿا

ننڍي پيچيدگي: ڪافڪا جا ڪيترائي حصا آهن

اڳيون، اسان چاهيون ٿا پروسيسنگ لوڊ ورهائڻ ۽ دستيابي کي بهتر بڻائڻ جي ذريعي شيئر اسٽيٽ مائڪرو سروسز جو ڪلستر مهيا ڪندي في منظر. سيٽ اپ هڪ واءُ هو: هڪ دفعو اسان سڀني مثالن کي ترتيب ڏنو ته هڪ ئي ايپليڪيشن ID (۽ ساڳيو بوٽ اسٽريپ سرور) جي تحت هلائڻ لاءِ، لڳ ڀڳ سڀ ڪجهه پاڻمرادو ٿي ويو. اسان اهو پڻ بيان ڪيو آهي ته هر ماخذ جو موضوع ڪيترن ئي ورهاڱن تي مشتمل هوندو، انهي ڪري ته هر مثال کي اهڙي قسم جي ورهاڱي جو هڪ ذيلي سيٽ مقرر ڪري سگهجي ٿو.

مان اهو به ٻڌايان ٿو ته اهو عام رواج آهي ته اسٽيٽ اسٽور جي بيڪ اپ ڪاپي ٺاهيو وڃي ته جيئن، مثال طور، ناڪامي کان پوءِ بحالي جي صورت ۾، هن ڪاپي کي ٻئي مثال ۾ منتقل ڪريو. ڪافڪا اسٽريمز ۾ هر رياستي اسٽور لاءِ، هڪ نقل ٿيل موضوع هڪ تبديلي لاگ سان ٺاهيو ويو آهي (جيڪو مقامي اپڊيٽس کي ٽريڪ ڪري ٿو). اهڙيء طرح، ڪافڪا مسلسل رياستي اسٽور کي واپس وٺي ٿو. تنهن ڪري، هڪ يا ٻي ڪافڪا اسٽريمز جي ناڪامي جي صورت ۾، رياستي اسٽور کي ٻي صورت ۾ جلدي بحال ڪري سگهجي ٿو، جتي لاڳاپيل ڀاڱا ويندا. اسان جا تجربا ڏيکاريا ويا آهن ته اهو ڪجهه سيڪنڊن ۾ ڪيو ويندو آهي، جيتوڻيڪ اسٽور ۾ لکين رڪارڊ موجود آهن.

ھڪڙي مائيڪرو سروس مان ھڪڙي مائيڪرو سروس کان گڏيل رياست سان مائيڪرو سروسز جي ھڪڙي ڪلستر ڏانھن منتقل ٿيڻ، اھو گھٽ گھٽ ٿي ويندو آھي لاڳو ڪرڻ لاءِ Get State API. نئين صورتحال ۾، هر مائيڪرو سروس جي رياستي اسٽور ۾ صرف مجموعي تصوير جو حصو هوندو آهي (اهي شيون جن جي ڪنجين کي مخصوص ورهاڱي تي نقشو ڪيو ويو هو). اسان کي اهو طئي ڪرڻو هو ته ڪهڙي مثال ۾ اعتراض جي حالت شامل آهي جيڪا اسان کي گهربل آهي، ۽ اسان اهو ڪيو آهي ڌاڳو ميٽاداٽا جي بنياد تي، جيئن هيٺ ڏيکاريل آهي:

نه صرف پروسيسنگ: اسان ڪفڪا اسٽريمز مان ورهايل ڊيٽابيس ڪيئن ٺاهيو، ۽ ان مان ڇا آيو

شڪل 7: اسٽريم ميٽاداٽا استعمال ڪندي، اسان طئي ڪريون ٿا ته ڪھڙي مثال مان پڇا ڳاڇا ڪجي مطلوب شئي جي حالت؛ ھڪڙو ساڳيو طريقو استعمال ڪيو ويو GET ALL API سان

اهم ڳولڻ

ڪافڪا اسٽريمز ۾ رياستي اسٽور هڪ حقيقي طور تي ورهايل ڊيٽابيس طور ڪم ڪري سگهن ٿا،

  • ڪافڪا ۾ مسلسل نقل ٿيل
  • هڪ CRUD API آساني سان اهڙي سسٽم جي چوٽي تي ٺاهي سگهجي ٿو
  • ڪيترن ئي ورهاڱي کي سنڀالڻ ٿورو وڌيڪ پيچيده آهي
  • اهو پڻ ممڪن آهي ته هڪ يا وڌيڪ رياستي اسٽورن کي اسٽريمنگ ٽوپولوجي ۾ شامل ڪرڻ لاءِ معاون ڊيٽا کي ذخيرو ڪرڻ لاءِ. هي اختيار استعمال ڪري سگهجي ٿو:
  • اسٽريم پروسيسنگ دوران حسابن لاءِ گهربل ڊيٽا جي ڊگھي مدت
  • ڊيٽا جي ڊگھي مدي واري اسٽوريج جيڪا شايد ڪارائتو ٿي سگهي ٿي ايندڙ وقت جي اسٽريمنگ مثال مهيا ڪئي وئي آهي
  • گهڻو وڌيڪ...

اهي ۽ ٻيا فائدا ڪافڪا اسٽريمز کي اسان وانگر ورهايل نظام ۾ عالمي رياست قائم رکڻ لاءِ موزون بڻائيندا آهن. ڪافڪا اسٽريمز پيداوار ۾ تمام قابل اعتماد ثابت ٿي چڪو آهي (اسان ان کي ترتيب ڏيڻ کان پوءِ عملي طور تي ڪوبه پيغام نقصان نه پهچايو آهي)، ۽ اسان کي يقين آهي ته ان جون صلاحيتون اتي بند نه ٿينديون!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو