Avantajele brokerului de serviciu componente

Utilizarea mijloacelor de service Broker aplicarea bazei de date componente pregătit o serie de avantaje semnificative. Printre aceste fonduri și beneficii includ:

  • integrarea bazei de date îmbunătățește performanța de aplicații și administrarea Simplificați.
  • Raționalizarea de comunicare și coordonare simplifică procesul de dezvoltare a aplicatiilor
  • aplicații de cuplare Loose oferă un control flexibil al volumului de muncă.
  • Blocarea mesajelor conexe permite mai multe instanțe ale aplicațiilor pentru a procesa mesaje de la o coadă, fără sincronizare explicită.
  • Datorită activării automate a aplicației poate fi scalate în funcție de numărul de mesaje.

Datorită structurii integrate a brokerului de servicii crește performanța de aplicare și administrare mai ușoară.

Integrarea cu SQL Server permite mesagerie tranzacțional fără a crește cheltuielile de regie și fără complexitatea care apar în cazul unui coordonator Distributed Transaction extern. Aplicație primește unul sau mai multe mesaje, procesează mesajul sau mesajele, și transmite un mesaj de răspuns într-o singură tranzacție de bază de date. În cazul în care există un eșec în îndeplinirea tranzacției, toate operațiunile sunt anulate, iar mesajul primit este returnat la locul, ceea ce face posibil să se facă o încercare să-l ocupe. Nici o acțiune nu poate intra în vigoare până când cererea nu blochează tranzacția. Aplicația rămâne într-o stare stabilă.

Cu sistemele de mesagerie tradiționale pot să apară pierderi de coerență ca un magazin mesaj și baza de date. De exemplu, atunci când o componentă este restaurat din copia de rezervă, cealaltă componentă trebuie să fie restaurată dintr-o copie de rezervă, luate în același timp, în caz contrar conținutul depozitului de mesaje va înceta să se conformeze cu datele din baza de date. Componenta de servicii Broker mesaje stochează și date în aceeași bază de date, astfel încât problemele cu consistența nu este acolo.

Un alt avantaj oferit de integrarea bazei de date - aceasta este un mediu de dezvoltare comună. Diferitele părți ale aplicației care procesează mesajul și datele pot utiliza aceeași limbă și SQL Server instrumente, aplicația de service Broker. Acest lucru permite organizarea muncii cu privire la programarea mesajului module de prelucrare a folosi faptul că dezvoltatorul este familiarizat cu tehnicile de programare baze de date. Implementarea Serviciului Broker este o procedură stocată poate fi scrisă într-un limbaj Transact-SQL, sau una dintre limbile CLR. Software-ul instalat este baza de date utilizată Transact-SQL și interfețe de programare baze de date de date cunoscute, cum ar fi ADO.NET.

În plus, integrarea bazei de date vă permite să gestioneze resursele într-un mod automat. Broker Serviciul se realizează în cadrul unei instanțe de SQL Server, astfel încât Broker Serviciul monitorizează toate mesajele gata pentru a transfera toate bazele de date exemplu. Prin urmare, toate bazele de date pot menține propria coadă și, în același timp, să promoveze componenta de service Broker în abordarea problemei utilizării resurselor în întreaga instanță SQL Server.

În sistemele de mesagerie tradiționale responsabile pentru a comanda și coordonarea mesajelor care pot acționa într-un mod inadecvat, este atribuită aplicației respective. De exemplu, aplicația A trimite un mesaj de 1, 2 și 3. Anexa B recepționează mesajul 1 și 3, și confirmă primirea lor, dar apare eroarea de transmisie 2 posturi. Anexa A re-transmite mesajul 2, iar acum este primit acest mesaj după mesajele 1 și 3. În trecut, la dispoziția dezvoltatorilor au fost două moduri de a rezolva problema: fie pentru a scrie aplicații, astfel încât mesajele sosesc ordinul nu a contat, pentru a posta un mesaj 3 la un depozit temporar înainte de a intra în mesajul 2, astfel încât aplicația poate procesa mesajele în ordinea corectă. Atât prima și a doua soluție nu au fost nici eficiente, nici ușor.

