පණිවිඩ තැරැව්කරුවන් අවබෝධ කර ගැනීම. ActiveMQ සහ Kafka සමඟ පණිවිඩ යැවීමේ යාන්ත්‍ර විද්‍යාව ඉගෙන ගැනීම. 1 වන පරිච්ඡේදය

ආයුබෝවන් හැමෝටම!

මම කුඩා පොතක් පරිවර්තනය කිරීමට පටන් ගතිමි:
«පණිවිඩ තැරැව්කරුවන් අවබෝධ කර ගැනීම",
කර්තෘ: Jakub Korab, ප්‍රකාශකයා: O'Reilly Media, Inc., ප්‍රකාශනය කළ දිනය: ජූනි 2017, ISBN: 9781492049296.

පොතේ හැඳින්වීමේ සිට:
"... Apache ActiveMQ සහ Apache Kafka යන ජනප්‍රිය තැරැව්කාර තාක්ෂණයන් දෙකක් සංසන්දනය කරමින් තැරැව්කාර පණිවුඩකරණ පද්ධති ගැන සිතන ආකාරය මෙම පොත ඔබට කියා දෙනු ඇත. එය ඔවුන්ගේ සංවර්ධකයින් එකම ප්‍රදේශයට වෙනස් ප්‍රවේශයන් ගැනීමට හේතු වූ භාවිත අවස්ථා සහ සංවර්ධන දිරිගැන්වීම් ගෙනහැර දක්වයි - අතරමැදි තැරැව්කරුවෙකු සමඟ පද්ධති අතර පණිවිඩ යැවීම. අපි මෙම තාක්ෂණයන් බිම් මට්ටමේ සිට බලා විවිධ නිර්මාණ තේරීම්වල බලපෑම ඉස්මතු කරමු. ඔබට නිෂ්පාදන දෙකම පිළිබඳ ගැඹුරු අවබෝධයක්, ඒවා භාවිතා කළ යුතු සහ නොකළ යුතු ආකාරය පිළිබඳ අවබෝධයක් සහ අනාගතයේදී වෙනත් පණිවිඩකරණ තාක්ෂණයන් සලකා බැලීමේදී සෙවිය යුතු දේ පිළිබඳ අවබෝධයක් ඔබට ලැබෙනු ඇත. ... "

මෙතෙක් පරිවර්තනය කර ඇති කොටස්:
පරිච්ඡේදය 1. හැඳින්වීම
පරිච්ඡේදය 3. කෆ්කා

සම්පුර්ණ කරන ලද පරිච්ඡේද පරිවර්තනය කර ඇති පරිදි මම පළ කරමි.

1 වන පරිච්ඡේදය

හැඳින්වීම

System-to-system පණිවිඩ යැවීම තොරතුරු තාක්ෂණයේ අඩුවෙන් අවබෝධ කරගත් ක්ෂේත්‍රවලින් එකකි. සංවර්ධකයෙකු හෝ ගෘහ නිර්මාණ ශිල්පියෙකු ලෙස, ඔබ විවිධ රාමු සහ දත්ත සමුදායන් සමඟ ඉතා හුරුපුරුදු විය හැකිය. කෙසේ වෙතත්, ඔබට ඇත්තේ තැරැව්කරු මත පදනම් වූ පණිවිඩකරණ තාක්ෂණයන් ක්‍රියා කරන ආකාරය පිළිබඳ හුරුපුරුදුකමක් පමණක් විය හැකිය. ඔබට මේ ආකාරයෙන් දැනෙනවා නම්, කරදර නොවන්න, ඔබ හොඳ සමාගමක සිටී.

