Qrator ማጣሪያ የአውታረ መረብ ውቅር አስተዳደር ሥርዓት

Qrator ማጣሪያ የአውታረ መረብ ውቅር አስተዳደር ሥርዓት

TL; DRየእኛ የውስጥ አውታረ መረብ ውቅር አስተዳደር ስርዓት የደንበኛ-አገልጋይ አርክቴክቸር መግለጫ QControl. በሁለት-ንብርብር የትራንስፖርት ፕሮቶኮል ላይ የተመሰረተ ነው ይህም በ gzip የታሸጉ መልእክቶች በማጠቃለያ ነጥቦች መካከል ሳይቀንስ ይሰራል። የተከፋፈሉ ራውተሮች እና የመጨረሻ ነጥቦች የውቅረት ዝመናዎችን ይቀበላሉ ፣ እና ፕሮቶኮሉ ራሱ የአካባቢያዊ መካከለኛ ማስተላለፊያዎችን ለመጫን ይፈቅዳል። ስርዓቱ በመርህ ላይ የተገነባ ነው ልዩነት ምትኬ ("በቅርብ ጊዜ የተረጋጋ"፣ ከዚህ በታች ተብራርቷል) እና የማዋቀሪያ ፋይሎችን ለመስራት የJMESpath መጠይቅ ቋንቋን ከጂንጃ ቴምፕሊንግ ሞተር ጋር ይጠቀማል።

Qrator Labs በአለም አቀፍ ደረጃ የሚሰራጭ የጥቃት ቅነሳ አውታረ መረብን ይሰራል። የኛ አውታረመረብ የሚሰራው በማንኛዉም ካሴት መርህ ሲሆን ንኡስ ኔትወርኮች በBGP በኩል ይታወቃሉ። በተለያዩ የምድር ክልሎች በአካል የሚገኝ የBGP anycast አውታረ መረብ እንደመሆናችን መጠን ህገ-ወጥ ትራፊክን ወደ በይነመረብ አስኳል - የደረጃ-1 ኦፕሬተሮችን ማካሄድ እና ማጣራት እንችላለን።

በሌላ በኩል በጂኦግራፊያዊ የተከፋፈለ አውታር መሆን ቀላል አይደለም. የደህንነት አገልግሎት አቅራቢው የሁሉም የአውታረ መረብ ኖዶች ወጥነት ያለው ውቅር እንዲኖራቸው፣ በጊዜው በማዘመን በአውታረ መረብ ቦታዎች መካከል ግንኙነት ማድረግ ወሳኝ ነው። ስለዚህ፣ በተቻለ መጠን ከፍተኛውን የዋና አገልግሎት ለተጠቃሚው ለማቅረብ፣ በአህጉራት ውስጥ ያሉ የውቅረት መረጃዎችን በአስተማማኝ ሁኔታ የምናመሳሰልበት መንገድ መፈለግ ነበረብን።

በመጀመሪያ ቃል ነበረ። በፍጥነት ማሻሻያ የሚያስፈልገው የግንኙነት ፕሮቶኮል ሆነ።


የ QControl ሕልውና የማዕዘን ድንጋይ እና በተመሳሳይ ጊዜ ለእንደዚህ ዓይነቱ ፕሮቶኮል ግንባታ ከፍተኛ ጊዜን እና ሀብቶችን ለማሳለፍ ዋናው ምክንያት አንድ ነጠላ ስልጣን ያለው የውቅር ምንጭ ማግኘት እና በመጨረሻም የመገኛ ነጥቦቻችንን ማመሳሰል አስፈላጊ ነው ። ጋር. በ QControl እድገት ወቅት ማከማቻው ራሱ ከብዙ መስፈርቶች አንዱ ብቻ ነበር። በተጨማሪም፣ በተገኙበት ቦታ (POP)፣ ስማርት (እና ሊበጁ የሚችሉ) ዘዴዎች ለውሂብ ማረጋገጫ እና እንዲሁም የመዳረሻ ቁጥጥር ከነባር እና ከታቀዱ አገልግሎቶች ጋር ውህደቶችን እንፈልጋለን። ከዚህ በተጨማሪ በፋይሎች ላይ ማሻሻያዎችን ከማድረግ ይልቅ ትዕዛዞችን በመጠቀም እንዲህ ያለውን ስርዓት መቆጣጠር እንፈልጋለን. ከQControl በፊት፣ መረጃ በእጅ ማለት ይቻላል ወደሚገኙበት ቦታዎች ተልኳል። ከተገኙበት ነጥቦች አንዱ የማይገኝ ከሆነ እና በኋላ ላይ ማዘመን ከረሳነው ውቅሩ ከመመሳሰል ወጥቷል እና ወደ ስራ ለመመለስ ጊዜ ማባከን ነበረብን።