Pentru sistemele tradiționale sunt caracterizate printr-o altă problemă: duplicarea de livrare. Revenind la exemplul anterior. Dacă cererea B recepționează mesajul 2, dar confirmarea este îndreptată spre Anexa A, a pierdut, Anexa A retransmiterea mesajul 2 astfel încât anexa B trebuie să primească mesajul 2 de două ori. Prin urmare, codul de aplicare necesar pentru a scrie în așa fel încât să se fie obtina și aruncați duplicat sau re-tratate mesaj transmis de două ori fără efecte adverse. Din nou, ambele aceste abordări a fost dificil de implementat.

Coordonarea comunicațiilor este în mod tradițional o problemă greu de rezolvat. De exemplu, o aplicație poate trimite un serviciu de sute sau chiar mii de cereri. Ore realizează procesarea paralelă a acestor solicitări și returnează un răspuns imediat după finalizarea procesării cererii respective. Datorită faptului că timpul diferit este cheltuit pe prelucrarea diferitelor cereri, cererea primește răspunsurile nu sunt în ordinea în care exact cererile de ieșire. Dar, aplicația poate oferi răspunsurile corecte de tratament numai în cazul în cazul în care se poate potrivi în mod corect fiecare răspuns cu mesajul original corespunzător. În sistemele convenționale, o asociație de mesagerie se realizează prin intermediul aplicației, ceea ce duce la costuri mai mari și creșterea complexității de dezvoltare a aplicatiilor.

, Serviciul Broker rezolvă această problemă prin furnizarea de comanda automată a mesajelor, de livrare, fără duplicate, precum și identificarea dialogurilor. După stabilirea unui dialog între cele două puncte de capăt ale unei cereri de service Broker primește fiecare mesaj doar o singură dată și în ordinea în care au fost transmise aceste mesaje. Aplicațiile pot procesa mesaje nu mai mult de o dată într-un mod adecvat și nu este necesară nici un cod suplimentar pentru acest scop. În cele din urmă, componenta de service Broker este inclus automat în fiecare identificator de mesaj. Aplicațiile au întotdeauna informațiile cu privire la care un dialog în care un anumit mesaj.

Posibilitatea de cozi de formare contribuie, de asemenea, la o distribuție mai uniformă a sarcinilor de prelucrare, care reduce necesarul de putere de vârf de servere. Acest lucru face posibilă creșterea cantității totale și performanța aplicațiilor de baze de date. De exemplu, în anumite momente ale zilei numărul de tranzacții procesate de mai multe aplicații de baze de date, crește dramatic, ceea ce duce la o creștere a consumului de resurse și pentru a reduce timpul de răspuns. Odată cu apariția unei cereri de serviciu Broker, care nu mai este necesar pentru a efectua toate operațiunile de prelucrare a unei tranzacții de afaceri atunci când trimiterea la cererea este. Acum, această aplicație prin intermediul unui broker de servicii va trimite informații despre programele de aplicație care efectuează tranzacții de procesare în fundal. Aceste cereri pentru o anumită perioadă de timp, a efectua un tratament aprofundată a tranzacției, precum și locația principală a aplicației „de intrare“, continuă să primească noi tranzacții de afaceri.

În cazul în care destinația nu este disponibilă în acest moment, mesajul rămâne în trimiterea coada de transmisie de date. Componenta de service Broker efectuează de a reîncerca până atunci, până când mesajul este trimis cu succes, sau înainte de expirarea menținerea unui dialog care va continua dialogul solid între cele două servicii, chiar dacă la un moment dat, în cursul acestui dialog este unul dintre servicii va fi temporar indisponibil. Conținuți în coada de transmitere a mesajelor sunt o parte a bazei de date. componentă de service Broker livrează mesajul chiar și în cazul failover sau reinceperea această copie.

Una dintre cele mai mari provocări cu care se confruntă utilizatorii de sisteme de mesagerie tradiționale, este modul în care să asigure un tratament în paralel a mai multor programe la aceeași linie. Atunci când, în aceeași linie de sisteme de mesagerie tradiționale a avea acces la mai multe programe sau fire, mesajele pot fi procesate în ordine aleatorie. , Serviciul Broker nu permite astfel de situații prin blocarea dialogurile de grup.

