ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 143
Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 31
Abonament PDF

Ce sistem de distribuire de mesaje din Azure să folosesc?

Radu Vunvulea
Solution Architect
@iQuest



PROGRAMARE

În teorie, trimiterea unui mesaj prin cablu înspre un alt dispozitiv este o sarcină simplă. Dar trimiterea unui mesaj într-un mod sigur și de încredere poate fi o sarcină dificilă. În epoca IoT, în care numărul dispozitivelor conectate la internet crește dramatic în fiecare zi, noi trebuie să găsim diferite mecanisme de comunicare.

Deoarece nu putem controla când un dispozitiv este conectat la internet și pregătit să primească mesajul nostru, e important să detectăm diferite modalități de a comunica cu el.

În acest articol, vom arunca o privire asupra diferitelor sisteme de mesagerie care sunt oferite de către Microsoft Azure. Pentru fiecare sistem de mesagerie vom încerca să identificăm punctele forte și când ar trebui să îl utilizăm. Odată ce vom fi înțeles fiecare sistem de mesagerie, le vom compara unul câte unul.

În finalul acestui articol vom identifica un sistem de mesagerie perfect, care poate fi utilizat în orice situație. Pentru diferite cazuri de utilizare s-ar putea să fie nevoie să folosim sisteme de mesagerie diferite, în funcție de nevoile noastre.

Soluțiile de mesagerie care vor fi discutate în acest articol sunt următoarele:

Azure Storage Queues

Acest sistem de mesagerie face parte din Azure Storage și ne permite să stocăm multe mesaje în același șir. Când spun multe, imaginați-vă șiruri care pot ajunge nu la 1 GB, nu la 1TB și nu la 10TB, ci chiar la un șir de 200TB. De aceea, suntem capabili să depozităm cantități mari de date în șiruri, fără a ne gândi la dimensiunea șirului.

Un alt avantaj al acestui tip de șir este numărul clienților concurenți, care teoretic este nelimitat. Singura limită în acest caz este lățimea de bandă care poate limita numărul clienților concurenți. Dimensiunea maximă a unui mesaj este de 64 KB, dar în blocuri combinate putem avea mesaje care ajung la 200 GB.

Bineînțeles că mai există anumite limitări pe care trebuie să le luăm în considerare. În primul rând, chiar dacă dimensiunea șirului poate fi foarte extinsă, timpul maxim de plecare (Time To Leave - TTL) al unui mesaj este de 7 zile. Aceasta înseamnă că un mesaj trebuie să fie consumat în 7 zile sau reînnoit, altfel, mesajul va fi șters.

Chiar dacă avem suport pentru capacități de mesagerie de bază precum monitor de înlănțuire și suport lot de date, nu avem suport pentru management de stare, detectarea duplicării și suport pentru tranzacții.

O caracteristică interesantă a Azure Storage Queues este capacitatea de logging. Utilizatorii au posibilitatea de a activa mecanismul de logging și de a urmări toate acțiunile care au loc în șir. Informațiile precum IP-ul clientului sunt urmărite și stocate drept o soluție de-a gata.

Clienții au posibilitatea de a se uita la mesajele din șir, fără a le șterge sau bloca. Aceasta înseamnă că, dacă un client se uită la un mesaj, și alți clienți vor putea accesa același mesaj din șir.

Din acest motiv, Azure Storage Queues este foarte eficient când ai nevoie de un sistem de mesagerie care să fie capabil să urmărească toate acțiunile care au loc în șir. Acesta este o soluție bună pentru cazurile de utilizare în care știi că dimensiunea șirului va fi mai mare de 80-100 GB. Pentru șirurile mari, acesta poate fi cel mai bun mecanism de șiruri.

Azure Service Bus Queues

Acest sistem de mesagerie face parte dintr-o infrastructură mai complexă de mesagerie oferită de Microsoft și suportă scenarii mai complexe. Din această cauză, vom vedea că dimensiunea unui șir este limitată la 80GB, dar caracteristicile oferite de Service Bus Queues sunt mai complexe.