በውጤቱም, የሚከተለውን እቅድ አዘጋጅተናል.
Qrator ማጣሪያ የአውታረ መረብ ውቅር አስተዳደር ሥርዓት
የውቅረት አገልጋዩ ለውሂብ ማረጋገጫ እና ማከማቻ ሃላፊነት አለበት ፣ ራውተሩ ከደንበኞች እና ከድጋፍ ቡድኖች ወደ አገልጋዩ እና ከአገልጋዩ እስከ መገኛ ነጥቦች የሚቀበሉ እና የሚያሰራጩ በርካታ የመጨረሻ ነጥቦች አሉት።

የኢንተርኔት ግንኙነት ጥራት አሁንም በአለም ዙሪያ በስፋት ይለያያል - ይህንን ነጥብ ለማስረዳት ከፕራግ፣ ቼክ ሪፐብሊክ እስከ ሲንጋፖር እና ሆንግ ኮንግ ቀላል MTR እንይ።

Qrator ማጣሪያ የአውታረ መረብ ውቅር አስተዳደር ሥርዓት
MTR ከፕራግ ወደ ሲንጋፖር

Qrator ማጣሪያ የአውታረ መረብ ውቅር አስተዳደር ሥርዓት
ለሆንግ ኮንግ ተመሳሳይ ነገር

ከፍተኛ መዘግየት ማለት ዝቅተኛ ፍጥነት ማለት ነው. በተጨማሪም, የፓኬት መጥፋት አለ. የሰርጥ ስፋት ይህንን ችግር አያካክስም, ያልተማከለ ስርዓቶችን ሲገነቡ ሁልጊዜ ግምት ውስጥ መግባት አለባቸው.

የመገኘት ነጥብ ሙሉ ውቅር በማይታመን ግንኙነቶች ላይ ለብዙ ተቀባዮች መላክ ያለበት ከፍተኛ መጠን ያለው ውሂብ ነው። እንደ እድል ሆኖ, ውቅሩ ያለማቋረጥ ቢቀየርም, በትንሽ ጭማሪዎች ይከሰታል.

በቅርብ ጊዜ የተረጋጋ ንድፍ

በእድገት ማሻሻያ መርህ ላይ በመመስረት የተከፋፈለ አውታረ መረብ መገንባት ግልጽ የሆነ መፍትሄ ነው ማለት እንችላለን። ግን በዲፍስ ብዙ ችግሮች አሉ። በማጣቀሻ ነጥቦቹ መካከል ያሉትን ሁሉንም ልዩነቶች ማስቀመጥ እና የሆነ ሰው የውሂብ ክፍል ካመለጠበት እንደገና መላክ መቻል አለብን። እያንዳንዱ መድረሻ በጥብቅ በተጠቀሰው ቅደም ተከተል መተግበር አለባቸው. በተለምዶ, በበርካታ መድረሻዎች ውስጥ, እንዲህ ዓይነቱ ቀዶ ጥገና ረጅም ጊዜ ሊወስድ ይችላል. ተቀባዩም የጎደሉትን ክፍሎች መጠየቅ መቻል አለበት እና በእርግጥ ማዕከላዊው ክፍል ለእንደዚህ አይነት ጥያቄ በትክክል ምላሽ መስጠት አለበት, የጎደለውን ውሂብ ብቻ መላክ አለበት.

በውጤቱም, ወደ አንድ አስደሳች መፍትሄ ደረስን - አንድ የማጣቀሻ ንብርብር ብቻ አለን, ቋሚ, የተረጋጋ ብለን እንጠራዋለን, እና ለእሱ አንድ ልዩነት ብቻ - የቅርብ ጊዜ. እያንዳንዱ የቅርብ ጊዜ በመጨረሻው የተፈጠረ መረጋጋት ላይ የተመሰረተ ነው እና የውቅር ውሂቡን እንደገና ለመገንባት በቂ ነው። ትኩስ የቅርብ ጊዜው መድረሻው እንደደረሰ, አሮጌው አያስፈልግም.

የቀረው አዲስ የተረጋጋ ውቅር ከጊዜ ወደ ጊዜ መላክ ብቻ ነው፣ ለምሳሌ የቅርቡ በጣም ትልቅ ስለሆነ። እዚህ ላይ በጣም አስፈላጊው ነገር እነዚህን ሁሉ ማሻሻያዎች በብሮድካስት/በማለቲካስት ሁነታ መላክ ነው፣ ስለግለሰብ ተቀባዮች እና የውሂብ ቁርጥራጭ የመሰብሰብ ችሎታቸው ሳይጨነቅ። ሁሉም ሰው ትክክለኛው መረጋጋት እንዳለው ካረጋገጥን በኋላ አዲስ የቅርብ ጊዜዎችን ብቻ እንልካለን። ይህ እንደሚሰራ ግልጽ ማድረግ ተገቢ ነው? ይሰራል። የተረጋጋ በማዋቀሪያ አገልጋይ እና ተቀባዮች ላይ ተደብቋል ፣ እንደ አስፈላጊነቱ የቅርብ ጊዜ ተፈጥሯል።