මිනිසුන්ට සාමාන්‍යයෙන් පණිවිඩ යැවීමේ යටිතල ව්‍යුහය සමඟ ඉතා සීමිත සම්බන්ධතා ඇත. ඔවුන් බොහෝ විට බොහෝ කලකට පෙර නිර්මාණය කරන ලද පද්ධතියකට සම්බන්ධ වේ, නැතහොත් අන්තර්ජාලයෙන් බෙදාහැරීමක් බාගත කර, එය PROM හි ස්ථාපනය කර ඒ සඳහා කේතය ලිවීමට පටන් ගනී. PROM හි යටිතල ව්‍යුහය ක්‍රියාත්මක කිරීමෙන් පසු ප්‍රතිඵල මිශ්‍ර විය හැක: අසාර්ථක වීම් හේතුවෙන් පණිවිඩ නැති වී යයි, යැවීම ඔබ අපේක්ෂා කළ පරිදි ක්‍රියා නොකරයි, නැතහොත් තැරැව්කරුවන් ඔබේ නිෂ්පාදකයින් "එල්ලා" හෝ ඔබේ පාරිභෝගිකයින්ට පණිවිඩ නොයවන්න.

හුරුපුරුදුයි වගේද?

පොදු අවස්ථාවක් වන්නේ ඔබගේ පණිවුඩකරණ කේතය දැනට හොඳින් ක්‍රියා කරන ස්ථානයයි. එය වැඩ නතර කරන තුරු. මෙම කාල පරිච්ෙඡ්දය, තාක්‍ෂණයේ මූලික හැසිරීම් පිළිබඳ ව්‍යාජ විශ්වාසයන් මත පදනම් වූ තවත් කේතවලට තුඩු දෙන, ආරක්‍ෂාව පිළිබඳ ව්‍යාජ හැඟීමකට කෙනෙකුගේ ආරක්‍ෂාව ඇද දමයි. දේවල් වැරදී යාමට පටන් ගත් විට, ඔබට අපහසු සත්‍යයකට මුහුණ දීමට සිදු වේ: නිෂ්පාදනයේ යටින් පවතින හැසිරීම හෝ කාර්ය සාධනය එදිරිව විශ්වසනීයත්වය, හෝ ගනුදෙනුව එදිරිව තිරස් පරිමාණය වැනි කතුවරුන් විසින් තෝරා ගන්නා ලද වෙළඳාම් ඔබ සැබවින්ම තේරුම් ගෙන නැත. .

තැරැව්කරුවන් ක්‍රියා කරන ආකාරය පිළිබඳ ගැඹුරු අවබෝධයකින් තොරව, මිනිසුන් ඔවුන්ගේ පණිවුඩකරණ පද්ධති පිළිබඳව සාධාරණ ලෙස පෙනෙන ප්‍රකාශ කරයි, එනම්:

  • පද්ධතිය කිසි විටෙකත් පණිවිඩ නැති නොවේ
  • පණිවිඩ අනුපිළිවෙලින් සකසනු ලැබේ
  • පාරිභෝගිකයින් එකතු කිරීම පද්ධතිය වේගවත් කරනු ඇත
  • පණිවිඩ එක් වරක් පමණක් ලබා දෙනු ඇත

අවාසනාවකට, මෙම ප්‍රකාශවලින් සමහරක් පදනම් වී ඇත්තේ යම් යම් තත්වයන් යටතේ පමණක් අදාළ වන උපකල්පන මත වන අතර අනෙක් ඒවා සරලව වැරදිය.

Apache ActiveMQ සහ Apache Kafka යන ජනප්‍රිය තැරැව්කාර තාක්‍ෂණ දෙකක් සංසන්දනය කරමින් තැරැව්කරු මත පදනම් වූ පණිවිඩකරණ පද්ධති ගැන සිතන ආකාරය මෙම පොත ඔබට කියා දෙනු ඇත. එය ඔවුන්ගේ සංවර්ධකයින් එකම ප්‍රදේශයට වෙනස් ප්‍රවේශයන් ගැනීමට හේතු වූ භාවිත අවස්ථා සහ සංවර්ධන දිරිගැන්වීම් ගෙනහැර දක්වයි - අතරමැදි තැරැව්කරුවෙකු සමඟ පද්ධති අතර පණිවිඩ යැවීම. අපි මෙම තාක්ෂණයන් බිම් මට්ටමේ සිට බලා විවිධ නිර්මාණ තේරීම්වල බලපෑම ඉස්මතු කරමු. ඔබ නිෂ්පාදන දෙකම පිළිබඳ ගැඹුරු අවබෝධයක්, ඒවා භාවිතා කළ යුතු සහ නොකළ යුතු ආකාරය පිළිබඳ අවබෝධයක් සහ අනාගතයේදී වෙනත් පණිවිඩකරණ තාක්ෂණයන් සලකා බැලීමේදී සොයා බැලිය යුතු දේ පිළිබඳ අවබෝධයක් ලබා ගනු ඇත.

