కుందేలుMQ. పార్ట్ 1. పరిచయం. ఎర్లాంగ్, AMQP

శుభ మధ్యాహ్నం, హబ్ర్! నేను సేకరించగలిగిన పాఠ్యపుస్తకం-రిఫరెన్స్ పుస్తకాన్ని పంచుకోవాలనుకుంటున్నాను RabbitMQ మరియు చిన్న సిఫార్సులు మరియు ముగింపులుగా కుదించండి.

విషయాల పట్టిక

  • కుందేలుMQ. పార్ట్ 1. పరిచయం. ఎర్లాంగ్, AMQP మరియు RPC
  • కుందేలుMQ. పార్ట్ 2. ఎక్స్ఛేంజ్లను అర్థం చేసుకోవడం
  • కుందేలుMQ. పార్ట్ 3. క్యూలు మరియు బైండింగ్‌లను అర్థం చేసుకోవడం
  • కుందేలుMQ. పార్ట్ 4. సందేశాలు మరియు ఫ్రేమ్‌లు ఏమిటో అర్థం చేసుకోవడం
  • కుందేలుMQ. పార్ట్ 5: సందేశాలను పోస్ట్ చేయడం మరియు వినియోగించడం యొక్క పనితీరు
  • కుందేలుMQ. పార్ట్ 6. ఫెడరేషన్ మరియు షావెల్ మాడ్యూల్స్ యొక్క అవలోకనం
  • కుందేలుMQ. పార్ట్ 7. కనెక్షన్ మరియు చానెల్ గురించిన వివరాలు
  • కుందేలుMQ. పార్ట్ 8. .NETలో RabbitMQ
  • కుందేలుMQ. పార్ట్ 9. పర్యవేక్షణ

AMQP గురించి క్లుప్తంగా

AMQP (అడ్వాన్స్‌డ్ మెసేజ్ క్యూయింగ్ ప్రోటోకాల్) అనేది సిస్టమ్ భాగాల మధ్య సందేశాలను ప్రసారం చేయడానికి ఒక ఓపెన్ ప్రోటోకాల్. ప్రాథమిక ఆలోచన ఏమిటంటే, వ్యక్తిగత సబ్‌సిస్టమ్‌లు (లేదా స్వతంత్ర అప్లికేషన్‌లు) AMQP బ్రోకర్ ద్వారా ఏకపక్ష పద్ధతిలో సందేశాలను మార్పిడి చేసుకోగలవు, ఇది రూటింగ్‌ని నిర్వహిస్తుంది, బహుశా డెలివరీకి హామీ ఇస్తుంది, డేటా స్ట్రీమ్‌లను పంపిణీ చేస్తుంది మరియు కావలసిన సందేశ రకాలకు సభ్యత్వాన్ని పొందుతుంది.

ప్రోటోకాల్ AMQP మూడు భావనలను పరిచయం చేస్తుంది:

కుందేలుMQ. పార్ట్ 1. పరిచయం. ఎర్లాంగ్, AMQP

  • exchange (మార్పిడి పాయింట్ లేదా మార్పిడి) - సందేశాలు దీనికి పంపబడతాయి. మార్పిడి పాయింట్ సందేశాన్ని పంపిణీ చేస్తుంది ఒకటి లేదా అంతకంటే ఎక్కువ క్యూలలో. ఆమె సందేశాలను క్యూకి పంపుతుంది సృష్టించిన లింక్‌ల ఆధారంగా (binding) అతనికి మరియు క్యూ మధ్య
  • queue (క్యూ) - డిస్క్‌లో లేదా RAMలో ఉన్న డేటా నిర్మాణం సందేశాలకు లింక్‌లను నిల్వ చేస్తుంది మరియు సందేశాల కాపీలను ఇస్తుంది consumers (వినియోగదారులకు)
  • binding (బైండింగ్) - ఒక నియమం ఈ సందేశాలు ఏ క్యూలోకి వెళ్లాలో ఎక్స్ఛేంజ్ పాయింట్‌కి తెలియజేస్తుంది