የሁለት-ደረጃ ትራንስፖርት አርክቴክቸር

ለምንድነው ትራንስፖርታችንን በሁለት ደረጃዎች የገነባነው? መልሱ በጣም ቀላል ነው - ከ OSI ሞዴል ከትራንስፖርት እና አፕሊኬሽን ንብርብሮች ጋር መነሳሳትን በመውሰድ ከከፍተኛ ደረጃ አመክንዮ ማሽከርከርን መፍታት እንፈልጋለን። Thriftን ለትራንስፖርት ፕሮቶኮል ሚና እና የ msgpack ተከታታይነት ቅርጸትን ለከፍተኛ ደረጃ የቁጥጥር መልዕክቶች ቅርጸት ተጠቀምን። ለዚህም ነው ራውተር (መልቲካስት/ብሮድካስት/ማስተላለፊያ) ወደ msgpack የማይመለከት፣ ይዘቱን የማያራግፈው ወይም የማይጠቀመው፣ እና ውሂብን ብቻ የሚያስተላልፈው።

Thrift (ከእንግሊዝኛ - “thrift”፣ pronounced [θrift]) ለተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች አገልግሎትን ለመግለጽ እና ለመፍጠር የሚያገለግል የበይነገጽ መግለጫ ቋንቋ ነው። የርቀት አሰራር ጥሪዎች (RPC) ማዕቀፍ ነው። በቋንቋዎች መካከል የበለጠ ወይም ያነሰ በተቀላጠፈ እና በቀላሉ የሚሰሩ አገልግሎቶችን ለማዳበር የሶፍትዌር ቧንቧ መስመርን ከኮድ ማመንጫ ሞተር ጋር ያጣምራል።

የ Thrift ማዕቀፍን የመረጥነው በ RPC እና ለብዙ ቋንቋዎች ድጋፍ ነው። እንደተለመደው ቀላል ክፍሎቹ ደንበኛ እና አገልጋይ ነበሩ። ነገር ግን፣ ራውተሩ በከፊል በእድገታችን ወቅት ዝግጁ የሆነ መፍትሄ ባለማግኘቱ ለመሰነጣጠቅ ጠንካራ ነት ሆኖ ተገኘ።

Qrator ማጣሪያ የአውታረ መረብ ውቅር አስተዳደር ሥርዓትእንደ ፕሮቶቡፍ/ጂአርፒሲ ያሉ ሌሎች አማራጮችም አሉ ነገርግን ፕሮጀክታችንን ስንጀምር ጂአርፒሲ በጣም አዲስ ነበር እና ተሳፍረን ለመውሰድ አልደፈርንም።

እርግጥ ነው፣ የራሳችንን ብስክሌት መሥራት እንችል ነበር (እና በእርግጥም መሆን ነበረብን)። በ Thrift ላይ ራውተር ከመገንባት ጋር ሲነፃፀር የደንበኛ-አገልጋይ አርክቴክቸር ለመተግበር በአንጻራዊነት ቀላል ስለሆነ ለምንፈልገው ፕሮቶኮል መፍጠር ቀላል ይሆናል። አንዱ መንገድ ወይም ሌላ፣ ለራስ የተጻፉ ፕሮቶኮሎች እና የታወቁ ቤተ-መጻሕፍት አተገባበር ባህላዊ አድልዎ አለ (በጥሩ ምክንያት)፣ በውይይት ወቅት “ይህን ወደሌሎች ቋንቋዎች እንዴት እናስተላልፋለን?” የሚለው ጥያቄ ሁልጊዜ ይነሳል። ስለዚህ ወዲያውኑ የብስክሌት ሀሳብን ወረወርን።

Msgpack ከ JSON ጋር ተመሳሳይ ነው፣ ግን ፈጣን እና ያነሰ ነው። በተለያዩ ቋንቋዎች መካከል ውሂብ ለመለዋወጥ የሚያስችል የሁለትዮሽ ውሂብ ተከታታይነት ቅርጸት ነው።

በመጀመሪያ ደረጃ Thrift አለን መልእክቱን ለማስተላለፍ ራውተር ከሚያስፈልገው አነስተኛ መረጃ ጋር። በሁለተኛው ደረጃ የታሸጉ የ msgpack መዋቅሮች አሉ.

