RabbitMQ ክፍል 1. መግቢያ. ኤርላንግ፣ AMQP

ደህና ከሰአት ሀብር! ለመሰብሰብ የቻልኩትን የመማሪያ መጽሐፍ-ማጣቀሻ መጽሐፍን ማካፈል እፈልጋለሁ RabbitMQ እና ወደ አጭር ምክሮች እና ድምዳሜዎች ያሰባስቡ.

ማውጫ

  • RabbitMQ ክፍል 1. መግቢያ. Erlang፣ AMQP እና RPC
  • RabbitMQ ክፍል 2. ልውውጦችን መረዳት
  • RabbitMQ ክፍል 3. ወረፋዎችን እና ማሰሪያዎችን መረዳት
  • RabbitMQ ክፍል 4. መልዕክቶች እና ፍሬሞች ምን እንደሆኑ መረዳት
  • RabbitMQ ክፍል 5፡ የመልዕክት ስራን ማተም እና መጠቀም
  • RabbitMQ ክፍል 6. የፌዴሬሽኑ እና የአካፋ ሞጁሎች አጠቃላይ እይታ
  • RabbitMQ ክፍል 7. ስለ ግንኙነት እና ቻኔል ዝርዝሮች
  • RabbitMQ ክፍል 8. RabbitMQ በ NET
  • RabbitMQ ክፍል 9. ክትትል

ስለ AMQP በአጭሩ

AMQP (የላቀ የመልእክት Queuing ፕሮቶኮል) በስርዓት ክፍሎች መካከል መልዕክቶችን ለማስተላለፍ ክፍት ፕሮቶኮል ነው። ዋናው ሀሳብ የግለሰብ ንዑስ ስርዓቶች (ወይም ገለልተኛ አፕሊኬሽኖች) በዘፈቀደ በ AMQP ደላላ በኩል መልዕክቶችን መለዋወጥ ይችላሉ ፣ ይህም ማዘዋወርን ፣ ምናልባትም ማድረስ ፣ የመረጃ ፍሰት ስርጭትን ፣ ለሚፈለጉት የመልእክት ዓይነቶች መመዝገብ ።

ፕሮቶኮል AMQP ሦስት ጽንሰ-ሐሳቦችን ያቀርባል-

RabbitMQ ክፍል 1. መግቢያ. ኤርላንግ፣ AMQP

  • exchange (የመለዋወጫ ነጥብ ወይም ልውውጥ) - መልዕክቶች ወደ እሱ ይላካሉ. የመለዋወጫ ነጥብ መልእክቱን ያሰራጫል በአንድ ወይም በብዙ ወረፋዎች. እሷ መልዕክቶችን ወደ ወረፋ ያደርሳል በተፈጠሩ አገናኞች ላይ የተመሠረተ (binding) በእሱ እና በወረፋው መካከል
  • queue (ወረፋ) - በዲስክ ላይ ወይም በ RAM ውስጥ የውሂብ መዋቅር, ይህም የመልእክቶችን አገናኞች ያከማቻል እና የመልእክቶችን ቅጂ ይሰጣል consumers (ለተጠቃሚዎች)
  • binding (ማሰር) - አንድ ደንብ እነዚህ መልዕክቶች በየትኛው ወረፋ ውስጥ መግባት እንዳለባቸው የልውውጥ ነጥቡን ይነግረናል።

ፕሮቶኮሉ ያልፋል ወደ TCP / IP.

ስለ ኤርላንግ በአጭሩ

የፕሮጀክት ምንጭ ኮድ በማከማቻ ማከማቻ ውስጥ ይገኛል። የፊልሙ. አርክቴክቸር rabbitmq-አገልጋይ በዛላይ ተመስርቶ Laርንግ እና BEAM.

Erlang በኩባንያው የተገነባ Ericsson እ.ኤ.አ. በ1980ዎቹ አጋማሽ ላይ 99,999% የስራ ጊዜ ለሚያስፈልጋቸው መተግበሪያዎች እንደ ተሰራጭ፣ ስህተትን ታጋሽ፣ የእውነተኛ ጊዜ ስርዓት። Erlang በተለያዩ ኢንዱስትሪዎች እና ዘመናዊ አፕሊኬሽኖች ውስጥ ጥቅም ላይ ይውላል, ለምሳሌ በ WhatsApp. በጽሁፉ ውስጥ የበለጠ ማንበብ ይችላሉ ፌስቡክ በ19 ቢሊዮን ዶላር የገዛው የዋትስአፕ አርክቴክቸር

