ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

እንደ ላሞዳ ያለ ትልቅ ኩባንያ፣ የተሳለጠ ሂደት እና በደርዘን የሚቆጠሩ ተያያዥ አገልግሎቶች ያለው፣ በአቀራረቡ ላይ ከፍተኛ ለውጥ ሊያመጣ የሚችለው ምንድን ነው? ተነሳሽነት ሙሉ በሙሉ የተለየ ሊሆን ይችላል-ከህግ አውጪው እስከ በሁሉም ፕሮግራመሮች ውስጥ በተፈጥሮ ውስጥ የመሞከር ፍላጎት።

ግን ይህ ማለት ተጨማሪ ጥቅሞችን መቁጠር አይችሉም ማለት አይደለም. በክስተቶች የሚመራውን ኤፒአይ በካፍካ ላይ ከተገበርክ በትክክል ምን ማሸነፍ ትችላለህ፣ ሰርጌይ ዛካ ይነግረናል (ጥቂት). እንዲሁም ስለ ተጨናነቁ ኮኖች እና አስደሳች ግኝቶች መኖራቸው አይቀርም - ሙከራው ያለ እነርሱ ማድረግ አይችልም።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

የኃላፊነት ማስተባበያ፡ ይህ መጣጥፍ የተመሰረተው ሰርጌይ በኖቬምበር 2018 በሃይሎድ++ ባደረገው ስብሰባ ላይ ነው። የላሞዳ የቀጥታ ልምዱ ለካፍካ ከሌሎች ዘገባዎች ባልተናነሰ መልኩ አድማጮችን ስቧል። ተመሳሳይ አስተሳሰብ ያላቸውን ሰዎች ለማግኘት ሁል ጊዜ የሚቻል እና አስፈላጊ የመሆኑ እውነታ ጥሩ ምሳሌ ይመስላል እና የሃይሎድ ++ አዘጋጆች ለዚህ ምቹ ሁኔታን ለመፍጠር መሞከራቸውን ይቀጥላሉ ።

ስለ ሂደቱ

ላሞዳ የራሱ የመገናኛ ማዕከል፣ የመላኪያ አገልግሎት (እና ብዙ አጋሮች)፣ የፎቶ ስቱዲዮ፣ ትልቅ መጋዘን ያለው እና ይህ ሁሉ በራሱ ሶፍትዌር የሚሰራ ትልቅ የኢ-ኮሜርስ መድረክ ነው። አንዳንድ ወይም ሁሉንም እነዚህን አገልግሎቶች ሊጠቀሙ የሚችሉ እና በምርታቸው ላይ የቅርብ ጊዜውን መረጃ ማወቅ የሚፈልጉ በደርዘን የሚቆጠሩ የመክፈያ ዘዴዎች፣ b2b አጋሮች አሉ። በተጨማሪም ላሞዳ ከሩሲያ ፌዴሬሽን በተጨማሪ በሶስት አገሮች ውስጥ ይሠራል, እና ሁሉም ነገር እዚያ ትንሽ የተለየ ነው. በአጠቃላይ, አዲስ ትዕዛዝ ለማዋቀር ከመቶ በላይ መንገዶች ሊኖሩ ይችላሉ, ይህም በራሱ መንገድ መከናወን አለበት. ይህ ሁሉ የሚሠራው አንዳንድ ጊዜ ግልጽ ባልሆኑ መንገዶች በሚገናኙ በደርዘን የሚቆጠሩ አገልግሎቶች ነው። ዋናው ኃላፊነት የሥርዓት ደረጃዎች የሆነበት ማዕከላዊ ሥርዓትም አለ። እሷን BOB ብለን እንጠራዋለን, ከእሷ ጋር እሰራለሁ.

የተመላሽ ገንዘብ መሣሪያ በክስተቶች ከሚመራ ኤፒአይ ጋር

በክስተቶች የሚመራ የሚለው ቃል ይልቁንስ የተጠለፈ ነው፣ ትንሽ ወደ ፊት ይህ ምን ማለት እንደሆነ በበለጠ ዝርዝር እንገልፃለን። በካፍ ውስጥ በክስተቶች ላይ የተመሰረተውን የኤፒአይ አካሄድ ለመሞከር በወሰንንበት አውድ እጀምራለሁ።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

በማንኛውም መደብር ውስጥ, ደንበኞች ከሚከፍሉባቸው ትዕዛዞች በተጨማሪ, ሱቁ ገንዘቡን እንዲመልስ የሚፈለግበት ጊዜ አለ, ምክንያቱም ምርቱ ከደንበኛው ጋር አይጣጣምም. ይህ በአንጻራዊነት አጭር ሂደት ነው: አስፈላጊ ከሆነ መረጃውን እናብራራለን እና ገንዘቡን እናስተላልፋለን.

ነገር ግን በህግ ለውጦች ምክንያት መመለሻው ይበልጥ የተወሳሰበ ሆነ እና ለእሱ የተለየ ማይክሮ አገልግሎት መተግበር ነበረብን።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

የእኛ ተነሳሽነት፡-

  1. ህግ FZ-54 - ባጭሩ ሕጉ ሾለ እያንዳንዱ የገንዘብ ግብይት ለግብር ቢሮ ሪፖርት ማድረግን ይጠይቃል፣ ተመላሽ ወይም ደረሰኝ ይሁን፣ በጥቂት ደቂቃዎች ውስጥ በትክክል አጭር SLA። እኛ እንደ ኢ-ኮሜርስ በጣም ብዙ ስራዎችን እንሰራለን። በቴክኒካዊ ፣ ይህ ማለት አዲስ ሃላፊነት (እና ስለዚህ አዲስ አገልግሎት) እና በሁሉም የተሳተፉ ስርዓቶች ውስጥ መሻሻሎች ማለት ነው።
  2. BOB መከፋፈል - የኩባንያው ውስጣዊ ፕሮጀክት BOBን ከዋና ዋና ያልሆኑ ኃላፊነቶች ለማስወገድ እና አጠቃላይ ውስብስብነቱን ለመቀነስ።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

ይህ ንድፍ ዋናውን የላሞዳ ስርዓት ያሳያል. አሁን ብዙዎቹ የበለጠ ናቸው እየጠበበ ባለው ሞኖሊት ዙሪያ ከ5-10 የማይክሮ አገልግሎት ሰጪዎች ስብስብ. እነሱ ቀስ በቀስ እያደጉ ናቸው ፣ ግን እነሱን ትንሽ ለማድረግ እየሞከርን ነው ፣ ምክንያቱም በመሃል ላይ የተመረጠውን ቁራጭ ማሰማራት አስፈሪ ነው - እንዲወድቅ መፍቀድ አይችሉም። ሁሉንም ልውውጦች (ቀስቶች) ለማስያዝ እና አንዳቸውም ላይገኙ እንደሚችሉ ቃል እንገባለን።

በBOB ውስጥ በጣም ብዙ ልውውጦችም አሉ፡ የክፍያ ሥርዓቶች፣ አቅርቦት፣ ማሳወቂያዎች፣ ወዘተ።

