Latviešu

Visaptverošs ceļvedis par uz notikumiem balstītas arhitektūras ziņojumu veidnēm. Veidojiet mērogojamas, noturīgas un atsaistītas sistēmas ar piemēriem un labāko praksi.

Uz notikumiem balstīta arhitektūra: Ziņojumu veidņu apguve mērogojamām sistēmām

Uz notikumiem balstīta arhitektūra (EDA) ir programmatūras arhitektūras paradigma, kas koncentrējas uz notikumu ražošanu, noteikšanu un patēriņu. Tā vietā, lai pakalpojumu mijiedarbība būtu cieši saistīta, EDA veicina asinhronu komunikāciju, kā rezultātā sistēmas kļūst mērogojamākas, noturīgākas un atsaistītākas. EDA galvenā sastāvdaļa ir efektīva ziņojumu veidņu izmantošana. Šis ceļvedis pēta dažādas ziņojumu veidnes, ko parasti izmanto EDA, sniedzot praktiskus piemērus un labāko praksi globālajām izstrādes komandām.

Kas ir uz notikumiem balstīta arhitektūra?

Tradicionālajā pieprasījuma/atbildes arhitektūrā pakalpojumi tieši izsauc viens otru. Šī ciešā saistība var radīt vājās vietas un padarīt sistēmas trauslas. EDA savukārt atsaista pakalpojumus, ieviešot notikumu kopni vai ziņojumu starpnieku. Pakalpojumi sazinās, publicējot notikumus kopnei, un citi pakalpojumi abonē notikumus, kas tos interesē. Šī asinhronā komunikācija ļauj pakalpojumiem darboties neatkarīgi, uzlabojot mērogojamību un kļūdu toleranci.

EDA galvenās priekšrocības

Bieži sastopamās ziņojumu veidnes uz notikumiem balstītā arhitektūrā

EDA var izmantot vairākas ziņojumu veidnes, katrai no tām ir savas stiprās un vājās puses. Pareizās veidnes izvēle ir atkarīga no jūsu lietojumprogrammas īpašajām prasībām.

1. Publicēšana-Abonēšana (Pub-Sub)

Publicēšanas-abonēšanas veidne ir viena no fundamentālākajām ziņojumu veidnēm EDA. Šajā veidnē publicētāji rada ziņojumus tēmai vai apmaiņai, un abonenti reģistrē savu interesi par konkrētām tēmām. Pēc tam ziņojumu starpnieks novirza ziņojumus no publicētājiem visiem ieinteresētajiem abonentiem.

Piemērs

Apsveriet e-komercijas platformu. Kad klients veic pasūtījumu, notikums "PasūtījumsIzveidots" tiek publicēts tēmai "Pasūtījumi". Pakalpojumi, piemēram, inventāra pakalpojums, maksājumu pakalpojums un piegādes pakalpojums, abonē tēmu "Pasūtījumi" un attiecīgi apstrādā notikumu.

Ieviešana

Pub-Sub var ieviest, izmantojot ziņojumu starpniekus, piemēram, Apache Kafka, RabbitMQ, vai mākoņa ziņojumu pakalpojumus, piemēram, AWS SNS/SQS vai Azure Service Bus. Konkrētās ieviešanas detaļas atšķiras atkarībā no izvēlētās tehnoloģijas.

Priekšrocības

Trūkumi

2. Notikumu avots

Notikumu avots ir veidne, kurā visas lietojumprogrammas stāvokļa izmaiņas tiek fiksētas kā notikumu secība. Tā vietā, lai glabātu pašreizējo entītijas stāvokli, lietojumprogramma glabā notikumu vēsturi, kas noveda pie šī stāvokļa. Pašreizējo stāvokli var rekonstruēt, atkārtoti atskaņojot notikumus.

Piemērs

Apsveriet bankas lietojumprogrammu. Tā vietā, lai glabātu konta pašreizējo atlikumu, lietojumprogramma glabā tādus notikumus kā "Depozīts", "Izņemšana" un "Pārskaitījums". Pašreizējo atlikumu var aprēķināt, secīgi atkārtojot šos notikumus.