ప్రోటోకాల్ పైన నడుస్తుంది TCP / IP.

ఎర్లాంగ్ గురించి క్లుప్తంగా

ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్ రిపోజిటరీలో ఉంది గ్యాలరీలు. ఆర్కిటెక్చర్ RabbitMQ-సర్వర్ ఆధారంగా ఏర్లాంగ్ మరియు బీమ్.

Erlang సంస్థచే అభివృద్ధి చేయబడింది Ericsson 1980ల మధ్యలో 99,999% అప్‌టైమ్ అవసరమయ్యే అప్లికేషన్‌ల కోసం పంపిణీ చేయబడిన, తప్పు-తట్టుకునే, నిజ-సమయ వ్యవస్థగా రూపొందించబడింది. Erlang వివిధ పరిశ్రమలు మరియు ఆధునిక అనువర్తనాల్లో ఉపయోగించబడుతుంది, ఉదా. WhatsApp. మీరు వ్యాసంలో మరింత చదువుకోవచ్చు వాట్సాప్ ఆర్కిటెక్చర్, ఫేస్‌బుక్ $19 బిలియన్లకు కొనుగోలు చేసింది

RabbitMQ గురించి క్లుప్తంగా

RabbitMQ ఒక ఓపెన్ సోర్స్ మెసేజ్ బ్రోకర్. ఇది ప్రోటోకాల్ యొక్క అన్ని ప్రాథమిక సూత్రాలతో పాటు సందేశాలను రూట్ చేస్తుంది AMQP లో వివరించబడింది లక్షణాలు. RabbitMQ ప్రోటోకాల్‌ను అమలు చేస్తుంది మరియు అనుబంధిస్తుంది AMQP.

మెసేజింగ్ మోడల్ యొక్క ప్రధాన ఆలోచన RabbitMQ విషయం producer (ప్రచురణకర్త) నేరుగా క్యూలో సందేశాలను పంపరు. వాస్తవానికి, మరియు చాలా తరచుగా, సందేశం ఏదైనా క్యూలో డెలివరీ చేయబడుతుందో లేదో కూడా ప్రచురణకర్తకు తెలియదు.

బదులుగా, ప్రచురణకర్త మార్పిడికి సందేశాలను మాత్రమే పంపగలరు. ఒక వైపు, ఎక్స్ఛేంజ్ ప్రచురణకర్తల నుండి సందేశాలను అందుకుంటుంది, మరోవైపు, అది వాటిని క్యూలకు పంపుతుంది. మార్పిడి తనకు వచ్చిన సందేశంతో ఏమి చేయాలో ఖచ్చితంగా తెలుసుకోవాలి. ఇది నిర్దిష్ట క్యూలో జోడించాలా? దీన్ని బహుళ క్యూలకు జోడించాలా? లేదా సందేశాన్ని విస్మరించాలి.

కుందేలుMQ. పార్ట్ 1. పరిచయం. ఎర్లాంగ్, AMQP

సంక్షిప్త పని RabbitMQ ఈ క్రింది విధంగా వర్ణించవచ్చు:

  1. ప్రచురణకర్త నిర్దిష్ట మార్పిడికి సందేశాన్ని పంపుతారు
  2. ఒక మార్పిడి, ఒక సందేశాన్ని స్వీకరించిన తర్వాత, దానికి మరియు క్యూకి మధ్య ఉన్న బైండింగ్ నియమాలకు అనుగుణంగా దానిని ఒకటి లేదా అంతకంటే ఎక్కువ క్యూలకు రూట్ చేస్తుంది.
  3. క్యూ ఈ సందేశానికి సూచనను నిల్వ చేస్తుంది. సందేశం RAM లేదా డిస్క్‌లో నిల్వ చేయబడుతుంది
  4. వినియోగదారుడు క్యూ నుండి సందేశాన్ని స్వీకరించడానికి సిద్ధంగా ఉన్నప్పుడు, సర్వర్ లింక్ ద్వారా సందేశం యొక్క కాపీని సృష్టించి పంపుతుంది
  5. వినియోగదారు సందేశాన్ని అందుకుంటారు మరియు బ్రోకర్‌కు ధృవీకరణను పంపుతారు
  6. బ్రోకర్, నిర్ధారణను స్వీకరించిన తర్వాత, క్యూ నుండి సందేశం యొక్క కాపీని తీసివేస్తాడు. అప్పుడు RAM మరియు డిస్క్ నుండి తొలగిస్తుంది