በቴክኒክ BOB ይህ ነው፡-

  • ~ 150k የኮድ መስመሮች + ~ 100k የሙከራ መስመሮች;
  • php7.2 + Zend 1 & Symfony ክፍሎች 3;
  • > 100 ኤ.ፒ.አይ.ዎች & ~ 50 የወጪ ውህደቶች;
  • 4 አገሮች በራሳቸው የንግድ ሎጂክ.

BOB ን መዘርጋት ውድ እና ህመም ነው, የኮዱ መጠን እና የሚፈታባቸው ተግባራት ማንም ሰው ሙሉ በሙሉ ወደ ጭንቅላታቸው ማስገባት አይችልም. በአጠቃላይ, ለማቃለል ብዙ ምክንያቶች አሉ.

የመመለሻ ሂደት

መጀመሪያ ላይ ሁለት ስርዓቶች በሂደቱ ውስጥ ይሳተፋሉ-BOB እና ክፍያ. አሁን ሁለት ተጨማሪ አሉ:

  • የፊስካላይዜሽን አገልግሎት , ይህም የፊስካላይዜሽን ችግሮችን እና ከውጭ አገልግሎቶች ጋር ግንኙነትን ይንከባከባል.
  • የተመላሽ ገንዘብ መሣሪያ፣ BOB እንዳይጨምር በቀላሉ አዳዲስ ልውውጦች የሚወጡበት።

አሁን ሂደቱ ይህን ይመስላል።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

  1. BOB የተመላሽ ገንዘብ ጥያቄ ይቀበላል።
  2. BOB ስለዚህ የተመላሽ ገንዘብ መሣሪያ ይናገራል።
  3. የተመላሽ ገንዘብ መሳሪያው ለክፍያ ይላል፡ "ገንዘቡን ተመላሽ ያድርጉ።"
  4. ክፍያ ገንዘቡን ይመልሳል.
  5. የተመላሽ ገንዘብ መሣሪያ እና BOB ሁኔታዎችን በራሳቸው መካከል ያመሳስላሉ፣ ምክንያቱም ለአሁን ሁለቱም ያስፈልጋቸዋል። BOB UI፣የሂሳብ አያያዝ ሪፖርቶች እና በአጠቃላይ ብዙ በቀላሉ ሊተላለፉ የማይችሉ መረጃዎች ስላሉት ሙሉ በሙሉ ወደ ገንዘብ መመለሻ መሳሪያ ለመቀየር ገና ዝግጁ አይደለንም። በሁለት ወንበሮች ላይ መቀመጥ አለብህ.
  6. የፊስካላይዜሽን ጥያቄ ይወጣል።

በውጤቱም, በካፍካ ላይ የተወሰነ የዝግጅት አውቶቡስ አደረግን - ክስተት-አውቶቡስ, ሁሉም ነገር የጀመረበት. ሆሬ፣ አሁን አንድ የውድቀት ነጥብ (ሽሙጥ) አለን።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

ጥቅሞቹ እና ጉዳቶች በጣም ግልፅ ናቸው። አውቶቡስ ሠርተናል፣ ይህ ማለት አሁን ሁሉም አገልግሎቶች በእሱ ላይ የተመኩ ናቸው ማለት ነው። ይህ ንድፉን ቀላል ያደርገዋል, ነገር ግን በስርዓቱ ውስጥ አንድ ነጠላ የውድቀት ነጥብ ያስተዋውቃል. ካፍካ ይወድቃል, ሂደቱ ይነሳል.

በክስተቶች የሚመራ ኤፒአይ ምንድነው?

ለዚህ ጥያቄ ጥሩ መልስ በማርቲን ፎለር ዘገባ (GOTO 2017) ውስጥ አለ። "በክስተት ላይ የተመሰረተ አርክቴክቸር ብዙ ትርጉሞች".

ባጭሩ ያደረግነው፡-

  1. ሁሉንም ያልተመሳሰሉ ልውውጦችን ተጠቅልሎታል። የክስተት ማከማቻ. እያንዳንዱ ፍላጎት ያለው ሸማች በአውታረ መረቡ ላይ ስላለው የሁኔታ ለውጥ ከማሳወቅ ይልቅ፣ የግዛት ለውጥ ክስተትን ወደ ማዕከላዊ ሱቅ እንጽፋለን፣ እና በአንድ ርዕስ ላይ ፍላጎት ያላቸው ሸማቾች ከዚያ የሚታየውን ሁሉ ያንብቡ።
  2. በዚህ ጉዳይ ላይ ክስተት (ክስተት) ማሳወቂያ ነው (ማሳወቂያዎች) የሆነ ነገር የሆነ ቦታ እንደተለወጠ። ለምሳሌ፣ የትዕዛዝ ሁኔታ ተለውጧል። ከሁኔታው ለውጥ ጋር አብረው ስለሚሄዱ አንዳንድ መረጃዎች የሚጨነቅ እና በማስታወቂያው ውስጥ የሌለ ሸማች ሁኔታቸውን ራሱ ማወቅ ይችላል።
  3. ከፍተኛው አማራጭ የተሟላ የክስተት ምንጭ ነው፣ ግዛት ማስተላለፍ, ዝግጅቱ ለሂደቱ አስፈላጊ የሆኑትን ሁሉንም መረጃዎች የያዘው: ከየት እና ወደ ምን አይነት ሁኔታ እንደቀየሩ, መረጃው በትክክል እንዴት እንደተቀየረ, ወዘተ ... ብቸኛው ጥያቄ ለማከማቸት አቅም ያለው ጥቅም እና መጠን ነው.

እንደ የመመለሻ መሣሪያ ማስጀመሪያ አካል፣ ሦስተኛውን አማራጭ ተጠቀምን። ይህ የክስተት አያያዝን ያቃልላል ምክንያቱም ምንም ዝርዝር መረጃ ማምጣት ስለሌለበት፣ በተጨማሪም እያንዳንዱ አዲስ ክስተት ከተጠቃሚዎች የሚቀርብ የፍተሻ ፍሰት የሚፈጥርበትን ሁኔታ ያስወግዳል።

የአገልግሎት ተመላሽ ገንዘብ መሣሪያ አልተጫነም።, ስለዚህ ካፍካ ከአስፈላጊነቱ የበለጠ ፈተና ነው. የተመላሽ አገልግሎቱ ከፍተኛ ጭነት ያለው ፕሮጀክት ከሆነ ንግዱ ደስተኛ ይሆናል ብዬ አላምንም።

Async ልውውጥ AS IS

ለተመሳሳይ ልውውጦች፣ የPHP ክፍል አብዛኛውን ጊዜ RabbitMQ ይጠቀማል። ለጥያቄው መረጃውን ሰብስበን ወረፋው ላይ አስቀመጥን እና የዚሁ አገልግሎት ሸማች ቆጥረን ልከን (አልላከውም)። ለኤፒአይ እራሱ ላሞዳ ስዋገርን በንቃት ይጠቀማል። ኤፒአይን እንቀርጻለን፣ በ Swagger ውስጥ እንገልፃለን፣ ደንበኛ እና የአገልጋይ ኮድ እንፈጥራለን። እንዲሁም በትንሹ የተራዘመ JSON RPC 2.0 እንጠቀማለን።