අපි ආරම්භ කිරීමට පෙර, අපි මූලික කරුණු වෙත යමු.

පණිවුඩකරණ පද්ධතියක් යනු කුමක්ද සහ එය අවශ්ය වන්නේ ඇයි?

යෙදුම් දෙකක් එකිනෙකා සමඟ සන්නිවේදනය කිරීමට නම්, ඒවා මුලින්ම අතුරු මුහුණතක් නිර්වචනය කළ යුතුය. මෙම අතුරුමුහුණත නිර්වචනය කිරීම HTTP, MQTT, හෝ SMTP වැනි ප්‍රවාහනය හෝ ප්‍රොටෝකෝලයක් තෝරා ගැනීම සහ පද්ධති අතර හුවමාරු වන පණිවිඩ ආකෘති සාකච්ඡා කිරීම ඇතුළත් වේ. මෙය පණිවිඩ ගෙවීමේ පිරිවැය අවශ්‍යතා සහිත XML ක්‍රමලේඛයක් නිර්වචනය කිරීම වැනි දැඩි ක්‍රියාවලියක් විය හැකිය, නැතහොත් HTTP ඉල්ලීමේ යම් කොටසක සේවාදායක හඳුනාගැනීම් අඩංගු වන බවට සංවර්ධකයින් දෙදෙනෙකු අතර ගිවිසුමක් වැනි ඉතා අඩු විධිමත් විය හැක.

පණිවිඩවල ආකෘතිය සහ ඒවා යවන අනුපිළිවෙල පද්ධති අතර අනුකූල වන තාක් කල්, අනෙක් පද්ධතියේ ක්‍රියාත්මක කිරීම ගැන කරදර නොවී එකිනෙකා සමඟ සන්නිවේදනය කළ හැකිය. මෙම පද්ධතිවල අභ්‍යන්තරය, එනම් ක්‍රමලේඛන භාෂාව හෝ භාවිතා කරන රාමුව, කාලයත් සමඟ වෙනස් විය හැක. කොන්ත්රාත්තුව පවත්වා ගෙන යන තාක් කල්, අනෙක් පැත්තෙන් වෙනස්කම් නොමැතිව අන්තර්ක්රියා දිගටම කරගෙන යා හැක. මෙම අතුරුමුහුණත මගින් පද්ධති දෙක ඵලදායී ලෙස විසංයෝජනය කර ඇත (වෙන් කර ඇත).

පණිවිඩ යැවීමේ පද්ධති සාමාන්‍යයෙන් ලබන්නාගෙන් හෝ ලබන්නන්ගෙන් යවන්නා තවදුරටත් විසංයෝජනය කිරීමට (වෙන් කිරීමට) අන්තර්ක්‍රියා කරන පද්ධති දෙකක් අතර අතරමැදියෙකු ඇතුළත් වේ. මෙම අවස්ථාවෙහිදී, පණිවිඩ යැවීමේ ක්‍රමය මඟින් ලබන්නා සිටින ස්ථානය, ඔහු ක්‍රියාකාරීද, හෝ අවස්ථා කීයක් තිබේද යන්න නොදැන පණිවිඩයක් යැවීමට යවන්නාට ඉඩ ලබා දේ.

පණිවුඩකරණ පද්ධතියක් විසඳන ආකාරයේ ගැටළු සඳහා සාදෘශ්‍ය කිහිපයක් සලකා බලා මූලික නියමයන් කිහිපයක් හඳුන්වා දෙමු.