సిపిపి

ప్రక్రియ RPC (రిమోట్ ప్రొసీజర్ కాల్) న్యూక్లియస్‌తో దాదాపు అన్ని పరస్పర చర్యలకు ఆధారం RabbitMQ. ఉదాహరణకు, క్లయింట్ యొక్క నిబంధనల గురించి ప్రారంభ చర్చలు RabbitMQ, ఒక నిర్దిష్ట ప్రక్రియను ప్రదర్శిస్తుంది RPC. ఈ క్రమం పూర్తయిన తర్వాత.. RabbitMQ క్లయింట్ నుండి అభ్యర్థనలను అంగీకరించడానికి సిద్ధంగా ఉంటుంది:

కుందేలుMQ. పార్ట్ 1. పరిచయం. ఎర్లాంగ్, AMQP

స్పెసిఫికేషన్‌లో కూడా AMQP క్లయింట్ మరియు సర్వర్ రెండూ ఆదేశాలను జారీ చేయగలవు. క్లయింట్ సర్వర్‌తో కమ్యూనికేట్ చేయడానికి వేచి ఉన్నారని దీని అర్థం. ఆదేశాలు తరగతులు మరియు పద్ధతులు. ఉదాహరణకి, Connection.Start - పద్ధతి కాల్ Start తరగతి Connection.

కనెక్షన్ మరియు ఛానెల్‌లు

క్లయింట్ మరియు సర్వర్ మధ్య అటువంటి సమాచార మార్పిడి కోసం, ఛానెల్‌లు. ఛానెల్‌లు లోపల సృష్టించబడతాయి నిర్దిష్ట కనెక్షన్. ప్రతి ఛానెల్ ఇతర ఛానెల్‌ల నుండి వేరు చేయబడుతుంది. సింక్రోనస్ సందర్భంలో, ప్రతిస్పందన వచ్చే వరకు తదుపరి ఆదేశాన్ని అమలు చేయడం సాధ్యం కాదు.

సమాంతరంగా ఆదేశాలను పంపడానికి, మీరు అనేక ఛానెల్‌లను తెరవాలి. ప్రతి ఛానెల్ విడిగా సృష్టిస్తుంది Erlang ప్రక్రియ. ఒక కనెక్షన్ బహుళ ఛానెల్‌లను కలిగి ఉండవచ్చు (మల్టీప్లెక్సింగ్) ప్రతి ఛానెల్‌కు మెమరీలో నిర్దిష్ట నిర్మాణాలు మరియు వస్తువులు ఉన్నాయి. అందువల్ల, కనెక్షన్‌లో ఎక్కువ ఛానెల్‌లు ఉన్నాయి, ది RabbitMQ ఎక్కువ మెమరీని ఉపయోగిస్తుంది అటువంటి కనెక్షన్‌ని నిర్వహించడానికి.

కుందేలుMQ. పార్ట్ 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 ఇది ప్రోటోకాల్ యొక్క అమలు MQTT తక్కువ-స్పీడ్, హై-లేటెన్సీ పరిసరాలలో సెన్సార్ మరియు సర్వర్ మధ్య డేటాను ప్రసారం చేయడం కోసం (మద్దతు ఉన్న ప్రోటోకాల్‌ల పూర్తి జాబితా ఇక్కడ జాబితా చేయబడింది ప్రాజెక్ట్ వెబ్‌సైట్).

తర్వాతి ఆర్టికల్‌లో మనం ఎక్స్ఛేంజ్‌లను మరింత వివరంగా అర్థం చేసుకోవడం ప్రారంభిస్తాము.

సూచనలు

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి