ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ሃይ ሀብር!

መጽሐፉን በመከተል እናስታውስዎታለን ካፋካ ስለ ቤተ መጻሕፍቱ ተመሳሳይ አስደሳች ሥራ አሳትመናል። የካፍካ ዥረቶች ኤፒአይ.

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ለአሁኑ፣ ማህበረሰቡ የዚህን ኃይለኛ መሳሪያ ገደብ እየተማረ ነው። ስለዚህ፣ አንድ ጽሑፍ በቅርቡ ታትሞ ነበር፣ የትርጉም ሥራውን ልናስተዋውቃችሁ ወደድን። ከራሱ ልምድ፣ ደራሲው የካፍካ ዥረቶችን ወደ የተከፋፈለ የውሂብ ማከማቻ እንዴት እንደሚቀይሩ ይነግራል። በማንበብ ይደሰቱ!

Apache ቤተ-መጽሐፍት የካፍካ ዥረቶች በአፓቼ ካፍካ አናት ላይ ለተሰራጨ የዥረት ሂደት በድርጅቶች ውስጥ በአለም አቀፍ ደረጃ ጥቅም ላይ ይውላል። የዚህ ማዕቀፍ ዝቅተኛ አድናቆት ከሌለው አንዱ በክር ማቀነባበር ላይ ተመርኩዞ የሚመረተውን የአካባቢ ግዛት እንዲያከማቹ ያስችልዎታል.

በዚህ ጽሑፍ ውስጥ ኩባንያችን ለደመና አፕሊኬሽን ደህንነት ምርትን ሲያዘጋጅ ይህንን እድል እንዴት በትርፍ ሊጠቀምበት እንደቻለ እነግርዎታለሁ። የካፍካ ዥረቶችን በመጠቀም፣ የተጋሩ የስቴት ማይክሮ ሰርቪሶችን ፈጠርን ፣እያንዳንዳቸው እንደ ስህተት ታጋሽ እና በስርዓቱ ውስጥ ስላሉ ነገሮች ሁኔታ አስተማማኝ የመረጃ ምንጭ ሆኖ ያገለግላል። ለእኛ፣ ይህ በአስተማማኝነት እና በቀላል የድጋፍ ቀላልነት ወደፊት የሚሄድ እርምጃ ነው።

የነገሮችህን መደበኛ ሁኔታ ለመደገፍ ነጠላ ማዕከላዊ ዳታቤዝ እንድትጠቀም የሚያስችል አማራጭ አቀራረብ ላይ ፍላጎት ካሎት አንብብ፣ አስደሳች ይሆናል...

ከጋራ ግዛት ጋር የምንሰራበትን መንገድ ለመቀየር ጊዜው አሁን ነው ብለን ለምን አስበን ነበር።

በወኪል ሪፖርቶች ላይ በመመስረት የተለያዩ የነገሮችን ሁኔታ መጠበቅ አለብን (ለምሳሌ፡ ጣቢያው በጥቃቱ ላይ ነበር)? ወደ ካፍካ ዥረቶች ከመሰደዳችን በፊት፣ ለግዛት አስተዳደር ብዙ ጊዜ በአንድ ማዕከላዊ ዳታቤዝ (+ አገልግሎት API) እንተማመን ነበር። ይህ አካሄድ የራሱ ድክመቶች አሉት- ቀን ከባድ ሁኔታዎች ወጥነትን መጠበቅ እና ማመሳሰል እውነተኛ ፈተና ይሆናል። የመረጃ ቋቱ ማነቆ ሊሆን ወይም ወደ ውስጥ ሊገባ ይችላል። የዘር ሁኔታ እና በማይታወቅ ሁኔታ ይሰቃያሉ.

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምስል 1፡ ወደ ሽግግር ከመደረጉ በፊት የታየ የተለመደ የተከፋፈለ-ግዛት ሁኔታ
የካፍካ እና የካፍካ ዥረቶች፡ ወኪሎች አመለካከታቸውን በኤፒአይ ያስተላልፋሉ፣ የዘመነው ሁኔታ በማዕከላዊ ዳታቤዝ ይሰላል

የጋራ የመንግስት ጥቃቅን አገልግሎቶችን ለመፍጠር ቀላል በማድረግ የካፍ ዥረቶችን ያግኙ

