Kuelewa madalali wa ujumbe. Kujifunza mbinu za kutuma ujumbe na ActiveMQ na Kafka. Sura ya 1

Hello kila mtu!

Nilianza kutafsiri kitabu kidogo:
Β«Kuelewa Madalali wa UjumbeΒ«
mwandishi: Jakub Korab, mchapishaji: O'Reilly Media, Inc., tarehe ya kuchapishwa: Juni 2017, ISBN: 9781492049296.

Kutoka kwa utangulizi wa kitabu:
"... Kitabu hiki kitakufundisha jinsi ya kufikiria kuhusu mifumo ya kutuma ujumbe kwa wakala, kulinganisha na kulinganisha teknolojia mbili maarufu za wakala: Apache ActiveMQ na Apache Kafka. Itaangazia kesi za utumiaji na vivutio vya usanidi ambavyo vilisababisha wasanidi programu kuchukua mbinu tofauti sana kwa eneo moja-ujumbe kati ya mifumo na wakala wa kati. Tutaangalia teknolojia hizi kuanzia mwanzo na kuangazia athari za chaguo mbalimbali za kubuni njiani. Utapata uelewa wa kina wa bidhaa zote mbili, ufahamu wa jinsi zinafaa na zisivyopaswa kutumiwa, na ufahamu wa mambo ya kutafuta unapozingatia teknolojia nyingine za kutuma ujumbe katika siku zijazo. ... "

Sehemu zilizotafsiriwa hadi sasa:
Sura ya 1. Utangulizi
Sura ya 3. Kafka

Nitachapisha sura zilizokamilika kadri zinavyotafsiriwa.

SURA YA 1

Utangulizi

Utumaji ujumbe wa mfumo kwa mfumo ni mojawapo ya maeneo ambayo hayaeleweki sana katika IT. Kama msanidi programu au mbunifu, unaweza kuwa unafahamu mifumo na hifadhidata mbalimbali. Hata hivyo, kuna uwezekano kwamba una ujuzi wa kupita tu kuhusu jinsi teknolojia za ujumbe zinazotegemea wakala zinavyofanya kazi. Ikiwa unajisikia hivi, usijali, uko katika kampuni nzuri.

Watu kwa kawaida huwa na mawasiliano machache sana na miundombinu ya ujumbe. Mara nyingi huunganisha kwenye mfumo ulioundwa muda mrefu uliopita, au kupakua usambazaji kutoka kwa mtandao, kuiweka kwenye PROM na kuanza kuandika msimbo kwa ajili yake. Baada ya kuendesha miundombinu katika PROM, matokeo yanaweza kuchanganywa: ujumbe hupotea kwa sababu ya hitilafu, utumaji haufanyi kazi ulivyotarajia, au madalali "huning'inia" watayarishaji wako au hawatumii ujumbe kwa watumiaji wako.

Inaonekana ukoo?

Hali ya kawaida ni pale ambapo msimbo wako wa ujumbe unafanya kazi vizuri, kwa sasa. Mpaka itaacha kufanya kazi. Kipindi hiki huwavuta walinzi katika hisia ya uwongo ya usalama, na kusababisha kanuni zaidi kulingana na imani potofu kuhusu tabia ya kimsingi ya teknolojia. Mambo yanapoanza kwenda kombo, unakabiliwa na ukweli usiofaa: kwamba haujaelewa kabisa tabia ya msingi ya bidhaa au biashara iliyochaguliwa na waandishi, kama vile utendaji dhidi ya kutegemewa, au shughuli dhidi ya usawazishaji. .

Bila ufahamu wa kina wa jinsi madalali hufanya kazi, watu hutoa taarifa zinazoonekana kuwa za kuridhisha kuhusu mifumo yao ya utumaji ujumbe, kama vile:

  • Mfumo hautawahi kupoteza ujumbe
  • Ujumbe utachakatwa kwa kufuatana
  • Kuongeza watumiaji kutaharakisha mfumo
  • Ujumbe utawasilishwa mara moja pekee

Kwa bahati mbaya, baadhi ya kauli hizi zinatokana na dhana zinazotumika tu chini ya hali fulani, wakati zingine si sahihi.

Kitabu hiki kitakufundisha jinsi ya kufikiria kuhusu mifumo ya utumaji ujumbe inayotegemea wakala, kulinganisha na kulinganisha teknolojia mbili maarufu za wakala: Apache ActiveMQ na Apache Kafka. Itaangazia kesi za utumiaji na vivutio vya usanidi ambavyo vilisababisha wasanidi programu kuchukua mbinu tofauti sana kwa eneo moja-ujumbe kati ya mifumo na wakala wa kati. Tutaangalia teknolojia hizi kuanzia mwanzo na kuangazia athari za chaguo mbalimbali za kubuni njiani. Utapata uelewa wa kina wa bidhaa zote mbili, ufahamu wa jinsi zinafaa na zisivyopaswa kutumiwa, na ufahamu wa nini cha kuangalia unapozingatia teknolojia zingine za ujumbe katika siku zijazo.

Kabla ya kuanza, hebu tuchunguze mambo ya msingi.

Mfumo wa Ujumbe ni nini na kwa nini unahitajika?

Ili programu mbili ziwasiliane, lazima kwanza zifafanue kiolesura. Kufafanua kiolesura hiki kunahusisha kuchagua usafiri au itifaki, kama vile HTTP, MQTT, au SMTP, na kujadili miundo ya ujumbe ambayo itabadilishwa kati ya mifumo. Huu unaweza kuwa mchakato mkali, kama vile kufafanua utaratibu wa XML wenye mahitaji ya gharama ya upakiaji wa ujumbe, au huenda usiwe rasmi sana, kama vile makubaliano kati ya wasanidi programu wawili kwamba baadhi ya sehemu ya ombi la HTTP itakuwa na kitambulisho cha mteja .

Alimradi umbizo la ujumbe na mpangilio unaotumwa ni sawa kati ya mifumo, zinaweza kuwasiliana bila kuwa na wasiwasi kuhusu utekelezaji wa mfumo mwingine. Mambo ya ndani ya mifumo hii, kama vile lugha ya programu au mfumo unaotumika, inaweza kubadilika baada ya muda. Mradi tu mkataba wenyewe unadumishwa, mwingiliano unaweza kuendelea bila mabadiliko kutoka upande mwingine. Mifumo miwili imetenganishwa kwa ufanisi (imetenganishwa) na kiolesura hiki.

Mifumo ya kutuma ujumbe kwa kawaida huhusisha mpatanishi kati ya mifumo miwili inayoingiliana ili kutenganisha zaidi (kutenganisha) mtumaji kutoka kwa mpokeaji au wapokeaji. Katika hali hii, mfumo wa utumaji ujumbe unamruhusu mtumaji kutuma ujumbe bila kujua alipo mpokeaji, ikiwa yuko hai, au kuna matukio ngapi.

Hebu tuangalie mifano michache ya aina ya matatizo ambayo mfumo wa ujumbe hutatua na kuanzisha baadhi ya masharti ya kimsingi.

Eleza-kwa-Point

Alexandra anaenda kwenye ofisi ya posta ili kumtumia Adam kifurushi. Anaenda kwenye dirisha na kumpa mfanyakazi kifurushi. Mfanyakazi huchukua kifurushi na kumpa Alexandra risiti. Adamu haitaji kuwa nyumbani wakati kifurushi kinatumwa. Alexandra ana uhakika kwamba kifurushi kitawasilishwa kwa Adamu wakati fulani katika siku zijazo na anaweza kuendelea na biashara yake. Baadaye wakati fulani Adamu anapokea kifurushi.

Huu ni mfano wa muundo wa ujumbe uhakika-kwa-uhakika. Ofisi ya posta hapa hufanya kazi kama utaratibu wa usambazaji wa vifurushi, kuhakikisha kwamba kila kifurushi kinaletwa mara moja. Kutumia ofisi ya posta hutenganisha kitendo cha kutuma kifurushi kutoka kwa utoaji wa kifurushi.
Katika mifumo ya kawaida ya ujumbe, mfano wa kumweka-kwa-uhakika unatekelezwa kupitia foleni. Foleni hufanya kazi kama FIFO (kwanza ndani, kwanza kutoka) ambayo inaweza kusajiliwa na mtumiaji mmoja au zaidi. Kila ujumbe unawasilishwa tu kwa mmoja wa watumiaji waliojisajili. Foleni kwa kawaida hujaribu kusambaza ujumbe kwa haki miongoni mwa watumiaji. Mtumiaji mmoja tu ndiye atakayepokea ujumbe huu.

Neno "imara" linatumika kwa foleni. Kuegemea ni sifa ya huduma inayohakikisha kuwa mfumo wa utumaji ujumbe utaendelea kutuma ujumbe bila kuwepo kwa watumiaji wanaojisajili hadi mtumiaji ajisajili kwenye foleni ya uwasilishaji wa ujumbe.

Kuegemea mara nyingi huchanganyikiwa na kuendelea na ingawa maneno haya mawili yanatumika kwa kubadilishana, yanafanya kazi tofauti. Ustahimilivu huamua ikiwa mfumo wa kutuma ujumbe unaandika ujumbe kwa aina fulani ya hifadhi kati ya kuupokea na kuutuma kwa mtumiaji. Ujumbe unaotumwa kwenye foleni unaweza kudumu au usiendelee.
Ujumbe wa moja kwa moja hutumika wakati hali ya matumizi inahitaji kitendo cha mara moja kwenye ujumbe. Mifano ni pamoja na kuweka pesa kwenye akaunti au kukamilisha agizo la uwasilishaji. Tutajadili baadaye kwa nini mfumo wa kutuma ujumbe wenyewe hauwezi kutoa uwasilishaji wa mara moja na kwa nini foleni zinaweza kutoa dhamana ya uwasilishaji. angalau mara moja.