Să vedem modul în care aplicația tradițională pentru procesarea comenzilor. La rândul său, a acționat ca mesajul A, care conține instrucțiuni pentru formarea antetul comenzii, iar mesajul B, care conține instrucțiuni cu privire la modul de a crea linii de comandă ale elementelor. Dacă ambele aceste mesaje sunt preluate din coada de diverse instanțe și aplicații sunt procesate în același timp, tranzacția este de a asigura crearea unor elemente ale liniilor de comandă pot fi prezentate pentru prima fixare și nu poate avea loc, deoarece comanda nu există încă. Acest eșec, la rândul său, va conduce la o revenire a tranzacției, mesajul va reveni la coada si va fi re-prelucrate, ceea ce va duce la risipă de resurse. În mod tradițional programatori au rezolvat această problemă prin combinarea datelor din mesajul posturilor A și B într-un singur mesaj. Dacă trebuie să se ocupe de două mesaje, această abordare este eficientă, dar atunci când este vorba de sisteme, zeci de coordonare sau sute de mesaje, acesta poate fi cu greu invocată.

, Serviciul Broker rezolvă această problemă prin combinarea dialoguri legate în grupul de dialog. Broker este automat blochează toate mesajele din același grup de dialoguri, astfel încât aceste mesaje pot fi primite și procesate de către o instanță cerere. Între timp, alte instanțe ale aplicației poate continua să fie eliminate din mesajele de coadă și de proces din alte grupuri dialoguri. Aceasta oferă posibilitatea de funcționare fiabilă și eficientă a mai multor instanțe concurente ale aplicației și elimină necesitatea de a include un complex coduri de cerere de blocare.

Una dintre caracteristicile cele mai utile de serviciu Broker - este activat. Activarea permite unei aplicații să se redimensiona dinamic atunci când modificați numărul de coada de mesaje primite. Broker Serviciul este echipat cu un mijloc pentru ambele programe care rulează în interiorul bazei de date și programe care rulează în afara bazei de date, să se bucure de beneficiile de activare. Cu toate acestea, Serviciul Broker nu necesită aplicarea de utilizare obligatorie a funcției de activare.

, Serviciul Broker monitorizează evenimente coadă pentru a determina dacă mesajul primit de la toate dialogurile de aplicații, care sunt posturi disponibile. Activarea Broker Serviciul începe un cititor de coadă de agent, în acele cazuri în care agentul are un loc de muncă. Pentru a determina dacă lucrarea este pentru cititor Agent Coadă, componenta Serviciul Broker monitorizează coada de evenimente. Atunci când numărul de funcționare a agentului Coadă Reader este proporțională cu traficul de intrare, o astfel de situație este creată în coada de așteptare periodic, sau în care nu există mesaje sau toate mesajele din coada de așteptare aparțin unui dialog, care este în prezent în curs de procesare de către un alt Coadă Reader agent. În cazul în care de ceva timp tot nu se încadrează în această situație, componenta Serviciul Broker activează o altă instanță a cererii.

Procedura de activare este pusă în aplicare în diferite moduri în anexe, în funcție de faptul dacă este vorba despre programe care se execută în interiorul bazei de date, sau programele, efectuate în afara bazei de date. Pentru programele care se execută în cadrul bazei de date, componenta de servicii Broker lansează o altă copie stocată procedură coadă dată. Pentru programele care se execută în afara bazei de date, Serviciul Broker creează o componentă a evenimentului de activare. Programul monitorizează evenimentul pentru a determina când trebuie să conectați un alt Queue Reader agent.

Broker Serviciul nu este suspenda executarea programelor care rulează utilizând procedura de activare. Faptul că aplicațiile activate sunt închise automat după o anumită perioadă de timp după ultima lor mesaj a fost primit. Este scris astfel încât cererea crește în mod dinamic și scăderea numărului de copii sale, în funcție de modificările în volumul de trafic care vin la serviciu. Mai mult decât atât, în cazul în care sistemul se închide sau repornește, la momentul re-porni aplicația sistem pentru citirea mesajelor din coada va porni automat.

Sistemele de mesagerie tradiționale nu sunt dotate cu astfel de capacități, și în cursul funcționării lor, există situații în care, la un moment dat pentru o anumită coadă se alocă resurse, fie prea multe sau prea puține.