በአንዳንድ ቦታዎች esb-አውቶቡሶች ጥቅም ላይ ይውላሉ፣ አንድ ሰው በActiveMQ ይኖራል፣ ግን በአጠቃላይ፣ RabbitMQ - መደበኛ.

Async ልውውጥ TO BE

በክስተቶች-አውቶብስ በኩል ልውውጥን ሲነድፉ, ተመሳሳይነት ሊታወቅ ይችላል. በተመሳሳይ መልኩ የወደፊቱን የመረጃ ልውውጥ በክስተት መዋቅር መግለጫዎች እንገልፃለን። የያምል ፎርማት እኛ እራሳችን የኮድ ማመንጨት ሥራ መሥራት ነበረብን፣ ጄኔሬተሩ እንደ ገለጻው ዲቶኦዎችን ይፈጥራል እና ደንበኞች እና አገልጋዮች ከእነሱ ጋር እንዲሰሩ ያስተምራል። ትውልድ ወደ ሁለት ቋንቋዎች ይሄዳል- ጎላንግ እና ፒ.ፒ.ፒ. ይህ ቤተ-መጻሕፍት ወጥነት እንዲኖራቸው ያደርጋል። ጀነሬተሩ በጎላንግ የተፃፈ ሲሆን ለዚህም ስሙ ጎጊ የሚል ስም አግኝቷል።

በካፍካ ላይ የክስተት ምንጭ ማድረግ የተለመደ ነገር ነው። ከዋናው የድርጅት ስሪት ከካፍካ ኮንፍሉንት አንድ መፍትሄ አለ, አለ ናካዲየዛላንዶ ጎራ አካባቢ "ወንድሞቻችን" መፍትሄ። የእኛ በቫኒላ ካፍካ ለመጀመር ተነሳሽነት á‰ áˆ˜áŒ¨áˆ¨áˆť በሁሉም ቦታ እንደምንጠቀምበት እስከምንወስን ድረስ መፍትሄውን ነፃ መተው እና እራሳችንን ለማንቀሳቀስ እና ለማሻሻያ ቦታ እስክንተወው ድረስ ነው፡ ለኛ ድጋፍ እንፈልጋለን። JSON RPC 2.0ለሁለት ቋንቋዎች ጄነሬተሮች እና እስቲ ሌላ ምን እንይ.

በእንደዚህ አይነት ደስተኛ ጉዳይ ውስጥ እንኳን, ተመሳሳይ መፍትሄ ያመጣ ተመሳሳይ የዛላንዶ ንግድ ሲኖር, እኛ በትክክል ልንጠቀምበት አለመቻላችን በጣም የሚያስገርም ነው.

በሥነ-ሕንፃ ፣ በጅምር ላይ ፣ ንድፉ እንደሚከተለው ነው-ከካፍካ በቀጥታ እናነባለን ፣ ግን የምንጽፈው በክስተቶች-አውቶቡስ ብቻ ነው። በካፍካ ውስጥ ለማንበብ ብዙ የተዘጋጁ ነገሮች አሉ፡ ደላሎች፣ ሚዛን ሰጭዎች፣ እና ብዙ ወይም ያነሰ ለአግድም ልኬት ዝግጁ ነው፣ ላቆየው ፈለግሁ። መዝገቡ እኛ በአንድ ጌትዌይ aka Events-bus በኩል መጠቅለል ፈልገን ነበር፣ እና ለምን እንደሆነ እነሆ።

ክስተቶች - አውቶቡስ

ወይም የዝግጅት አውቶቡስ። ብዙ ጠቃሚ ሚናዎችን የሚወስድ ሀገር አልባ የ http ጌትዌይ ብቻ ነው፡

  • ማረጋገጫ በማምረት ላይ - ዝግጅቶቹ የእኛን መስፈርት የሚያሟሉ መሆናቸውን ያረጋግጡ።
  • ዋና ስርዓት በክስተቶች, ያም ማለት, ይህ በኩባንያው ውስጥ የትኞቹ ክንውኖች ትክክል እንደሆኑ ተደርገው የሚታዩትን ጥያቄዎች የሚመልስ ዋናው እና ብቸኛው ስርዓት ነው. ማረጋገጫ የውሂብ አይነቶች እና ግትር ይዘት ዝርዝር መግለጫዎች ብቻ ነው።
  • የሃሽ ተግባር ለ sharding - የካፍካ መልእክት አወቃቀር ቁልፍ-እሴት ነው እና ከ hash የሚሰላው ከየትኛው ቦታ ላይ ነው ።

እንዴት

በትልቅ ኩባንያ ውስጥ በተቀላጠፈ አሠራር እንሰራለን. ለምን አንድ ነገር መለወጥ? ይህ ሙከራ ነው።እና በርካታ ጥቅሞችን ለማግኘት እንጠብቃለን.

1: n+1 ልውውጦች (ከአንድ ወደ ብዙ)

በካፍካ አዲስ ሸማቾችን ከኤፒአይ ጋር ማገናኘት በጣም ቀላል ነው።

በአንድ ጊዜ በተለያዩ ስርዓቶች (እና በአንዳንድ አዳዲሶች) መዘመን ያለበት ማውጫ አለህ እንበል። ከዚህ ቀደም set-API ን የሚተገበር ጥቅል ፈጠርን እና የሸማቾች አድራሻ ለዋና ስርዓቱ ሪፖርት ተደርጓል። አሁን ዋና ስርዓቱ ለርዕሱ ማሻሻያዎችን ይልካል ፣ እና ፍላጎት ያለው ሁሉ ያነባል። አዲስ ስርዓት ታየ - በርዕሱ ላይ ፈርመዋል። አዎ፣ እንዲሁም ጥቅል፣ ግን ቀላል።

የመመለሻ መሣሪያን በተመለከተ፣ የBOB ቁራጭ ከሆነ፣ በካፍካ በኩል እንዲመሳሰሉ ለማድረግ ለእኛ ምቹ ነው። ክፍያ ገንዘቡ ተመልሷል ይላል: BOB, RT ስለዚህ ጉዳይ አውቆ, ሁኔታቸውን ቀይረዋል, የፊስካልላይዜሽን አገልግሎት ስለዚህ ጉዳይ አውቆ ቼክ አውጥቷል.

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

በትዕዛዙ/በመመለሱ ላይ ለደንበኛው ስለ ዜናው የሚያሳውቅ አንድ የማሳወቂያ አገልግሎት ለመስራት እቅድ አለን። አሁን ይህ ሃላፊነት በስርዓቶች ውስጥ ተሰራጭቷል. የማሳወቂያ አገልግሎቱን ከካፍካ ተገቢውን መረጃ እንዲይዝ እና ለእሱ ምላሽ እንዲሰጥ (እና እነዚህን ማሳወቂያዎች በሌሎች ስርዓቶች ውስጥ ለማሰናከል) ማስተማር በቂ ይሆንልናል። ምንም አዲስ ቀጥተኛ ልውውጦች አያስፈልጉም.

በመረጃ የተደገፈ