Ieviešana

Notikumu avots parasti ietver notikumu glabāšanu notikumu krātuvē, kas ir specializēta datubāze, kas optimizēta notikumu glabāšanai un izgūšanai. Apache Kafka bieži tiek izmantota kā notikumu krātuve, pateicoties tās spējai apstrādāt lielu notikumu apjomu un nodrošināt stingras pasūtīšanas garantijas.

Priekšrocības

Trūkumi

3. Komandu un vaicājumu atbildības nošķiršana (CQRS)

CQRS ir veidne, kas atdala datu glabātuves lasīšanas un rakstīšanas darbības. Tā definē divus atšķirīgus modeļus: komandu modeli rakstīšanas darbību apstrādei un vaicājumu modeli lasīšanas darbību apstrādei. Šī atdalīšana ļauj katru modeli optimizēt tā īpašajam mērķim.

Piemērs

E-komercijas lietojumprogrammā komandu modelis varētu apstrādāt tādas darbības kā pasūtījumu izveide, produkta informācijas atjaunināšana un maksājumu apstrāde. Vaicājumu modelis varētu apstrādāt tādas darbības kā produktu sarakstu attēlošana, pasūtījumu vēstures rādīšana un atskaišu ģenerēšana.

Ieviešana

CQRS bieži tiek izmantots kopā ar notikumu avotu. Komandas tiek izmantotas, lai iedarbinātu notikumus, kas pēc tam tiek izmantoti lasīšanas modeļu atjaunināšanai. Lasīšanas modeļus var optimizēt noteiktiem vaicājumu modeļiem, nodrošinot ātrāku un efektīvāku lasīšanas veiktspēju.

Priekšrocības

Trūkumi

4. Pieprasījums-Atbilde

Lai gan EDA veicina asinhronu komunikāciju, ir scenāriji, kuros pieprasījuma-atbildes veidne joprojām ir nepieciešama. Šajā veidnē pakalpojums nosūta pieprasījuma ziņojumu citam pakalpojumam un gaida atbildes ziņojumu.

Piemērs

Lietotāja saskarne var nosūtīt pieprasījumu aizmugures pakalpojumam, lai izgūtu lietotāja profila informāciju. Aizmugures pakalpojums apstrādā pieprasījumu un nosūta atbildi, kas satur lietotāja profila datus.

Ieviešana

Pieprasījuma-atbildes veidni var ieviest, izmantojot ziņojumu starpniekus ar atbalstu pieprasījuma-atbildes semantikai, piemēram, RabbitMQ. Pieprasījuma ziņojums parasti ietver korelācijas ID, kas tiek izmantots, lai atbildes ziņojumu saskaņotu ar sākotnējo pieprasījumu.

Priekšrocības

Trūkumi

5. Saga

Saga ir veidne ilgtermiņa darījumu pārvaldībai, kas aptver vairākus pakalpojumus. Izplatītā sistēmā viens darījums var ietvert atjauninājumus vairākās datubāzēs vai pakalpojumos. Saga nodrošina, ka šie atjauninājumi tiek veikti konsekventi, pat kļūmju gadījumā.

Piemērs

Apsveriet e-komercijas pasūtījumu apstrādes scenāriju. Saga varētu ietvert šādus soļus: 1. Izveidot pasūtījumu pasūtījumu pakalpojumā. 2. Rezervēt inventāru inventāra pakalpojumā. 3. Apstrādāt maksājumu maksājumu pakalpojumā. 4. Nosūtīt pasūtījumu piegādes pakalpojumā.

Ja kāds no šiem soļiem neizdodas, sagai ir jākompensē iepriekšējie soļi, lai nodrošinātu sistēmas konsekventu stāvokli. Piemēram, ja maksājums neizdodas, sagai ir jāatceļ pasūtījums un jāatbrīvo rezervētais inventārs.

Ieviešana

