RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP

සුභ සන්ධ්‍යාවක්, හබ්ර්! මට එකතු කර ගැනීමට හැකි වූ දැනුම පිළිබඳ පෙළපොත්-යොමු පොතක් බෙදා ගැනීමට මට අවශ්‍යයි RabbitMQ සහ කෙටි නිර්දේශ සහ නිගමන වලට ඝනීභවනය කරන්න.

පටුන

  • RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP සහ RPC
  • RabbitMQ. 2 කොටස. හුවමාරුව අවබෝධ කර ගැනීම
  • RabbitMQ. 3 කොටස. පෝලිම් සහ බැඳීම් අවබෝධ කර ගැනීම
  • RabbitMQ. 4 වන කොටස. පණිවිඩ සහ රාමු යනු කුමක්දැයි වටහා ගැනීම
  • RabbitMQ. 5 කොටස: ප්‍රකාශනය සහ පරිභෝජන පණිවිඩ කාර්ය සාධනය
  • RabbitMQ. 6 කොටස. සම්මේලනය සහ සවල මොඩියුල පිළිබඳ දළ විශ්ලේෂණය
  • RabbitMQ. 7 කොටස. සම්බන්ධතාවය සහ චැනල් පිළිබඳ විස්තර
  • RabbitMQ. 8 කොටස. .NET හි RabbitMQ
  • RabbitMQ. 9 කොටස. අධීක්ෂණය

AMQP ගැන කෙටියෙන්

AMQP (Advanced Message Queuing Protocol) යනු පද්ධති සංරචක අතර පණිවිඩ සම්ප්‍රේෂණය කිරීම සඳහා විවෘත ප්‍රොටෝකෝලයකි. මූලික අදහස නම්, තනි තනි උප පද්ධති (හෝ ස්වාධීන යෙදුම්) මාර්ගගත කිරීම සිදු කරන, සමහරවිට බෙදා හැරීම සහතික කරන, දත්ත ප්‍රවාහ බෙදා හැරීම සහ අපේක්ෂිත පණිවිඩ වර්ග වලට දායක වන AMQP තැරැව්කරුවෙකු හරහා අත්තනෝමතික ආකාරයෙන් පණිවිඩ හුවමාරු කර ගත හැකි බවයි.

ප්රොටෝකෝලය AMQP සංකල්ප තුනක් හඳුන්වා දෙයි:

RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP

  • exchange (හුවමාරු ස්ථානය හෝ හුවමාරුව) - පණිවිඩ එයට යවනු ලැබේ. හුවමාරු ලක්ෂ්යය පණිවිඩය බෙදා හරියි පෝලිම් එකක හෝ කිහිපයක. ඇය පණිවිඩ පෝලිමකට යොමු කරයි සාදන ලද සබැඳි මත පදනම්ව (binding) ඔහු සහ පෝලිම අතර
  • queue (පෝලිමේ) - තැටියේ හෝ RAM හි ඇති දත්ත ව්‍යුහයකි පණිවිඩ වෙත සබැඳි ගබඩා කර පණිවිඩ පිටපත් ලබා දෙයි consumers (පාරිභෝගිකයින්ට)
  • binding (බන්ධන) - රීතියක් මෙම පණිවිඩ යා යුත්තේ කුමන පෝලිමටද යන්න හුවමාරු ලක්ෂ්‍යයට කියයි

ප්රොටෝකෝලය ඉහළින් ක්රියාත්මක වේ TCP / IP.

Erlang ගැන කෙටියෙන්

ව්‍යාපෘතියේ මූල කේතය ගබඩාවේ ඇත GitHub. නිර්මාණ ශිල්පය RabbitMQ-සේවාදායකය මත පදනම්ව අර්ලන්ග් සහ BEAM.

Erlang සමාගම විසින් සංවර්ධනය කරන ලදී Ericsson 1980 දශකයේ මැද භාගයේදී 99,999% ක්‍රියාකාරී කාලයක් අවශ්‍ය යෙදුම් සඳහා බෙදා හරින ලද, දෝෂ-ඉවසන, තත්‍ය කාලීන පද්ධතියක් ලෙස. Erlang විවිධ කර්මාන්තවල සහ නවීන යෙදුම්වල භාවිතා වේ, උදා. WhatsApp. ලිපියෙන් ඔබට වැඩිදුර කියවිය හැකිය ෆේස්බුක් විසින් ඩොලර් බිලියන 19 කට මිලදී ගත් WhatsApp ගෘහ නිර්මාණ ශිල්පය

RabbitMQ ගැන කෙටියෙන්

හාවා එම්.කේ. විවෘත මූලාශ්‍ර පණිවිඩ තැරැව්කරුවෙකි. එය ප්‍රොටෝකෝලයේ සියලුම මූලික මූලධර්ම ඔස්සේ පණිවිඩ යවයි AMQP විස්තර කර ඇත පිරිවිතර. RabbitMQ ප්‍රොටෝකෝලය ක්‍රියාත්මක කරයි සහ අතිරේක කරයි AMQP.

පණිවුඩකරණ ආකෘතියේ ප්රධාන අදහස RabbitMQ දෙයක් වේ producer (ප්‍රකාශක) පෝලිමට කෙලින්ම පණිවිඩ යවන්නේ නැත. ඇත්ත වශයෙන්ම, සහ බොහෝ විට, ප්‍රකාශකයා පණිවිඩය කිසියම් පෝලිමකට බෙදා හරිනු ඇත්ද යන්න පවා නොදනී.