በስርዓቶች መካከል ያለው መረጃ ግልጽ ይሆናል - ምንም ያህል "ደም አፋሳሽ ኢንተርፕራይዝ" እንዳለህ እና የኋላ መዝገብህ የቱንም ያህል ወፍራም ቢሆን። ላሞዳ ከስርዓቶች መረጃን የሚሰበስብ እና ለንግድ እና ለአስተዋይ ስርዓቶች እንደገና ጥቅም ላይ ሊውል የሚችል ቅጽ የሚቀይር የውሂብ ትንታኔ ክፍል አለው። ካፍካ ብዙ መረጃዎችን በፍጥነት እንዲሰጧቸው እና ይህን የመረጃ ፍሰት ወቅታዊ ለማድረግ ያስችልዎታል.

የማባዛት መዝገብ

በ RabbitMQ ውስጥ እንዳሉት መልዕክቶች ከተነበቡ በኋላ አይጠፉም። ክስተቱ ለማስኬድ በቂ መረጃ ሲይዝ፣ በእቃው ላይ የቅርብ ጊዜ ለውጦች ታሪክ አለን ፣ እና ከተፈለገ እነዚህን ለውጦች የመተግበር ችሎታ።

የማባዛት ምዝግብ ማስታወሻው የማከማቻ ጊዜ በዚህ ርዕስ ላይ በተጻፈው ጥንካሬ ላይ የተመሰረተ ነው, ካፍካ ለማከማቻ ጊዜ እና የውሂብ መጠን በተለዋዋጭ ገደቦችን እንዲያዘጋጁ ይፈቅድልዎታል. ለጠንካራ ርእሶች, ሁሉም ሸማቾች መረጃውን ከመጥፋታቸው በፊት ለማንበብ ጊዜ ቢኖራቸው, ለአጭር ጊዜ የማይሰራ ሁኔታ ቢፈጠርም አስፈላጊ ነው. አብዛኛውን ጊዜ ለ ውሂብ ማከማቸት ይቻላል á‹¨á‰€áŠ–ች ክፍሎች, ይህም ለድጋፍ በጣም በቂ ነው.

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

በተጨማሪም ፣ ስለ ሰነዶቹ ትንሽ እንደገና መናገር ፣ ለካፍካ ለማያውቁት (ሥዕሉ እንዲሁ ከሰነድ ነው)

በ AMQP ውስጥ ወረፋዎች አሉ፡ ለተጠቃሚው ወረፋ መልዕክቶችን እንጽፋለን። እንደ አንድ ደንብ አንድ ስርዓት አንድ ወረፋ በተመሳሳይ የንግድ ሥራ አመክንዮ ያስኬዳል። ብዙ ስርዓቶችን ማሳወቅ ከፈለጉ አፕሊኬሽኑን ለብዙ ወረፋዎች እንዲጽፍ ማስተማር ወይም እነሱን በሚዘጋው የፋኖው ዘዴ ልውውጥ ማዘጋጀት ይችላሉ።

ካፍካ ተመሳሳይ አጭር መግለጫ አለው። አርእስትመልዕክቶችን የምትጽፍበት ነገር ግን ካነበብክ በኋላ አይጠፉም። በነባሪነት ከካፍካ ጋር ሲገናኙ ሁሉንም መልዕክቶች ይቀበላሉ እና ካቆሙበት ለማስቀመጥ አማራጭ አለዎት። ያ ማለት በቅደም ተከተል ያነባሉ ፣ መልእክቱን እንደተነበበ ምልክት ማድረግ አይችሉም ፣ ግን መታወቂያውን ያስቀምጡ ፣ ከዚያ በኋላ ማንበብዎን መቀጠል ይችላሉ። ያቆምክበት መታወቂያ ኦፍሴት (ኦፍሴት) ይባላል እና ስልቱ ፈፅሞ ማካካሻ ይባላል።

በዚህ መሠረት የተለያዩ አመክንዮዎች ሊተገበሩ ይችላሉ. ለምሳሌ, ለተለያዩ ሀገሮች በ 4 አጋጣሚዎች BOB አለን - ላሞዳ በሩሲያ, ካዛክስታን, ዩክሬን, ቤላሩስ ውስጥ ነው. ለየብቻ ስለሚሰማሩ የራሳቸው አወቃቀሮች እና የራሳቸው የንግድ ሎጂክ በትንሹ አሏቸው። የትኛውን ሀገር እንደሚያመለክት በመልዕክቱ እንገልፃለን። በእያንዳንዱ ሀገር ውስጥ ያለው እያንዳንዱ የBOB ሸማች ከተለየ ቡድንአይድ ጋር ያነባል፣ እና መልእክቱ በእሱ ላይ የማይተገበር ከሆነ፣ ይዘለላሉ፣ ማለትም። ወዲያውኑ ማካካሻ +1 ያድርጉ። ተመሳሳይ ርዕስ በክፍያ አገልግሎታችን ከተነበበ, ይህንን በተለየ ቡድን ያደርገዋል, እና ስለዚህ ማካካሻዎች አይገናኙም.

የክስተት መስፈርቶች፡-

  • የውሂብ ሙሉነት. ክስተቱ እንዲሰራ በቂ መረጃ እንዲኖረው እፈልጋለሁ።

  • ታማኝነት። ዝግጅቱ ወጥነት ያለው እና ሊቋቋመው የሚችል መሆኑን ቼክ ወደ Events-አውቶብስ ውክልና እንሰጣለን።
  • ትዕዛዙ አስፈላጊ ነው. በተመለሰበት ሁኔታ ከታሪክ ጋር ለመስራት እንገደዳለን። በማሳወቂያዎች ፣ ትዕዛዙ አስፈላጊ አይደለም ፣ ተመሳሳይ ማሳወቂያዎች ከሆኑ ፣ የትኛውም ትዕዛዝ መጀመሪያ ቢመጣም ኢሜይሉ አንድ አይነት ይሆናል። ተመላሽ በሚደረግበት ጊዜ, ግልጽ የሆነ ሂደት አለ, ትዕዛዙን ከቀየሩ, ልዩ ሁኔታዎች ይነሳሉ, ተመላሽ ገንዘቡ አይፈጠርም ወይም አይሠራም - ወደ ሌላ ደረጃ እንገባለን.
  • ወጥነት. ማከማቻ አለን እና አሁን ከኤፒአይ ይልቅ ክስተቶችን እንፈጥራለን። ሾለ አዳዲስ ክስተቶች እና ለውጦች ወደ አገልግሎታችን በፍጥነት እና በርካሽ የምንልክበት መንገድ እንፈልጋለን። ይህ በተለየ የጂት ማከማቻ እና በኮድ ጀነሬተሮች ውስጥ በጋራ ዝርዝር መግለጫ ሊገኝ ይችላል። ስለዚህ, በተለያዩ አገልግሎቶች ውስጥ ያሉ ደንበኞች እና አገልጋዮች ከእኛ ጋር የተቀናጁ ናቸው.

ካፍካ በላሞዳ

ሶስት የካፍካ መጫኛዎች አሉን:

  1. ምዝግብ ማስታወሻዎች;
  2. R&D;
  3. ክስተቶች-አውቶቡስ.

ዛሬ የምንናገረው ስለ የመጨረሻው ነጥብ ብቻ ነው. በክስተቶች - አውቶቡስ ውስጥ ፣ እኛ በጣም ትልቅ ጭነት የለንም - 3 ደላላ (ሰርቨሮች) እና 27 አርእስቶች ብቻ። እንደ አንድ ደንብ አንድ ርዕስ አንድ ሂደት ነው. ግን ይህ ስውር ነጥብ ነው, እና አሁን እንነካዋለን.

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

ከላይ ያለው የ rps ገበታ ነው. የተመላሽ ገንዘብ ሂደት በቱርኩይስ መስመር (አዎ፣ በ x-ዘንግ ላይ ያለው) ምልክት ተደርጎበታል፣ እና ሮዝ የይዘት ማዘመን ሂደት ነው።

የላሞዳ ካታሎግ በሚሊዮን የሚቆጠሩ ምርቶችን ይዟል፣ እና ውሂቡ በየጊዜው ይዘምናል። አንዳንድ ስብስቦች ከፋሽን ይወጣሉ, አዳዲሶች በቦታቸው ይለቀቃሉ, አዳዲስ ሞዴሎች በካታሎግ ውስጥ በየጊዜው ይታያሉ. ነገ ደንበኞቻችን ምን እንደሚፈልጉ ለመተንበይ እንሞክራለን, ስለዚህ በየጊዜው አዳዲስ ነገሮችን እንገዛለን, ፎቶግራፎችን አንስተን ማሳያውን እናዘምነዋለን.

ሮዝ ጫፎች የምርት ዝማኔዎች ናቸው፣ ማለትም የምርት ለውጦች። ወንዶቹ ፎቶግራፎችን ሲያነሱ, ፎቶግራፎችን እንዳነሱ እና ከዚያም እንደገና ማየት ይቻላል! - የክስተቶች ጥቅል ጭኗል።

የላሞዳ ዝግጅቶች ጉዳዮችን ይጠቀማሉ

ለሚከተሉት ስራዎች የተሰራውን አርክቴክቸር እንጠቀማለን፡-

  • የሁኔታ ክትትልን ተመለስከሁሉም የተሳተፉ ስርዓቶች ለድርጊት ጥሪ እና የሁኔታ ክትትል። ክፍያ፣ ሁኔታዎች፣ ፊስካላይዜሽን፣ ማሳወቂያዎች። እዚህ አቀራረቡን ፈትነን, መሳሪያዎችን ሠራን, ሁሉንም ስህተቶች ሰብስበናል, ሰነዶቹን ጻፍን እና እንዴት እንደሚጠቀሙበት ለሼል ባልደረቦቻችን ነግረናል.
  • የምርት ካርዶች ዝማኔ፡- ውቅረት, ሜታ-ዳታ, ባህሪያት. አንድ ስርዓት ያነባል (የትኞቹ ማሳያዎች) እና ብዙ ይጽፋሉ።
  • ኢሜል ፣ ግፋ እና ኤስኤምኤስ: ትዕዛዙ ተሰብስቦ ነበር, ትዕዛዙ ደረሰ, መመለሻው ተቀባይነት አግኝቷል, ወዘተ, ብዙዎቹም አሉ.
  • ክምችት፣ መጋዘን እድሳት - የስሞች መጠናዊ ማሻሻያ ፣ ቁጥሮች ብቻ-በመጋዘን ደረሰኝ ፣ መመለስ። ከሸቀጦች ቦታ ማስያዝ ጋር የተያያዙ ሁሉም ስርዓቶች በጣም ወቅታዊ በሆነ መረጃ እንዲሰሩ አስፈላጊ ነው. በአሁኑ ጊዜ, የሲንክ ማሻሻያ ስርዓቱ በጣም የተወሳሰበ ነው, ካፍካ ቀላል ያደርገዋል.
  • የመረጃ ትንተና (R&D ክፍል)፣ ML መሣሪያዎች፣ ትንታኔዎች፣ ስታቲስቲክስ። መረጃ ግልጽ እንዲሆን እንፈልጋለን - ካፍካ ለዚህ ተስማሚ ነው.

አሁን በስድስት ወራት ውስጥ ስለተከሰቱ እብጠቶች እና አስደሳች ግኝቶች የበለጠ አስደሳች ክፍል።

የንድፍ ጉዳዮች

አዲስ ነገር ለመስራት እንፈልጋለን እንበል - ለምሳሌ አጠቃላይ የማድረስ ሂደቱን ወደ ካፍካ ያስተላልፉ። አሁን የሂደቱ አካል በBOB ውስጥ በትእዛዝ ሂደት ውስጥ ተተግብሯል። ትዕዛዙን ወደ ማቅረቢያ አገልግሎት ከማስተላለፉ ጀርባ, ወደ መካከለኛ መጋዘን መሄድ እና የመሳሰሉት, የሁኔታ ሞዴል አለ. አንድ ሙሉ ሞኖሊት አለ፣ ሁለትም ቢሆን፣ እና ለማድረስ የተሰጡ ብዙ APIs። ስለ ማድረስ ብዙ ያውቃሉ።

እነዚህ ተመሳሳይ ቦታዎች ይመስላሉ, ነገር ግን ሁኔታዎች በBOB ውስጥ ለትዕዛዝ ሂደት እና ለአቅርቦት ስርዓት የተለያዩ ናቸው. ለምሳሌ፣ አንዳንድ የመልእክት መላኪያ አገልግሎቶች መካከለኛ ሁኔታዎችን አይልኩም፣ ነገር ግን የመጨረሻዎቹ ብቻ፡ “የደረሰው” ወይም “የጠፋ”። ሌሎች ደግሞ በተቃራኒው ስለ እቃዎች እንቅስቃሴ በዝርዝር ሪፖርት ያደርጋሉ. ሁሉም ሰው የራሱ የማረጋገጫ ደንቦች አሉት: ለአንድ ሰው, ኢሜይሉ ትክክለኛ ነው, ይህም ማለት ይከናወናል; ለሌሎች, ልክ አይደለም, ነገር ግን ትዕዛዙ አሁንም ይከናወናል, ምክንያቱም ለግንኙነት ስልክ አለ, እና አንድ ሰው እንዲህ ዓይነቱ ትእዛዝ በጭራሽ አይካሄድም ይላል.

የውሂብ ዥረት

በካፍካ ጉዳይ ላይ የመረጃ ፍሰትን የማደራጀት ጥያቄ ይነሳል. ይህ ተግባር በበርካታ ነጥቦች ላይ ከስልት ምርጫ ጋር የተገናኘ ነው, ሁሉንም እንይ.

በአንድ ርዕስ ውስጥ ወይንስ በተለየ?

የክስተት ዝርዝር መግለጫ አለን። በBOB ውስጥ እንደዚህ ያለ እና እንደዚህ ያለ ትእዛዝ መቅረብ እንዳለበት እንጽፋለን እና እንጠቁማለን-የትእዛዝ ቁጥሩ ፣ ቅንብሩ ፣ አንዳንድ SKUs እና ባር ኮዶች ፣ ወዘተ. እቃዎቹ ወደ መጋዘኑ ሲደርሱ, ማጓጓዣው ደረጃዎችን, የጊዜ ማህተሞችን እና አስፈላጊ የሆኑትን ሁሉ መቀበል ይችላል. ግን ከዚያ በBOB ውስጥ በዚህ ውሂብ ላይ ማሻሻያዎችን መቀበል እንፈልጋለን። ከአቅርቦት መረጃ የማግኘት ተቃራኒ ሂደት አለን። ተመሳሳይ ክስተት ነው? ወይስ የተለየ ርዕስ የሚገባው የተለየ ልውውጥ ነው?