Ir divas galvenās pieejas sagu ieviešanai: 1. Uz horeogrāfiju balstīta saga: Katrs sagā iesaistītais pakalpojums ir atbildīgs par notikumu publicēšanu, kas iedarbina nākamo soli sagā. Nav centrālā orķestratora. 2. Uz orķestrēšanu balstīta saga: Centrālā orķestratora pakalpojums pārvalda sagu un koordinē iesaistītos soļus. Orķestrators nosūta komandas iesaistītajiem pakalpojumiem un klausās notikumus, kas norāda uz katra soļa panākumiem vai neveiksmēm.

Priekšrocības

Trūkumi

Pareizās ziņojumu veidnes izvēle

Ziņojumu veidnes izvēle ir atkarīga no jūsu lietojumprogrammas īpašajām prasībām. Pieņemot lēmumu, ņemiet vērā šādus faktorus:

Šeit ir tabula, kas apkopo katras ziņojumu veidnes galvenās īpašības:

Veidne Apraksts Konsekvence Sarežģītība Lietošanas gadījumi
Pub-Sub Publicētāji sūta ziņojumus tēmām, abonenti saņem ziņojumus no tēmām. Iespējama Vidēja Paziņojumi, notikumu izplatīšana, pakalpojumu atsaistīšana.
Notikumu avots Glabā visas lietojumprogrammas stāvokļa izmaiņas kā notikumu secību. Stingra Augsta Audits, atkļūdošana, laika vaicājumi, stāvokļa atjaunošana.
CQRS Atdala lasīšanas un rakstīšanas darbības atsevišķos modeļos. Iespējama (lasīšanas modeļiem) Augsta Lasīšanas un rakstīšanas veiktspējas optimizēšana, lasīšanas un rakstīšanas darbību neatkarīga mērogošana.
Pieprasījums-Atbilde Pakalpojums nosūta pieprasījumu un gaida atbildi. Tūlītēja Vienkārša Sinhronizēta veida mijiedarbība, izmantojot asinhronu ziņojumapmaiņu.
Saga Pārvalda ilgstošus darījumus, kas aptver vairākus pakalpojumus. Iespējama Augsta Izplatīti darījumi, datu konsekvences nodrošināšana vairākos pakalpojumos.

Labākā prakse EDA ziņojumu veidņu ieviešanai

Šeit ir dažas labākās prakses, kas jāņem vērā, ieviešot EDA ziņojumu veidnes:

Reālās pasaules piemēri

EDA un ar to saistītās ziņojumu veidnes tiek izmantotas plašā nozaru un lietojumprogrammu spektrā. Šeit ir daži piemēri:

Piemēram, globāls pārtikas piegādes pakalpojums varētu izmantot EDA, lai pārvaldītu pasūtījumus. Kad klients veic pasūtījumu, tiek publicēts notikums `OrderCreated`. Restorāna pakalpojums abonē šo notikumu, lai sagatavotu ēdienu. Piegādes pakalpojums abonē šo notikumu, lai piešķirtu vadītāju. Maksājumu pakalpojums abonē šo notikumu, lai apstrādātu maksājumu. Katrs pakalpojums darbojas neatkarīgi un asinhroni, ļaujot sistēmai efektīvi apstrādāt lielu skaitu pasūtījumu.

Secinājums

Uz notikumiem balstīta arhitektūra ir jaudīga paradigma mērogojamu, noturīgu un atsaistītu sistēmu veidošanai. Izprotot un efektīvi izmantojot ziņojumu veidnes, izstrādātāji var izveidot stabilas un elastīgas lietojumprogrammas, kas var pielāgoties mainīgām biznesa prasībām. Šis ceļvedis sniedza pārskatu par bieži sastopamajām ziņojumu veidnēm, ko izmanto EDA, kā arī praktiskus piemērus un labāko praksi. Pareizās veidnes izvēle jūsu īpašajām vajadzībām ir ļoti svarīga veiksmīgu uz notikumiem balstītu sistēmu veidošanai. Pieņemot lēmumu, atcerieties ņemt vērā konsekvenci, latentumu, sarežģītību, mērogojamību un kļūdu toleranci. Izmantojiet asinhronās komunikācijas spēku un atklājiet pilnu savu lietojumprogrammu potenciālu.