ስለ RabbitMQ በአጭሩ

RabbitMQ ክፍት ምንጭ መልእክት ደላላ ነው። በሁሉም የፕሮቶኮሉ መሰረታዊ መርሆች መሰረት መልእክቶችን ያስተላልፋል AMQP ውስጥ ተገልጿል ዝርዝር መግለጫዎች. RabbitMQ ፕሮቶኮሉን ተግባራዊ ያደርጋል እና ያሟላል። AMQP.

በ ውስጥ የመልእክት ሞዴል መሰረታዊ ሀሳብ RabbitMQ ነገሩ ነው producer (አታሚ) በቀጥታ ወደ ወረፋው መልእክት አይልክም። እንዲያውም፣ እና ብዙ ጊዜ፣ አታሚው መልእክቱ በማንኛውም ወረፋ ላይ መድረሱን እንኳን አያውቅም።

በምትኩ፣ አታሚው መልዕክቶችን ወደ ልውውጡ ብቻ መላክ ይችላል። በአንድ በኩል, ልውውጡ ከአሳታሚዎች መልዕክቶችን ይቀበላል, በሌላ በኩል ደግሞ ወደ ወረፋ ይልካል. ልውውጡ በተቀበለው መልእክት ምን ማድረግ እንዳለበት በትክክል ማወቅ አለበት. ወደ አንድ የተወሰነ ወረፋ መጨመር አለበት? ወደ ብዙ ወረፋዎች መጨመር አለበት? ወይም መልእክቱ ችላ ሊባል ይገባል።

RabbitMQ ክፍል 1. መግቢያ. ኤርላንግ፣ AMQP

በአጭሩ ስራ RabbitMQ እንደሚከተለው ሊገለጽ ይችላል.

  1. አታሚው ለአንድ የተወሰነ ልውውጥ መልእክት ይልካል
  2. ልውውጡ መልእክት እንደደረሰው በእሱ እና በወረፋው መካከል ባለው አስገዳጅ ህጎች መሠረት ወደ አንድ ወይም ከዚያ በላይ ወረፋዎች ያደርሰዋል።
  3. ወረፋው የዚህ መልእክት አገናኝ ያከማቻል። መልእክቱ ራሱ በ RAM ወይም በዲስክ ውስጥ ተከማችቷል
  4. ሸማቹ ከወረፋው መልእክት ለመቀበል እንደተዘጋጀ አገልጋዩ የመልእክቱን ቅጂ በማጣቀሻ አዘጋጅቶ ይልካል
  5. ሸማቹ መልእክቱን ተቀብሎ ለደላላው እውቅና ይልካል
  6. ደላላው ማረጋገጫ ከተቀበለ በኋላ የመልእክቱን ቅጂ ከወረፋው ያስወግዳል። ከዚያ ከ RAM እና ከዲስክ ይሰርዛል

ፒ ፒ

ሂደት RPC (የርቀት ሂደት ጥሪ) ከሞላ ጎደል ሁሉንም ከኒውክሊየስ ጋር ያለውን ግንኙነት መሰረት ያደረገ ነው። RabbitMQ. ለምሳሌ፣ የደንበኛ ውሎች የመጀመሪያ ውይይቶች RabbitMQ, የተወሰነ ሂደት ያሳያል RPC. ይህ ቅደም ተከተል ከተጠናቀቀ በኋላ, RabbitMQ ከደንበኛው የሚቀርቡ ጥያቄዎችን ለመቀበል ዝግጁ ይሆናል፡-

RabbitMQ ክፍል 1. መግቢያ. ኤርላንግ፣ AMQP

በተጨማሪም ዝርዝር ውስጥ AMQP ሁለቱም ደንበኛ እና አገልጋይ ትዕዛዞችን ሊሰጡ ይችላሉ። ይህ ማለት ደንበኛው ከአገልጋዩ ጋር ለመገናኘት እየጠበቀ ነው ማለት ነው. ትዕዛዞች ክፍሎች እና ዘዴዎች ናቸው. ለምሳሌ, Connection.Start - ዘዴ ጥሪ Start ደረጃ Connection.