ඒ වෙනුවට, ප්‍රකාශකයාට හුවමාරුව වෙත පමණක් පණිවිඩ යැවිය හැක. එක් අතකින්, හුවමාරුවට ප්‍රකාශකයින්ගෙන් පණිවිඩ ලැබෙන අතර අනෙක් පැත්තෙන් එය පෝලිම්වලට යවයි. හුවමාරුව තමාට ලැබෙන පණිවිඩය සමඟ කළ යුතු දේ හරියටම දැන සිටිය යුතුය. එය නිශ්චිත පෝලිමකට එකතු කළ යුතුද? එය බහු පෝලිම්වලට එකතු කළ යුතුද? නැතහොත් පණිවිඩය නොසලකා හැරිය යුතුය.

RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP

කෙටි වැඩ RabbitMQ පහත පරිදි විස්තර කළ හැකිය:

  1. ප්රකාශකයා නිශ්චිත හුවමාරුවකට පණිවිඩයක් යවයි
  2. හුවමාරුවක්, පණිවිඩයක් ලැබීමෙන් පසු, එය සහ පෝලිම අතර බන්ධන රීති වලට අනුකූලව එය පෝලිම් එකකට හෝ වැඩි ගණනකට යොමු කරයි.
  3. පෝලිමේ මෙම පණිවිඩයට යොමුවක් ගබඩා කරයි. පණිවිඩය RAM හෝ තැටියේ ගබඩා කර ඇත
  4. පාරිභෝගිකයා පෝලිමේ සිට පණිවිඩයක් ලැබීමට සූදානම් වූ පසු, සේවාදායකයා සබැඳිය හරහා පණිවිඩයේ පිටපතක් නිර්මාණය කර යවයි.
  5. පාරිභෝගිකයාට පණිවිඩය ලැබෙන අතර තහවුරු කිරීම තැරැව්කරු වෙත යවයි
  6. තහවුරු කිරීමක් ලැබීමෙන් පසු තැරැව්කරු පෝලිමෙන් පණිවිඩයේ පිටපතක් ඉවත් කරයි. එවිට RAM සහ තැටියෙන් මකා දමයි

ආර්පීසී

ක්රියාවලිය RPC (දුරස්ථ ක්රියාපටිපාටිය ඇමතුම) න්‍යෂ්ටිය සමඟ ඇති සියලුම අන්තර්ක්‍රියා පාහේ යටින් පවතී RabbitMQ. උදාහරණයක් ලෙස, සේවාදායකයාගේ කොන්දේසි පිළිබඳ මූලික සාකච්ඡා RabbitMQ, යම් ක්රියාවලියක් පෙන්නුම් කරයි RPC. මෙම අනුපිළිවෙල සම්පූර්ණ වූ පසු, RabbitMQ සේවාදායකයාගෙන් ඉල්ලීම් පිළිගැනීමට සූදානම් වනු ඇත:

RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP

පිරිවිතරයේ ද AMQP සේවාදායකයාට සහ සේවාදායකයාට විධාන නිකුත් කළ හැකිය. මෙයින් අදහස් කරන්නේ සේවාදායකයා සේවාදායකය සමඟ සන්නිවේදනය කිරීමට බලා සිටින බවයි. විධාන යනු පන්ති සහ ක්‍රම වේ. උදාහරණ වශයෙන්, Connection.Start - ක්රමය ඇමතුම Start පන්ති Connection.

සම්බන්ධතාවය සහ නාලිකා

සේවාදායකයා සහ සේවාදායකයා අතර එවැනි තොරතුරු හුවමාරුවක් සඳහා, නාලිකා. නාලිකා නිර්මාණය කර ඇත නිශ්චිත සම්බන්ධතාවය. සෑම නාලිකාවක්ම වෙනත් නාලිකා වලින් හුදකලා වේ. සමමුහුර්ත අවස්ථාවෙහිදී, ප්‍රතිචාරයක් ලැබෙන තුරු ඊළඟ විධානය ක්‍රියාත්මක කළ නොහැක.

සමාන්තරව විධාන යැවීමට හැකි වීම සඳහා, ඔබට නාලිකා කිහිපයක් විවෘත කළ යුතුය. සෑම නාලිකාවක්ම වෙන වෙනම නිර්මාණය කරයි Erlang ක්රියාවලිය. එක් සම්බන්ධතාවයකට නාලිකා කිහිපයක් තිබිය හැක (බහුකාර්යකරණය) එක් එක් නාලිකාව සඳහා මතකයේ යම් යම් ව්යුහයන් සහ වස්තූන් ඇත. එබැවින්, සම්බන්ධතාවයක් තුළ නාලිකා වැඩි වන තරමට RabbitMQ වැඩි මතකයක් භාවිතා කරයි එවැනි සම්බන්ධතාවයක් කළමනාකරණය කිරීමට.

RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP

භාවිතා කරමින් සම්බන්ධතාවයක් සහ නාලිකාවක් නිර්මාණය කිරීමේ සරල උදාහරණයක් RabbitMQ.Client:

// ...
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

අදහස් එක් කරන්න