በጣም አይቀርም ፣ እነሱ በጣም ተመሳሳይ ይሆናሉ ፣ እና አንድ ርዕስ ለመስራት መሞከሩ ምክንያታዊ አይደለም ፣ ምክንያቱም የተለየ ርዕስ ማለት የተለየ ሸማቾች ፣ የተለያዩ ውቅሮች ፣ የዚህ ሁሉ የተለየ ትውልድ ማለት ነው ። ግን እውነታ አይደለም.

አዲስ መስክ ወይስ አዲስ ክስተት?

ግን ተመሳሳይ ክስተቶችን ከተጠቀሙ, ሌላ ችግር ይፈጠራል. ለምሳሌ, ሁሉም የመላኪያ ስርዓቶች BOB ሊያመነጭ የሚችል DTO ማመንጨት አይችሉም. መታወቂያ እንልካቸዋለን, ነገር ግን አያድኗቸውም, ምክንያቱም አያስፈልጋቸውም, እና የክስተት-አውቶቡስ ሂደትን ከመጀመር አንፃር, ይህ መስክ ያስፈልጋል.

ይህ መስክ የሚፈለግበትን የክስተት-አውቶብስ ህግ ካስተዋወቅን በBOB ወይም በጅምር ክስተት ተቆጣጣሪ ውስጥ ተጨማሪ የማረጋገጫ ህጎችን ለማዘጋጀት እንገደዳለን። ማረጋገጫ በአገልግሎቱ ውስጥ መሰራጨት ይጀምራል - ይህ በጣም ምቹ አይደለም.

ሌላው ችግር የእድገት መጨመር ፈተና ነው. በዝግጅቱ ላይ አንድ ነገር መጨመር እንዳለብን ተነግሮናል, እና ምናልባት, በጥንቃቄ ካሰብን, የተለየ ክስተት መሆን ነበረበት. ነገር ግን በእኛ እቅድ ውስጥ, የተለየ ክስተት የተለየ ርዕስ ነው. የተለየ ርዕስ ከላይ የገለጽኩት አጠቃላይ ሂደት ነው። ገንቢው በቀላሉ አንድ ተጨማሪ መስክ ወደ JSON schema ለማከል እና ለማደስ ይሞክራል።

ተመላሽ ገንዘብን በተመለከተ በግማሽ ዓመት ውስጥ ወደ ዝግጅቱ ደርሰናል. ተመላሽ ገንዘብ ማዘመን የሚባል አንድ ሜታ ክስተት ነበረን፣ ይህ ዝማኔ በእውነቱ ምን እንደሆነ የሚገልጽ አይነት መስክ ነበረው። ከዚህ በመነሳት ይህን ክስተት በዚህ አይነት እንዴት ማረጋገጥ እንደሚቻል የሚናገሩ "ቆንጆ" መቀየሪያዎች ነበሩን.

የክስተት ሥሪት

በካፍካ ውስጥ መልዕክቶችን ለማረጋገጥ፣ መጠቀም ትችላለህ Avro, ነገር ግን ወዲያውኑ በላዩ ላይ መተኛት እና Confluent መጠቀም አስፈላጊ ነበር. በእኛ ሁኔታ, ከስሪት ጋር ጥንቃቄ ማድረግ አለብን. ከማባዛት ምዝግብ ማስታወሻው ላይ መልዕክቶችን እንደገና ማንበብ ሁልጊዜ አይቻልም, ምክንያቱም ሞዴሉ "ግራ" አለው. በመሠረቱ, ሞዴሉ ወደ ኋላ ተኳሃኝ እንዲሆን ስሪቶችን መገንባት ይወጣል-ለምሳሌ, መስክ ለጊዜው አማራጭ እንዲሆን ያድርጉ. ልዩነቶቹ በጣም ጠንካራ ከሆኑ በአዲስ ርዕስ ውስጥ መጻፍ እንጀምራለን, እና ደንበኞቹ አሮጌውን አንብበው ሲጨርሱ ይተክላሉ.

ክፍልፋዮች የትእዛዝ ዋስትና ያንብቡ

በካፍካ ውስጥ ያሉ ርዕሰ ጉዳዮች በክፍሎች የተከፋፈሉ ናቸው. አካላትን እና ልውውጦችን በምንቀርፅበት ጊዜ ይህ በጣም አስፈላጊ አይደለም ፣ ግን እንዴት እንደሚጠቀሙበት እና እንደሚመዘኑ ስንወስን አስፈላጊ ነው።

በተለመደው ሁኔታ, ለካፍካ አንድ ርዕስ ይጽፋሉ. በነባሪ አንድ ክፍልፋይ ጥቅም ላይ ይውላል፣ እና ሁሉም የዚህ ርዕስ መልዕክቶች በእሱ ውስጥ ይወድቃሉ። እና ሸማቹ እነዚህን መልዕክቶች በቅደም ተከተል ያነባቸዋል። እንበል፣ አሁን፣ መልእክቶች በሁለት የተለያዩ ሸማቾች እንዲነበቡ ስርዓቱን ማስፋፋት አለብን። እርስዎ ለምሳሌ ኤስኤምኤስ ከላኩ ለካፍካ ተጨማሪ ክፍልፍል እንዲሰራ መንገር ይችላሉ እና ካፍካ መልዕክቶችን በሁለት ክፍሎች መበስበስ ይጀምራል - ግማሹ እዚያ ፣ ግማሹ እዚያ።

ካፍካ እንዴት ይጋራቸዋል? እያንዳንዱ መልእክት አካል (JSON የምናከማችበት) እና ቁልፍ አለው። የሃሽ ተግባርን ከዚህ ቁልፍ ጋር ማያያዝ ይችላሉ፣ ይህም መልዕክቱ በየትኛው ክፍል ውስጥ እንደሚወድቅ ይወስናል።

በተመላሽ ገንዘባችን ውስጥ, ይህ አስፈላጊ ነው, ሁለት ክፍልፋዮችን ከወሰድን, ከዚያም ትይዩ ሸማቾች ከመጀመሪያው በፊት ሁለተኛውን ክስተት ለማስኬድ እድሉ አለ እና ችግር ይኖራል. የሃሽ ተግባር አንድ አይነት ቁልፍ ያላቸው መልዕክቶች በአንድ ክፍልፍል ውስጥ መጨረሳቸውን ያረጋግጣል።

ክስተቶች እና ትዕዛዞች

ይህ ሌላ የገባንበት ጉዳይ ነው። ክስተት የክስተት አይነት ነው፡ የሆነ ቦታ የሆነ ነገር ተከሰተ እንላለን (የሆነ ነገር_ተከሰተ) ለምሳሌ አንድ እቃ ተሰርዟል ወይም ተመላሽ ተደረገ። አንድ ሰው እነዚህን ክስተቶች የሚያዳምጥ ከሆነ፣ በ"ዕቃው ተሰርዟል" የተመላሽ ገንዘብ ህጋዊ አካል ይፈጠራል፣ እና "ተመላሽ ገንዘብ ተከስቷል" በቅንብሮች ውስጥ የሆነ ቦታ ይመዘገባል።