Este important de știut de la început că aceste două sisteme de mesagerie sunt construite pe servicii diferite și nu au nimic în comun. Dimensiunea unui mesaj poate fi de 256 KB, mai mare în comparație cu Azure Storage Queues și de asemenea un mesaj va fi păstrat în Service Bus pentru o perioadă nelimitată de timp. În plus, există suport complet pentru protocolul AMPQ, caracteristică ce poate fi foarte utilă pentru dispozitivele încorporate.

Există suport pentru mesajele moarte (dead lettering), ceea ce ne permite să mutăm automat un mesaj într-un șir secundar, dacă acel mesaj expiră sau clientul nu poate consuma un anumit mesaj. Există suport complet pentru tranzacții, gestionarea unui număr specific de mesaje în aceeași tranzacție. Mai mult decât atât, există suport pentru mesaje multiple de grup în aceeași sesiune - în acest fel ne putem asigura că un client își va consuma toate mesajele care fac parte dintr-o sesiune anume. Dacă știm ID-ul sesiunii, putem consuma mesajele din acea sesiune anume.

O caracteristică interesantă a Azure Service Bus Queues este detectarea dublurilor. Odată ce este activată, putem detecta mesajele duplicate. În momentul în care dorim să adăugăm un mesaj care deja există în sistem, mesajul nu va fi adăugat. Acest lucru este grozav când dorim să ne asigurăm că avem mesaje unice în șir.

Mesajele pot fi consumate din șir în două moduri diferite - Peek and Lock (Privește și Blochează) sau Receive and Delete (Primește și Șterge). Ne putem uita la un mesaj dintr-un șir și îl putem face indisponibil pentru restul clienților până când vom confirma că l-am consumat cu succes sau vom anula acțiunea (putem de asemenea specifica un timeout - o pauză).

Capacitatea de securitate a Azure Service Bus Queues este mai complexă; noi avem posibilitatea de a controla mai profund accesul la mesaje.

Pe baza acestor caracteristici, Azure Service Bus Queues sunt grozave atunci când este nevoie de detectarea duplicatului, suport pentru tranzacții sau depozitarea mesajelor pe termen nelimitat.

Azure Service Bus Topics

Spre deosebire de Azure Service Bus Queues care ne permite să livrăm mesajele unul la unul, Azure Service Bus Topics ne permite să livrăm un mesaj la mulți. Acest lucru înseamnă că noi putem furniza același mesaj la clienți multipli care se numesc subsribers (abonați). Acest sistem de mesagerie este în fond un sistem ESB (Enterprise Service Bus), care ne permite să avem o comunicare de tipul "publică/subscrie".

Din perspectiva caracteristicilor, acestea sunt foarte asemănătoare cu Azure Service Bus Queues, având câteva funcționalități și posibilități adiționale. Asemănarea celor două servicii se datorează faptului că ambele sisteme de mesagerie sunt construite pe același sistem de infrastructură de mesagerie broker.

Fiecare temă care este utilizată pentru a trimite mesaje poate avea maxim 2000 de abonați, însemnănd că același mesaj poate fi primit de 2000 de abonați. Acest lucru poate fi foarte util atunci când trebuie să distribuim mesaje către diferite sisteme. De asemenea, o subscriere poate fi adăugată în timpul de rulare. Nu este nevoie să oprim sistemul sau să recreăm tema. Odată ce o nouă subscriere a fost creată, toate mesajele noi care sunt trimise către acea temă vor fi primite și de către noua subscriere.

O caracteristică interesantă este suportul filtru. Noi putem atașa un filtru la fiecare subscriere. Acel filtru va permite numai mesajelor care respectă regula filtrului să ajungă la aceeași subscriere anume. În acest fel, fiecare subscriere poate asculta mesaje specifice.

Ambele sisteme de mesagerie, Azure Service Bus Topics și Queues au capacități de trimitere mai departe automată, dar pentru Topics, acestea sunt mai interesante. Aceasta înseamnă că noi putem trimite mai departe automat un mesaj dintr-o subscripție către un alt Service Bus Topic al Queue.