ግንኙነት እና ቻናሎች

ለዚህ በደንበኛው እና በአገልጋዩ መካከል የመረጃ ልውውጥ ፣ ሰርጦች. ቻናሎች የተፈጠሩት በውስጡ ነው። የተወሰነ ግንኙነት. እያንዳንዱ ቻናል ከሌሎች ቻናሎች የተገለለ ነው። በተመሳሰለ ሁኔታ, ምላሽ እስኪያገኝ ድረስ የሚቀጥለውን ትዕዛዝ ማስፈጸም አይቻልም.

ትዕዛዞችን በትይዩ መላክ እንድትችል ብዙ ቻናሎችን መክፈት አለብህ። እያንዳንዱ ቻናል የተለየ ይፈጥራል Erlang ሂደት. አንድ ግንኙነት ብዙ ቻናሎች ሊኖሩት ይችላል (ማባዛት). ለእያንዳንዱ ሰርጥ, በማህደረ ትውስታ ውስጥ የተወሰኑ መዋቅሮች እና እቃዎች አሉ. ስለዚህ፣ ብዙ ቻናሎች በግንኙነት ውስጥ ሲኖሩ፣ የ ተጨማሪ ማህደረ ትውስታ በ RabbitMQ ጥቅም ላይ ይውላል እንዲህ ያለውን ግንኙነት ለማስተዳደር.

RabbitMQ ክፍል 1. መግቢያ. ኤርላንግ፣ AMQP

ግንኙነት እና ሰርጥ የመጠቀም ቀላል ምሳሌ RabbitMQ.ደንበኛ:

// ...
private void TryConnect()
{
    var factory = new ConnectionFactory() 
    {
        HostName = "host_name",
        UserName = "user_name",
        Password = "p@ssword",
        // Включение автоматичекого восстановления
        // соединения после сбоев сети 
        AutomaticRecoveryEnabled = true
    };
    _connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
    _channel = _connection.CreateModel();
    // other options 
}

ለእያንዳንዱ ክዋኔ አዲስ ግንኙነት መክፈት እንደ እሱ በጥብቅ ተስፋ ይቆርጣል ወደ ከፍተኛ ወጪዎች ይመራሉ. ቻናሎችም ዘላቂ መሆን አለባቸው፣ ነገር ግን ብዙ የፕሮቶኮል ስህተቶች ቻናሉን እንዲዘጋ ያደርጉታል፣ ስለዚህ የሰርጡ የህይወት ዘመን ከግንኙነት ያነሰ ሊሆን ይችላል።

RabbitMQ የት ጥቅም ላይ ይውላል?

በማይክሮ ሰርቪስ አውድ ውስጥ, ፕሮቶኮሉ AMQP እና አተገባበሩ በ RabbitMQ ብዙ ጊዜ ጥቅም ላይ ይውላል ያልተመሳሰለ መስተጋብር በአገልግሎቶች መካከል.

በአውድ ውስጥ IIOT ፕሮቶኮል AMQP እና አተገባበሩ በ RabbitMQ በአገልጋዮች (አገልጋይ-አገልጋይ) መካከል ለመረጃ ልውውጥ ጥቅም ላይ ይውላል። እንዲሁም ተሰኪውን ይጠቀሙ MQTT ተሰኪ RabbitMQ የፕሮቶኮሉ ትግበራ ነው። ኤም.ቲ.ቲ. በዝቅተኛ ፍጥነት እና በከፍተኛ መዘግየት አካባቢዎች ውስጥ መረጃን በሴንሰር እና በአገልጋይ መካከል ለማስተላለፍ (ለተሟሉ የሚደገፉ ፕሮቶኮሎች ዝርዝር ይመልከቱ) የፕሮጀክት ድር ጣቢያ).

በሚቀጥለው ርዕስ ውስጥ ከልውውጦች ጋር በበለጠ ዝርዝር መረዳት እንጀምራለን.

ማጣቀሻዎች

ምንጭ: hab.com

አስተያየት ያክሉ