පොයින්ට්-ටු-පොයින්ට්

ඇලෙක්සැන්ඩ්‍රා ඇඩම්ට පැකේජයක් යැවීමට තැපැල් කාර්යාලයට යයි. ඇය කවුළුව වෙත ගොස් සේවකයාට පැකේජය ලබා දෙයි. සේවකයා පැකේජය රැගෙන ඇලෙක්සැන්ඩ්‍රාට රිසිට්පතක් ලබා දෙයි. පැකේජය යවන විට ආදම්ට නිවසේ සිටීමට අවශ්‍ය නැත. අනාගතයේ යම් අවස්ථාවක දී මෙම පැකේජය ඇඩම් වෙත ලබා දෙනු ඇති බව ඇලෙක්සැන්ඩ්‍රා විශ්වාස කරන අතර ඇයගේ ව්‍යාපාරය දිගටම කරගෙන යා හැකිය. පසුව යම් අවස්ථාවක ආදම්ට පැකේජයක් ලැබේ.

මෙය පණිවිඩ යැවීමේ ආකෘතියකට උදාහරණයකි ලක්ෂ්යයෙන් ලක්ෂ්යය. මෙහි තැපැල් කාර්යාලය පාර්සල් බෙදා හැරීමේ යාන්ත්‍රණයක් ලෙස ක්‍රියා කරන අතර, සෑම පාර්සලයක්ම එක් වරක් බෙදා හැරීම සහතික කරයි. තැපැල් කාර්යාලයක් භාවිතා කිරීමෙන් පැකේජයක් යැවීමේ ක්‍රියාව පැකේජය බෙදා හැරීමෙන් වෙන් කරයි.
සම්භාව්‍ය පණිවුඩකරණ පද්ධතිවල, ලක්ෂ්‍යයේ සිට ලක්ෂ්‍ය ආකෘතිය හරහා ක්‍රියාත්මක වේ පෝලිම්. පෝලිම FIFO (පළමුව, පළමු පිටතට) බෆරයක් ලෙස ක්‍රියා කරන අතර එය පාරිභෝගිකයින් එකක් හෝ වැඩි ගණනකට දායක විය හැක. සෑම පණිවිඩයක්ම බෙදා හරිනු ලැබේ දායක වූ පාරිභෝගිකයෙකුට. පෝලිම් සාමාන්‍යයෙන් පාරිභෝගිකයින් අතර පණිවිඩ සාධාරණ ලෙස බෙදා හැරීමට උත්සාහ කරයි. එක් පාරිභෝගිකයෙකුට පමණක් මෙම පණිවිඩය ලැබෙනු ඇත.

"කල්පවත්නා" යන යෙදුම පෝලිම් සඳහා යොදනු ලැබේ. විශ්වසනීයත්වය පාරිභෝගිකයෙකු පණිවිඩ බෙදා හැරීම සඳහා පෝලිමට දායක වන තෙක් සක්‍රීය ග්‍රාහකයින් නොමැති විට පණිවිඩ යැවීමේ පද්ධතිය දිගටම පවතින බව සහතික කරන සේවා දේපලකි.

විශ්වසනීයත්වය බොහෝ විට ව්යාකූල වේ නොනැසී පැවතීම සහ පද දෙක එකිනෙකට වෙනස් ලෙස භාවිතා වුවද, ඒවා විවිධ කාර්යයන් ඉටු කරයි. පණිවිඩ යැවීමේ පද්ධතිය එය ලැබීම සහ පාරිභෝගිකයා වෙත යැවීම අතර යම් ආකාරයක ගබඩාවකට පණිවිඩයක් ලියනවාද යන්න තීරණය කරයි. පෝලිමට යවන ලද පණිවිඩ නොනැසී පැවතිය හැකිය.
භාවිත අවස්ථාවට පණිවිඩය මත එක් වරක් ක්‍රියාවක් අවශ්‍ය වූ විට ලක්ෂ්‍යයෙන් ලක්ෂ්‍ය පණිවිඩ යැවීම භාවිතා වේ. උදාහරණ ලෙස ගිණුමකට අරමුදල් තැන්පත් කිරීම හෝ බෙදා හැරීමේ ඇණවුමක් සම්පූර්ණ කිරීම ඇතුළත් වේ. පණිවුඩකරණ පද්ධතියට තනිවම බෙදා හැරීමක් ලබා දීමට නොහැකි වන්නේ මන්දැයි අපි පසුව සාකච්ඡා කරමු සහ පෝලිම්වලට හොඳම බෙදාහැරීමේ සහතිකය සැපයිය හැක්කේ මන්ද යන්නයි. අවම වශයෙන් එක් වරක්.