msgpackን የመረጥነው ከJSON ጋር ሲነጻጸር ፈጣን እና የበለጠ የታመቀ ስለሆነ ነው። ነገር ግን ከሁሉም በላይ፣ ብጁ የውሂብ አይነቶችን ይደግፋል፣ እንደ ጥሬ ሁለትዮሽ ማለፍ ያሉ አሪፍ ባህሪያትን እንድንጠቀም ያስችለናል ወይም የውሂብ አለመኖርን የሚያመለክቱ ልዩ ነገሮችን እንድንጠቀም ያስችለናል፣ ይህም ለ"ለቅርብ ጊዜ የተረጋጋ" እቅዳችን አስፈላጊ ነበር።

JMESPath
JMESPath የJSON መጠይቅ ቋንቋ ነው።
ከኦፊሴላዊው የJMESPath ሰነድ ያገኘነው መግለጫ ይህን ይመስላል፣ ግን እንደ እውነቱ ከሆነ፣ ከዚህ የበለጠ ብዙ ይሰራል። JMESPath በዘፈቀደ የዛፍ መዋቅር ውስጥ ንዑስ ዛፎችን ለመፈለግ እና ለማጣራት ይፈቅድልዎታል እና ለውጦችን በመረጃ ላይ ይተግብሩ። እንዲሁም ልዩ ማጣሪያዎችን እና የውሂብ ለውጥ ሂደቶችን እንዲያክሉ ይፈቅድልዎታል. ምንም እንኳን ለነገሩ ለመረዳት የአዕምሮ ጥረትን ይጠይቃል።

ጂንጃ
ለአንዳንድ ሸማቾች አወቃቀሩን ወደ ፋይል መቀየር አለብን - ስለዚህ የአብነት ሞተር እንጠቀማለን እና ጂንጃ ግልጽ ምርጫ ነው. በእሱ እርዳታ, በመድረሻው ላይ ከተቀበለው አብነት እና ውሂብ የውቅር ፋይልን እናወጣለን.

የማዋቀሪያ ፋይል ለማመንጨት የJMESPath ጥያቄ፣ በFS ውስጥ ያለው የፋይል ቦታ አብነት እና ውቅሩ ራሱ አብነት ያስፈልገናል። እንዲሁም በዚህ ደረጃ የፋይል ፈቃዶችን ግልጽ ማድረግ ጥሩ ሀሳብ ነው. ይህ ሁሉ በተሳካ ሁኔታ በአንድ ፋይል ውስጥ ተጣምሯል - የውቅረት አብነት ከመጀመሩ በፊት, የቀረውን የሚገልጽ ርዕስ በ YAML ቅርጸት እናስቀምጣለን.

ለምሳሌ:

---
selector: "[@][[email protected]._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft] ...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}

ለአዲስ አገልግሎት የውቅር ፋይል ለመስራት፣ አዲስ የአብነት ፋይል ብቻ እንጨምራለን። በተገኙበት ቦታ ላይ የምንጭ ኮድ ወይም ሶፍትዌር ምንም ለውጦች አያስፈልጉም።

QControl በቀጥታ ስርጭት ከጀመረ በኋላ ምን ተቀየረ? የመጀመሪያው እና በጣም አስፈላጊው ነገር በአውታረ መረቡ ውስጥ ላሉ ሁሉም አንጓዎች የውቅረት ዝመናዎችን የማያቋርጥ እና አስተማማኝ ማድረስ ነው። ሁለተኛው አወቃቀሩን ለመፈተሽ እና በእሱ ላይ ለውጦችን ለማድረግ በእኛ የድጋፍ ቡድን እንዲሁም በአገልግሎቱ ተጠቃሚዎች ዘንድ ኃይለኛ መሳሪያ መቀበል ነው.

ይህንን ሁሉ ማድረግ የቻልነው በቅርብ ጊዜ የተረጋጋውን የማሻሻያ እቅድ በመጠቀም በማዋቀር አገልጋይ እና በውቅረት ተቀባዮች መካከል ያለውን ግንኙነት ለማቃለል ነው። ከይዘት-ገለልተኛ የውሂብ ማስተላለፊያ መንገድን ለመደገፍ ባለሁለት ንብርብር ፕሮቶኮልን መጠቀም። በጂንጃ ላይ የተመሰረተ የውቅር ማመንጨት ሞተርን ወደ የተከፋፈለ የማጣሪያ አውታር በተሳካ ሁኔታ አዋህዷል። ይህ ስርዓት ለተከፋፈሉ እና ለተለያዩ ተጓዳኝ ክፍሎቻችን ሰፊ የማዋቀሪያ ዘዴዎችን ይደግፋል።

ጽሑፉን ለመጻፍ ስለረዱዎት እናመሰግናለን። VolanDamrod, serenheit, አይደለም.

እንግሊዝኛ ስሪት ልጥፍ.

ምንጭ: hab.com

አስተያየት ያክሉ