Fiecare mesaj care este trimis printr-un Service Bus poate avea o colecție de proprietăți. Proprietățile sunt utilizate atunci când este aplicat un filtru de comandă per subscriere. De asemenea, fiecare subscriere poate avea o acțiune la comandă care este executată atunci când primește un mesaj. Chiar dacă acțiunile care pot fi executate sunt foarte simple, poate fi foarte util în anumite situații - de exemplu, ne este permis să schimbăm numele valorii proprietății.

Datorită proprietăților sale, Azure Service Bus Topics este perfect de utilizat atunci când este nevoie să distribuim un mesaj către mai mulți ascultători. În sistemele în care numărul clienților care ar trebui să primească un mesaj se poate schimba în mod dinamic, Azure Service Bus Topics poate fi util.

Azure Event Hub

Chiar dacă, teoretic, face parte din Azure Service Bus, Azure Event Hub este un sistem de mesagerie special care este obișnuit să înghită cantități mari de date într-o perioadă scurtă de timp. Acest sistem este capabil să înghită peste 1 milion de mesaje pe secundă, fără niciun fel de problemă.

Este construit pe conceptul de curgere. Din această cauză, toate mesajele care plutesc în sistem sunt văzute drept un flux de date. Latența este foarte scăzută și chiar dacă cantitatea de date care curg este foarte mare, sistemul este stabil și fiabil.

O caracteristică interesantă a acestui sistem este capacitatea de a naviga între mesajele pe care le-am primit deja. Avem un concept similar cu un cursor și putem itera de asemenea și vechile mesaje - capacitatea de a răspunde. Mai mult, fluxul de mesaje poate ajunge la mai mulți clienți în același timp, utilizând conceptul de grup al clienților.

O calitate importantă care poate fi găsită la Azure Service Bus este păstrarea ordinii mesajelor. Aceasta înseamnă că ordinea mesajelor se păstrează. Clienții vor putea să consume mesajele în ordinea în care ele au fost trimise.

Capacitățile sistemului Event Hub pot scala destul de interesant, prin adăugarea de TU multipli (Throughput Units). Fiecare TU ne permite 1 MB/s pentru intrare și 2 MB/s pentru ieșire. Retenția unui mesaj este de o zi, fiind capabil să le depoziteze până la 7 zile.

Bineînțeles că aceasta vine cu anumite costuri. Caracteristici precum șirul scrisorilor moarte, suport pentru tranzacții sau opțiuni TTL nu pot fi găsite pe Azure Event Hub.

Această soluție este perfectă pentru volumuri mari de procesare de mesaje, cum ar fi telemetria sau în cazurile de utilizare IoT.

Care este cea mai bună soluție?

Nu există un răspuns unic la această întrebare. În funcție de nevoile noastre și de cerințe, putem utiliza sisteme diferite de mesagerie. Azure Storage Queues este perfect când este nevoie să depozităm și să gestionăm cantități mari de mesaje, dar, când avem nevoie de mai mult control, Azure Service Bus Queues poate fi o soluție mai bună. Pentru cazurile de utilizare în care avem nevoie să distribuim mesaje mai multor ascultători, Azure Service Bus Topic este cel mai bun. Dar pentru volum mare de procesare a mesajelor, nimic nu se compară cu Azure Event Hub.

Concluzie

În acest articol ne-am uitat la diferite sisteme de mesagerie oferite de Azure și am identificat cele mai importante caracteristici ale fiecăruia. Am văzut cele mai importante cazuri de utilizare în care putem folosi aceste sisteme și care sunt punctele lor slabe. În final, aș dori să vă invit să vedeți web site-ul Azure și să descoperiți mai multe despre aceste servicii grozave.

LANSAREA NUMĂRULUI 143

Railroads

miercuri, 29 mai, ora 18:00

Târgu-Mureș, Studium Hub

Facebook Meetup StreamEvent YouTube

Conferință

NUMĂRUL 142 - Robotics & AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • Yardi
  • P3 group
  • Ing Hubs
  • Colors in projects

INTERVIURI VIDEO