ነገር ግን አብዛኛውን ጊዜ ዝግጅቶችን ስትነድፍ በከንቱ መፃፍ አትፈልግም - የሆነ ሰው እንደሚያነብላቸው እየተወራረድክ ነው። የሆነ ነገር_ተከሰተ (ዕቃው_ተሰርዟል፣ ገንዘቡ ተመላሽ_ተመላሽ) ላለመፃፍ ፈተናው ከፍተኛ ነው፣ ነገር ግን የሆነ ነገር_ መደረግ አለበት። ለምሳሌ፣ እቃው ለመመለስ ዝግጁ ነው።

በአንድ በኩል, ክስተቱ እንዴት ጥቅም ላይ እንደሚውል ይጠቁማል. በሌላ በኩል፣ ልክ እንደ መደበኛ የክስተት ስም በጣም ያነሰ ነው። በተጨማሪም፣ ከዚህ ከድርጊት ትእዛዝ ብዙም የራቀ አይደለም። ነገር ግን አንድ ሰው ይህን ክስተት ለማንበብ ምንም ዋስትና የለዎትም; እና ከተነበቡ, ከዚያም በተሳካ ሁኔታ ያንብቡ; እና በተሳካ ሁኔታ ካነበበ, ከዚያም አንድ ነገር አድርጓል, እና ይህ የሆነ ነገር ስኬታማ ነበር. አንድ ክስተት የሆነ ነገር ባደረገ ቁጥር ግብረመልስ አስፈላጊ ይሆናል፣ እና ችግሩ ያ ነው።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

በ RabbitMQ ውስጥ ባልተመሳሰለ ልውውጥ ፣ መልእክት ሲያነቡ ፣ ወደ http ይሂዱ ፣ ምላሽ አለዎት - ቢያንስ መልእክቱ ተቀባይነት አግኝቷል። ለካፍካ ስትጽፍ ለካፍ የጻፍከው መልእክት አለ ነገር ግን እንዴት እንደተሰራ ምንም አታውቅም።

ስለዚህ, በእኛ ሁኔታ, እኛ ምላሽ ክስተት በማስተዋወቅ እና ብዙ ክስተቶች በረረ ከሆነ, እንዲህ እና እንደዚህ ያለ ጊዜ በኋላ, ምላሽ ክስተቶች ተመሳሳይ ቁጥር እንዲመጣ ክትትል ማዘጋጀት ነበር. ካልሆነ ግን የሆነ ችግር የተፈጠረ ይመስላል። ለምሳሌ፣ የ"ዕቃውን_ለመመለስ_ዝግጁ" ክስተቱን ከላከን፣ ተመላሽ ገንዘቡ እንደሚፈጠር እንጠብቃለን፣ ደንበኛው ገንዘቡን ይመለሳል፣ እና "ገንዘብ_የተመላሽ" ክስተቱ ወደ እኛ ይበርራል። ግን ይህ ትክክል አይደለም, ስለዚህ ክትትል ያስፈልጋል.

Nuances

በትክክል ግልጽ የሆነ ችግር አለ፡ ከአንድ ርዕስ ላይ በተከታታይ ካነበብክ እና የሆነ አይነት መጥፎ መልእክት ካለህ ሸማቹ ይሰናከላል እና ከዚህ በላይ አትሄድም። ትፈልጋለህ ሁሉንም ሸማቾች ማቆምማንበብ ለመቀጠል ተጨማሪ ማካካሻ ያድርጉ።

ስለእሱ አውቀናል፣ ተወራረድንበት፣ እና ግን የሆነው ሆኖ ሆነ። እና ይህ የሆነው ክስተቱ ከክስተቶች-አውቶብስ እይታ አንጻር ትክክለኛ ስለነበረ ዝግጅቱ ከመተግበሪያው አረጋጋጭ እይታ አንጻር ትክክለኛ ነበር ነገር ግን ከ PostgreSQL እይታ አንጻር ትክክል አልነበረም ምክንያቱም በእኛ MySQL ስርዓት ውስጥ ከ UNsigned INT ጋር፣ እና አዲስ በተጻፈው ስርዓት PostgreSQL ከ INT ጋር ብቻ ነበር። እሱ ትንሽ አነስ ያለ መጠን አለው፣ እና መታወቂያው አልተስማማም። ሲምፎኒ በተለየ ሁኔታ ሞተ። እርግጥ ነው፣ ልዩነቱን ያዝነው፣ ምክንያቱም በላዩ ላይ ተጭነን ነበር፣ እናም ይህንን ማካካሻ ልንፈፅም ነበር፣ ነገር ግን ከዚያ በፊት መልእክቱ በተሳካ ሁኔታ ስለተከናወነ የችግሩን ቆጣሪ ለመጨመር እንፈልጋለን። በዚህ ፕሮጀክት ውስጥ ያሉት ቆጣሪዎች እንዲሁ በመሠረቱ ውስጥ ናቸው ፣ እና ሲምፎኒ ቀድሞውኑ ከመሠረቱ ጋር ያለውን ግንኙነት ዘግቷል ፣ እና ሁለተኛው ልዩነት የማካካሻ ዕድል ሳያገኙ አጠቃላይ ሂደቱን ገድሏል።

ለተወሰነ ጊዜ አገልግሎቱ ተቀምጧል - እንደ እድል ሆኖ, በካፍካ ይህ በጣም አስፈሪ አይደለም, ምክንያቱም መልእክቶቹ ይቀራሉ. ስራው ሲታደስ, ሊነበቡ ይችላሉ. ምቹ ነው።

ካፍካ በመሳሪያነት የዘፈቀደ ማካካሻ የማዘጋጀት ችሎታ አለው። ነገር ግን ይህንን ለማድረግ ሁሉንም ሸማቾች ማቆም አለብዎት - በእኛ ሁኔታ, ምንም ሸማቾች የማይኖሩበት የተለየ መልቀቂያ ያዘጋጁ, እንደገና ማሰማራት. ከዚያም ካፍካ ማካካሻውን በመሳሪያነት መቀየር ይችላል, እና መልእክቱ ያልፋል.

ሌላ ልዩነት - የማባዛት መዝገብ vs rdkafka.so - ከፕሮጀክታችን ልዩ ነገሮች ጋር የተያያዘ. ፒኤችፒ አለን ፣ እና በ PHP ውስጥ ፣ እንደ አንድ ደንብ ፣ ሁሉም ቤተ-መጻሕፍት ከካፍካ ጋር በrdkafka.so ማከማቻ በኩል ይገናኛሉ ፣ እና ከዚያ አንድ ዓይነት መጠቅለያ አለ። ምናልባት እነዚህ ግላዊ ችግሮቻችን ናቸው፣ ነገር ግን ቀደም ሲል የተነበበውን ቁራጭ እንደገና ማንበብ ቀላል እንዳልሆነ ታወቀ። በአጠቃላይ የሶፍትዌር ችግሮች ነበሩ.