Mchapishaji-Msajili

Gabriella anapiga nambari ya mkutano. Wakati ameunganishwa kwenye mkutano, anasikia kila kitu ambacho mzungumzaji anasema, pamoja na washiriki wengine wa simu. Anaposikiza, hukosa kinachosemwa. Anapounganishwa tena, anaendelea kusikia kile kinachosemwa.

Huu ni mfano wa muundo wa ujumbe kuchapisha-kujiandikisha. Wito wa mkutano hufanya kama njia ya utangazaji. Mtu anayezungumza hajali ni watu wangapi walio kwenye simu kwa sasa - mfumo unahakikisha kwamba mtu yeyote aliyeunganishwa kwa sasa atasikia kinachosemwa.
Katika mifumo ya kawaida ya utumaji ujumbe, muundo wa utumaji ujumbe wa kuchapisha unatekelezwa kupitia mada. Mada hutoa njia sawa ya utangazaji kama utaratibu wa mkutano. Ujumbe unapotumwa kwa mada, husambazwa kwa watumiaji wote waliojisajili.

Mada ni kawaida isiyoaminika (isiyoweza kudumu). Kama tu msikilizaji ambaye hawezi kusikia kinachosemwa kwenye simu ya mkutano wakati msikilizaji anakata muunganisho, wanaofuatilia mada hukosa ujumbe wowote unaotumwa wakiwa nje ya mtandao. Kwa sababu hii, tunaweza kusema kwamba mada hutoa dhamana ya utoaji si zaidi ya mara moja kwa kila mtumiaji.

Utumaji ujumbe wa kuchapisha hutumiwa kwa kawaida wakati ujumbe ni wa taarifa na upotevu wa ujumbe mmoja si muhimu sana. Kwa mfano, mada inaweza kupitisha usomaji wa halijoto kutoka kwa kikundi cha vitambuzi mara moja kwa sekunde. Mfumo unaovutiwa na halijoto ya sasa na unaojiandikisha kwa mada hautakuwa na wasiwasi iwapo utakosa ujumbe - mwingine utawasili siku za usoni.

mifano ya mseto

Tovuti ya duka huweka ujumbe wa kuagiza katika "foleni ya ujumbe." Mtumiaji mkuu wa jumbe hizi ni mfumo wa utendaji. Aidha, mfumo wa ukaguzi unapaswa kuwa na nakala za ujumbe huu wa maagizo kwa ufuatiliaji unaofuata. Mifumo yote miwili haiwezi kuruhusu ujumbe kupita, hata kama mifumo yenyewe haipatikani kwa muda. Tovuti haipaswi kufahamu mifumo mingine.

Matukio ya matumizi mara nyingi huhitaji mchanganyiko wa uchapishaji wa kujiandikisha na miundo ya kutuma ujumbe kutoka kwa uhakika, kama vile wakati mifumo mingi inahitaji nakala ya ujumbe na kutegemewa na kuendelea kunahitajika ili kuzuia upotevu wa ujumbe.

Kesi hizi zinahitaji lengwa (neno la jumla la foleni na mada) ambalo husambaza ujumbe kimsingi kama mada, ili kila ujumbe utume kwa mfumo tofauti unaovutiwa na ujumbe huo, lakini pia ambapo kila mfumo unaweza kufafanua watumiaji kadhaa wanaopokea zinazoingia. ujumbe, ambao ni kama foleni. Aina ya kusoma katika kesi hii ni mara moja kwa kila mdau. Maeneo haya ya mseto mara nyingi huhitaji uimara ili mtumiaji akienda nje ya mtandao, ujumbe unaotumwa wakati huo hupokelewa baada ya mtumiaji kuunganishwa tena.

Miundo mseto si mipya na inaweza kutumika katika mifumo mingi ya utumaji ujumbe, ikijumuisha ActiveMQ (kupitia maeneo ya mtandaoni au ya mchanganyiko ambayo huchanganya mada na foleni) na Kafka (bila uwazi, kama sifa kuu ya muundo wake lengwa).

Sasa kwa kuwa tuna istilahi za kimsingi na kuelewa ni nini tunaweza kutumia mfumo wa kutuma ujumbe, hebu tupate maelezo zaidi.

Tafsiri imefanywa: tele.gg/middle_java

Sehemu ifuatayo iliyotafsiriwa: Sura ya 3. Kafka

Kuendelea ...

Chanzo: mapenzi.com

Kuongeza maoni