ከአንድ ዓመት በፊት፣ እነዚህን ጉዳዮች ለመፍታት የጋራ የግዛት ሁኔታዎችን በጥልቀት ለማየት ወስነናል። ወዲያውኑ የካፍካ ዥረቶችን ለመሞከር ወሰንን - ምን ያህል ሊሰፋ የሚችል፣ ከፍተኛ የሚገኝ እና ስህተትን የሚቋቋም እንደሆነ፣ ምን ያህል የበለፀገ የዥረት ተግባር እንዳለው እናውቃለን (ለውጦች፣ መንግስታዊ የሆኑትን ጨምሮ)። እኛ የሚያስፈልገንን ብቻ፣ የመልእክት መላላኪያ ስርዓቱ በካፍካ ውስጥ ምን ያህል ብስለት እና አስተማማኝ እንደሆነ ሳንጠቅስ።

እያንዳንዱ የፈጠርናቸው የማይክሮ አገልግሎቶች በካፍካ ዥረቶች ምሳሌ ላይ በትክክል ቀላል በሆነ ቶፖሎጂ ተገንብተዋል። እሱ 1) ምንጭ 2) አንጎለ ኮምፒውተር የማያቋርጥ ቁልፍ እሴት ማከማቻ 3) ማጠቢያ፡-

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምስል 2፡ የስርጭት አጋጣሚዎች ነባሪ ቶፖሎጂ ለግዛታዊ ጥቃቅን አገልግሎቶች። የዕቅድ ዲበ ውሂብን የያዘ ማከማቻም እንዳለ ልብ ይበሉ።

በዚህ አዲስ አቀራረብ፣ ወኪሎች ወደ ምንጭ ርዕስ የሚገቡ መልዕክቶችን ያዘጋጃሉ፣ እና ሸማቾች—በማለት፣ የደብዳቤ ማሳወቂያ አገልግሎት—የተሰላ የጋራ ሁኔታን በመታጠቢያ ገንዳ (የውጤት ርዕስ) ይቀበላሉ።

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምስል 3፡ አዲስ ምሳሌ የተግባር ፍሰት ከጋራ ማይክሮ አገልገሎቶች ጋር፡ 1) ወኪሉ በካፍ ምንጭ ርዕስ ላይ የሚደርሰውን መልእክት ያመነጫል። 2) ማይክሮ አገልግሎት ከጋራ ግዛት ጋር (የካፍካ ዥረቶችን በመጠቀም) ያስኬደው እና የተሰላውን ሁኔታ ወደ መጨረሻው የካፍካ ርዕስ ይጽፋል; ከዚያ በኋላ 3) ሸማቾች አዲሱን ግዛት ይቀበላሉ

ሄይ፣ ይህ አብሮ የተሰራ የቁልፍ እሴት መደብር በእውነቱ በጣም ጠቃሚ ነው!

ከላይ እንደተጠቀሰው፣ የእኛ የጋራ ግዛት ቶፖሎጂ ቁልፍ ዋጋ ያለው ማከማቻ ይዟል። እሱን ለመጠቀም ብዙ አማራጮችን አግኝተናል, እና ሁለቱ ከዚህ በታች ተብራርተዋል.

አማራጭ #1፡ ለስሌቶች የቁልፍ እሴት ማከማቻ ይጠቀሙ

የመጀመሪያው የቁልፍ ዋጋ ማከማቻችን ለስሌቶች የሚያስፈልጉንን ረዳት መረጃዎች ይዟል። ለምሳሌ, በአንዳንድ ሁኔታዎች የተጋራው ግዛት የሚወሰነው በ "አብላጫ ድምጽ" መርህ ነው. ማከማቻው ስለ አንዳንድ ነገር ሁኔታ ሁሉንም የቅርብ ጊዜ የወኪል ሪፖርቶችን ሊይዝ ይችላል። ከዚያም፣ ከአንድ ወይም ከሌላ ወኪል አዲስ ሪፖርት ስንቀበል፣ ልናስቀምጠው፣ ስለ አንድ ነገር ሁኔታ ከሌሎች ወኪሎች ሪፖርቶችን ከማከማቻው አውጥተን ስሌቱን መድገም እንችላለን።
ከዚህ በታች ያለው ምስል 4 አዲሱ መልእክት እንዲሰራ የቁልፍ/ዋጋ ማከማቻውን ለአቀነባባሪው ማቀነባበሪያ ዘዴ እንዴት እንዳጋለጥን ያሳያል።

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምሳሌ 4፡ ለአቀነባባሪው የማቀናበሪያ ዘዴ ለቁልፍ-ዋጋ ማከማቻ መዳረሻን እንከፍተዋለን (ከዚህ በኋላ ከጋራ ሁኔታ ጋር የሚሰራ እያንዳንዱ ስክሪፕት ዘዴውን መተግበር አለበት) doProcess)