ප්‍රකාශක-ග්‍රාහකයා

ගේබ්‍රියෙලා සම්මන්ත්‍රණ අංකය අමතයි. ඇය සම්මන්ත්‍රණයට සම්බන්ධව සිටින අතරතුර, ඇමතුමට සහභාගිවන්නන් සමඟ කථානායකවරයා පවසන සෑම දෙයක්ම ඇයට ඇසෙයි. ඇය සුසර කරන විට, ඇයට කියන දේ මග හැරේ. නැවත සම්බන්ධ වූ විට, ඇය කියන දේ දිගටම ඇසෙයි.

මෙය පණිවිඩ යැවීමේ ආකෘතියකට උදාහරණයකි public-subscribe කරන්න. සම්මන්ත්‍රණ ඇමතුම විකාශන යාන්ත්‍රණයක් ලෙස ක්‍රියා කරයි. කතා කරන පුද්ගලයා දැනට ඇමතුමේ කී දෙනෙක් සිටීද යන්න ගණන් ගන්නේ නැත - දැනට සම්බන්ධ වී සිටින ඕනෑම කෙනෙකුට කියන දේ ඇසෙන බව පද්ධතිය සහතික කරයි.
සම්භාව්‍ය පණිවිඩකරණ පද්ධතිවල, ප්‍රකාශන-දායකත්ව පණිවුඩකරණ ආකෘතිය ක්‍රියාත්මක කරනු ලැබේ මුදුන්. මාතෘකාව සම්මන්ත්‍රණ යාන්ත්‍රණයට සමාන විකාශන ක්‍රමය සපයයි. මාතෘකාවකට පණිවිඩයක් යවන විට එය බෙදා හරිනු ලැබේ සියලුම දායක පරිශීලකයින් සඳහා.

මාතෘකා සාමාන්යයෙන් වේ විශ්වාස කළ නොහැකි (නොනැසී පවතින). සවන්දෙන්නා විසන්ධි වූ විට සම්මන්ත්‍රණ ඇමතුමකදී කියන දේ ඇසීමට නොහැකි අසන්නෙකු මෙන්, මාතෘකා ග්‍රාහකයින්ට නොබැඳිව සිටියදී යවන ඕනෑම පණිවිඩයක් මග හැරේ. මෙම හේතුව නිසා, මාතෘකා බෙදාහැරීමේ සහතිකයක් සපයන බව අපට පැවසිය හැකිය එක් වරකට වඩා වැඩි නොවේ එක් එක් පාරිභෝගිකයා සඳහා.

ප්‍රකාශන-දායකත්ව පණිවිඩ යැවීම සාමාන්‍යයෙන් භාවිතා කරනුයේ පණිවිඩ තොරතුරු ස්වභාවයක් ගන්නා විට සහ එක් පණිවිඩයක් නැතිවීම විශේෂයෙන් වැදගත් නොවන විටය. උදාහරණයක් ලෙස, මාතෘකාවකට තත්පරයකට වරක් සංවේදක සමූහයකින් උෂ්ණත්ව කියවීම් සම්ප්‍රේෂණය කළ හැකිය. වත්මන් උෂ්ණත්වය ගැන උනන්දුවක් දක්වන සහ මාතෘකාවක් සඳහා දායක වන පද්ධතියක් පණිවිඩයක් මග හැරුණහොත් කරදර නොවනු ඇත - තවත් නුදුරු අනාගතයේ දී පැමිණෙනු ඇත.