በሰነዱ ውስጥ በትክክል ወደ ክፍልፋዮች የመሥራት ልዩ ሁኔታዎችን ስንመለስ ሸማቾች >> ርዕስ ክፍልፋዮች. እኔ ግን ከምፈልገው በጣም ዘግይቼ ነው የተረዳሁት። መመዘን ከፈለጉ እና ሁለት ሸማቾች ካሉዎት ቢያንስ ሁለት ክፍልፋዮች ያስፈልግዎታል። ማለትም 20 መልእክቶች የተጠራቀሙበት አንድ ክፍልፋዮች ከነበራችሁ እና አዲስ ካደረጋችሁት የመልእክቶቹ ብዛት በቅርቡ እኩል አይሆንም። ስለዚህ, ሁለት ትይዩ ሸማቾች እንዲኖርዎት, ክፍልፋዮችን መቋቋም ያስፈልግዎታል.

ክትትል

እኛ የምንከታተልበት መንገድ አሁን ባለው አካሄድ ላይ ምን ችግሮች እንዳሉ የበለጠ ግልጽ ያደርገዋል ብዬ አስባለሁ።

ለምሳሌ፣ በመረጃ ቋቱ ውስጥ ስንት ምርቶች በቅርቡ ሁኔታቸውን እንደቀየሩ ​​እንቆጥራለን፣ እና በዚህ መሰረት፣ በእነዚህ ለውጦች ላይ ክስተቶች መከሰት ነበረባቸው፣ እና ይህን ቁጥር ወደ የክትትል ስርዓታችን እንልካለን። ከዚያም ከካፍካ ሁለተኛውን ቁጥር እናገኛለን, ምን ያህል ክስተቶች በትክክል እንደተመዘገቡ. በግልጽ ለማየት እንደሚቻለው, በእነዚህ ሁለት ቁጥሮች መካከል ያለው ልዩነት ሁልጊዜ ዜሮ መሆን አለበት.

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

በተጨማሪም፣ አምራቹ እንዴት እየሰራ እንደሆነ፣ የክስተት-አውቶብስ መልእክት እንደደረሰው እና ሸማቹ እንዴት እየሰራ እንደሆነ መከታተል አለቦት። ለምሳሌ፣ ከታች ባሉት ገበታዎች ውስጥ፣ የተመላሽ ገንዘብ መሣሪያ በጥሩ ሁኔታ እየሰራ ነው፣ ነገር ግን BOB በግልጽ አንዳንድ ችግሮች አሉት (ሰማያዊ ጫፎች)።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

የሸማቾች-ቡድን መዘግየትን አስቀድሜ ጠቅሻለሁ። በግምት፣ ይህ ያልተነበቡ መልዕክቶች ብዛት ነው። በአጠቃላይ ደንበኞቻችን በፍጥነት ይሰራሉ, ስለዚህ ብዙውን ጊዜ መዘግየት 0 ነው, ነገር ግን አንዳንድ ጊዜ የአጭር ጊዜ ከፍተኛ ሊሆን ይችላል. ካፍካ ይህንን ከሳጥኑ ውስጥ ማድረግ ይችላል, ነገር ግን የተወሰነ ክፍተት ማዘጋጀት ያስፈልግዎታል.

ፕሮጀክት አለ። በጉድጓዴ, ይህም በካፍካ ላይ ተጨማሪ መረጃ ይሰጥዎታል. ይህ ቡድን እንዳለው በቀላሉ ሁኔታውን በተጠቃሚ-ቡድን ኤፒአይ በኩል ይሰጣል። ከOK እና አልተሳካም በተጨማሪ፣ እዚያ ማስጠንቀቂያ አለ፣ እና ሸማቾችዎ የምርት ፍጥነትን መቀጠል እንደማይችሉ ማወቅ ይችላሉ - የተፃፈውን ለማንበብ ጊዜ የላቸውም። ስርዓቱ በጣም ብልህ እና ለመጠቀም ቀላል ነው።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

የኤፒአይ ምላሽ ይህን ይመስላል። እዚህ ቦብ-ላይቭ-ፊፋ ቡድን፣ partition refund.update.v1፣ እሺ ሁኔታ፣ lag 0 የመጨረሻው የመጨረሻ ማካካሻ ነው።

ተመላሽ ገንዘብ አገልግሎቱን በካፍካ ላይ ባልተመሳሰለ ኤፒአይ የማሳደግ ልምድ

ክትትል የዘመነ_በ SLA (ተጣብቆ) አስቀድሜ ጠቅሻለሁ። ለምሳሌ፣ ንጥሉ ለመመለስ ዝግጁ ወደ ሆነበት ሁኔታ ተንቀሳቅሷል። ክሮን አዘጋጅተናል፣ ይህ ነገር በ5 ደቂቃ ውስጥ ተመላሽ ካልተደረገ (በክፍያ ስርዓቶች ገንዘባችንን በፍጥነት እንመልሳለን)፣ በእርግጠኝነት የሆነ ችግር ተፈጥሯል፣ እና ይህ በእርግጠኝነት የድጋፍ ጉዳይ ነው። ስለዚህ, በቀላሉ እንደዚህ ያሉትን ነገሮች የሚያነብ ክሮን እንወስዳለን, እና ከ 0 በላይ ከሆኑ, ከዚያ ማንቂያ ይልካል.

ለማጠቃለል፣ ሁነቶችን መጠቀም መቼ ጠቃሚ ነው።:

  • መረጃ በበርካታ ስርዓቶች ያስፈልጋል;
  • የማቀነባበሪያው ውጤት አስፈላጊ አይደለም;
  • ትንሽ ወይም ምንም ክስተቶች.

ጽሑፉ በጣም የተለየ ርዕስ ያለው ይመስላል - በካፍካ ላይ ያልተመሳሰለ ኤፒአይ ፣ ግን ከሱ ጋር በተያያዘ ፣ ወዲያውኑ ብዙ ነገሮችን መምከር እፈልጋለሁ።
መጀመሪያ ፣ ቀጥሎ HighLoad ++ ግን እስከ ኖቬምበር ድረስ መጠበቅ አለብዎት, በኤፕሪል ውስጥ የሴንት ፒተርስበርግ እትም ይኖራል, እና በሰኔ ወር በኖቮሲቢሪስክ ውስጥ ስለ ከፍተኛ ጭነት እንነጋገራለን.
በሁለተኛ ደረጃ የሪፖርቱ ደራሲ ሰርጌይ ዛካ የአዲሱ ጉባኤያችን የእውቀት አስተዳደር የፕሮግራም ኮሚቴ አባል ነው። እውቀትConf. ኮንፈረንሱ አንድ ቀን ነው፣ ኤፕሪል 26 ይካሄዳል፣ ግን ፕሮግራሙ በጣም ሀብታም ነው።
እና በግንቦት ውስጥ ይሆናል ፒኤችፒ ሩሲያ и RIT++ (በDevOpsConf እንደ አንድ አካል) - እዚያም ርዕስዎን ማቅረብ ፣ ሾለ ልምድዎ ማውራት እና ሾለ ተጨናነቁ እብጠቶችዎ ማጉረምረም ይችላሉ።

ምንጭ: hab.com

አስተያየት ያክሉ