አማራጭ #2፡ በካፍካ ዥረቶች ላይ የCRUD ኤፒአይ መፍጠር

የእኛን መሠረታዊ የተግባር ፍሰት ካቋቋምን በኋላ፣ ለጋራ ግዛት ማይክሮ አገልግሎቶቻችን RESTful CRUD API ለመፃፍ መሞከር ጀመርን። የአንዳንድ ወይም ሁሉንም ነገሮች ሁኔታ ሰርስሮ ማውጣት፣ እንዲሁም የአንድን ነገር ሁኔታ ማዘጋጀት ወይም ማስወገድ መቻል እንፈልጋለን (ለጀርባ ድጋፍ ይጠቅማል)።

ሁሉንም Get State APIs ለመደገፍ፣ በሂደት ጊዜ ግዛቱን እንደገና ለማስላት በሚያስፈልገን ጊዜ ሁሉ አብሮ በተሰራ የቁልፍ እሴት ማከማቻ ውስጥ ለረጅም ጊዜ እናከማቻል። በዚህ አጋጣሚ፣ ከዚህ በታች ባለው ዝርዝር ላይ እንደሚታየው የካፍ ዥረቶችን ነጠላ ምሳሌ በመጠቀም እንዲህ ዓይነቱን ኤፒአይ መተግበር በጣም ቀላል ይሆናል።

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምስል 5፡ አብሮ የተሰራውን የቁልፍ እሴት ማከማቻ በመጠቀም የአንድን ነገር አስቀድሞ የተሰላ ሁኔታ ለማግኘት

የነገሩን ሁኔታ በኤፒአይ ማዘመን እንዲሁ ለመተግበር ቀላል ነው። በመሠረቱ, የሚያስፈልግዎ ነገር ቢኖር የካፍካ አምራች መፍጠር እና አዲሱን ግዛት የያዘውን መዝገብ ለማዘጋጀት ይጠቀሙበት. ይህ በኤፒአይ በኩል የሚፈጠሩ ሁሉም መልእክቶች ከሌሎች አምራቾች (ለምሳሌ ወኪሎች) በተቀበሉት መንገድ መሰራታቸውን ያረጋግጣል።

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምስል 6: የካፍካ አምራች በመጠቀም የአንድን ነገር ሁኔታ ማዘጋጀት ይችላሉ

ትንሽ ውስብስብ: ካፍካ ብዙ ክፍልፋዮች አሉት

በመቀጠል፣ የማቀነባበሪያውን ጭነት ለማሰራጨት እና በየሁኔታው የተጋሩ-ግዛት ጥቃቅን አገልግሎቶችን ክላስተር በማቅረብ ተገኝነትን ለማሻሻል እንፈልጋለን። ማዋቀር ቀላል ነበር፡ አንዴ ሁሉንም ሁኔታዎች በተመሳሳዩ የመተግበሪያ መታወቂያ (እና በተመሳሳዩ የቡትስትራፕ አገልጋዮች) እንዲሄዱ ካዋቀርን በኋላ ሁሉም ነገር ማለት ይቻላል በራስ ሰር ተከናውኗል። እንዲሁም እያንዳንዱ የመነሻ ርዕስ ብዙ ክፍልፋዮችን እንደሚይዝ ገልጸናል፣ ስለዚህም እያንዳንዱ ምሳሌ የዚህ ክፍልፋዮች ንዑስ ክፍል ሊመደብ ይችላል።