දෙමුහුන් ආකෘති

ගබඩාවේ වෙබ් අඩවිය ඇණවුම් පණිවිඩ "පණිවිඩ පෝලිමක" තබයි. මෙම පණිවිඩවල ප්‍රධාන පාරිභෝගිකයා විධායක ක්‍රමයයි. ඊට අමතරව, විගණන පද්ධතියට පසුව ලුහුබැඳීම සඳහා මෙම ඇණවුම් පණිවිඩවල පිටපත් තිබිය යුතුය. පද්ධති දෙකටම පණිවිඩ යැවීමට ඉඩ දිය නොහැක, පද්ධතිම යම් කාලයක් සඳහා නොමැති වුවද. වෙබ් අඩවිය වෙනත් පද්ධති ගැන දැනුවත් නොවිය යුතුය.

භාවිත අවස්ථා සඳහා බොහෝ විට ප්‍රකාශන-දායකත්වය සහ ලක්ෂ්‍යයෙන් ලක්ෂ්‍ය පණිවිඩකරණ මාදිලිවල එකතුවක් අවශ්‍ය වේ, එනම් බහු පද්ධතිවලට පණිවිඩයක පිටපතක් අවශ්‍ය වන විට සහ පණිවිඩ නැතිවීම වැළැක්වීම සඳහා විශ්වසනීයත්වය සහ නොනැසී පැවතීම යන දෙකම අවශ්‍ය වේ.

මෙම අවස්ථා සඳහා ගමනාන්තයක් (පෝලිම් සහ මාතෘකා සඳහා සාමාන්‍ය යෙදුමක්) අවශ්‍ය වන අතර එය මූලික වශයෙන් මාතෘකාවක් ලෙස පණිවිඩ බෙදා හරින අතර එමඟින් සෑම පණිවිඩයක්ම එම පණිවිඩ කෙරෙහි උනන්දුවක් දක්වන වෙනම පද්ධතියකට යවනු ලැබේ, නමුත් එක් එක් පද්ධතියට පැමිණෙන පාරිභෝගිකයින් කිහිප දෙනෙකු නිර්වචනය කළ හැකිය. පණිවිඩ, එය පෝලිමක් වැනි ය. මෙම නඩුවේ කියවීමේ වර්ගය වේ එක් එක් පාර්ශවකරුවන් සඳහා එක් වරක්. මෙම දෙමුහුන් ගමනාන්ත සඳහා බොහෝ විට කල්පැවැත්ම අවශ්‍ය වන අතර එමඟින් පාරිභෝගිකයෙකු නොබැඳි නම්, එම අවස්ථාවේදී යවන පණිවිඩ පාරිභෝගිකයා නැවත සම්බන්ධ වූ පසු ලැබේ.

දෙමුහුන් ආකෘති අලුත් නොවන අතර ActiveMQ (මාතෘකා සහ පෝලිම් ඒකාබද්ධ කරන අතථ්‍ය හෝ සංයුක්ත ගමනාන්ත හරහා) සහ Kafka (වංගුව, එහි ගමනාන්ත සැලසුමේ මූලික දේපලක් ලෙස) ඇතුළුව බොහෝ පණිවිඩ පද්ධතිවල භාවිතා කළ හැක.

දැන් අපට මූලික පාරිභාෂික වචන කිහිපයක් සහ අපට පණිවිඩ යැවීමේ පද්ධතියක් භාවිතා කළ හැක්කේ කුමක් සඳහාද යන්න පිළිබඳ අවබෝධයක් ඇති බැවින්, අපි විස්තර වෙත යමු.

පරිවර්තනය සිදු කරන ලදී: tele.gg/middle_java

පහත පරිවර්තන කොටස: පරිච්ඡේදය 3. කෆ්කා

ඉදිරියට පැවැත්වේ…

මූලාශ්රය: www.habr.com

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