እኔ ደግሞ የስቴት ማከማቻን የመጠባበቂያ ቅጂ መስራት የተለመደ አሰራር መሆኑን እጠቅሳለሁ, ለምሳሌ, ከተሳካ በኋላ መልሶ ማገገም, ይህንን ቅጂ ወደ ሌላ ምሳሌ ያስተላልፉ. በካፍካ ዥረቶች ውስጥ ላለው እያንዳንዱ የግዛት መደብር፣ የተደገመ ርዕስ በለውጥ ምዝግብ ማስታወሻ (የአካባቢ ዝመናዎችን የሚከታተል) ይፈጠራል። ስለዚህ, ካፍካ የስቴት ማከማቻን ያለማቋረጥ ይደግፋል. ስለዚህ, የአንድ ወይም ሌላ የካፍካ ዥረቶች ምሳሌ ውድቀት በሚከሰትበት ጊዜ, የስቴት ማከማቻ በሌላ ሁኔታ በፍጥነት ወደነበረበት መመለስ ይቻላል, ተጓዳኝ ክፍሎቹ የሚሄዱበት. በሱቁ ውስጥ በሚሊዮን የሚቆጠሩ መዝገቦች ቢኖሩም ይህ የሚደረገው በሰከንዶች ጊዜ ውስጥ መሆኑን የእኛ ሙከራዎች ያሳያሉ።

ከአንድ ማይክሮ አገልግሎት ከተጋራ ግዛት ወደ የጥቃቅን አገልግሎቶች ስብስብ በመሄድ Get State API ን መተግበር ብዙም ተራ ይሆናል። በአዲሱ ሁኔታ የእያንዳንዱ ማይክሮ ሰርቪስ የግዛት ማከማቻ የአጠቃላይ ምስል አንድ ክፍል ብቻ ይይዛል (ቁልፎቻቸው ወደ አንድ የተወሰነ ክፍልፋይ የተነደፉ ዕቃዎች)። የምንፈልገውን ነገር ሁኔታ የትኛውን ምሳሌ እንደያዘ መወሰን ነበረብን፣ እና ይህን ያደረግነው ከዚህ በታች እንደሚታየው በክር ሜታዳታ ላይ በመመስረት ነው።

ማቀናበር ብቻ አይደለም፡ ከካፍካ ዥረቶች የተከፋፈለ የውሂብ ጎታ እንዴት እንደሰራን እና ምን እንደመጣ

ምስል 7፡ የዥረት ሜታዳታን በመጠቀም የሚፈለገውን ነገር ሁኔታ ከየትኛው ምሳሌ እንወስናለን። ከGET ALL API ጋር ተመሳሳይ ዘዴ ጥቅም ላይ ውሏል

ቁልፍ ግኝቶች

በካፍካ ዥረቶች ውስጥ ያሉ የመንግስት መደብሮች እንደ ተጨባጭ የተከፋፈለ የውሂብ ጎታ ሆነው ሊያገለግሉ ይችላሉ፣

  • በካፍካ ውስጥ ያለማቋረጥ ይደገማል
  • CRUD ኤፒአይ በእንደዚህ አይነት ስርዓት ላይ በቀላሉ ሊገነባ ይችላል።
  • ብዙ ክፍልፋዮችን ማስተናገድ ትንሽ የተወሳሰበ ነው።
  • ረዳት መረጃዎችን ለማከማቸት አንድ ወይም ከዚያ በላይ የግዛት መደብሮችን ወደ ዥረት ቶፖሎጂ ማከልም ይቻላል። ይህ አማራጭ ለሚከተሉት ሊያገለግል ይችላል-
  • በዥረት ሂደት ጊዜ ለማስላት የሚያስፈልጉትን የረጅም ጊዜ የውሂብ ማከማቻ
  • በሚቀጥለው ጊዜ የዥረት ምሳሌው ሲቀርብ ጠቃሚ ሊሆን የሚችል የረጅም ጊዜ የውሂብ ማከማቻ
  • ብዙ ተጨማሪ...

እነዚህ እና ሌሎች ጥቅማጥቅሞች የካፍካ ዥረቶችን እንደ እኛ በተሰራጭ ስርዓት ውስጥ ዓለም አቀፋዊ ሁኔታን ለመጠበቅ ተስማሚ ያደርጉታል። የካፍካ ዥረቶች በአምራችነት በጣም አስተማማኝ መሆናቸውን አረጋግጧል (ከተሰማራ ጀምሮ ምንም አይነት የመልእክት ኪሳራ አላጋጠመንም) እና አቅሙ በዚህ እንደማይቆም እርግጠኞች ነን!

ምንጭ: hab.com

አስተያየት ያክሉ