Modelul cu setul de servicii a certificatelor de încredere
Model de subsistem de încredere (sau server proxy)
Modelul cu setul de servicii a certificatelor de încredere
Verticală și scalarea orizontală
Abordarea punerii în aplicare a scalarea este un aspect critic al designului. Indiferent dacă aveți de gând să efectuați orizontală
scalarea soluții folosind echilibrarea încărcării cluster sau o bază de date partiționată, design-ul ar trebui să ofere sprijin pentru opțiunea selectată. Există două tipuri de bază de scalabilitate: în poziție verticală (bloc mare) și
orizontale (mai multe unități).
Pentru scalare verticală de sprijin ridicat de sarcină este asigurată prin introducerea unor echipamente suplimentare în serverele existente, cum ar fi procesoare, memorie și NIC-uri (carduri de interfață de rețea, NIC). Această versiune simplă nu se adaugă la costul de service si suport, dar poate fi rentabil numai până la un punct. Cu toate acestea, rămâne întotdeauna o posibilitate de eșec, care este riscul. În plus, introducerea de echipamente suplimentare în serverele existente oferă rezultatele dorite nu este infinit, și obținerea ultimelor 10% din productivitatea evaluat creșterea capacității de un singur calculator poate fi foarte costisitoare.
Cu scalare orizontală adăuga mai multe servere și soluții utilizate cu echilibrarea încărcării și gruparea. În plus față de posibilitatea de a prelucra o sarcină mai mare, scalarea înmoaie efectele defecțiuni ale echipamentului. În cazul în care un singur server nu reușește, alte servere din cluster preia volumul său de muncă. De exemplu, aplicațiile strat de prezentare și la nivel de afaceri pot fi găzduit pe mai multe servere web cu load balancing, formând o fermă de web. Sau, puteți separa fizic logica de afaceri a aplicației și să-l utilizați pentru a separa sarcină echilibrată media, dar în același timp, pentru a plasa nivelul de reprezentare la echilibrarea sarcinii la nivel extern. În cazul în care cererea este limitată de I / O și trebuie să mențină o bază de date foarte mare, acesta poate fi distribuit pe mai multe servere de baze de date multiple. De obicei, capacitatea de aplicare scalată pe orizontală mai depinde de arhitectura decât cea a infrastructurii de bază.
Întrebări scalare verticală
scalare verticală prin puterea de procesare sporită și o capacitate sporită de stocare poate fi o soluție eficientă de cost. De asemenea, în această abordare nu este nevoie de costuri suplimentare de administrare, deoarece scala în legătură cu utilizarea fermelor Web si clustering. În primul rând, ar trebui să ia în considerare opțiunile de scalare pe verticală și de testare de performanță conduită pentru a se asigura că soluțiile verticale de scalare nu corespunde criteriilor specifice și scalare asigură un nivel acceptabil de performanță pentru numărul dorit de utilizatori simultani. Avem nevoie de a dezvolta un plan de adaptare a sistemului, care va reflecta perspectivele sale de creștere.
Proiectarea cu suport de scalare orizontală
Dacă scară largă a soluțiilor nu furnizează masshtabirumostyu necesară pentru atingerea unor valori limită pentru CPU, I / O sau memorie, este necesar să se efectueze scalarea și să introducă servere suplimentare. Pentru a asigura proiectarea de utilizare efectivă în aplicare scalarea orizontală următoarele practici:
destinații înguste identificarea și scalarea orizontală. De multe ori strangulare este slab resurse partajate scalabile în direcția verticală. De exemplu, există o singură instanță a SQL Server, care rulează mai multe servere de aplicații. În acest caz, separarea datelor în așa fel încât să poată fi deservite de mai multe instanțe ale SQL Server, va permite soluții scale-out. Dacă există posibilitatea ca gâtuire va fi serverul de baze de date, luați în considerare compartimentarea datele în proiectarea, acesta va salva o mulțime de probleme în viitor.
Legat și design slab multi-stratificat. legat de design stratificat cu slab interfețe clare, care pot fi utilizate de la distanță, este mai ușor de scară orizontală decât design-ul folosește în strânsă legătură cu strat cu interfețe detaliate. Design-ul multi-strat va avea punctul de diviziune naturală, făcându-l ideal pentru scalarea niveluri chenarele orizontale. Principalul lucru este de a identifica în mod corect limitele. De exemplu, logica de afaceri mai ușor de a transfera la aplicațiile de servere cu echilibrarea încărcării de nivel mediu.
Compromisuri și consecințele deciziei lor
Se va aprecia aspectele legate de scalabilitate, care pot fi diferite pentru diferite straturi sau niveluri de tipuri de date. Identificarea compromisurile necesare va permite să vadă în ce aspecte ale flexibilității acolo, și ceea ce nu este. În unele cazuri, scara verticală cu scalarea orizontală ulterioară folosind un server web sau server de aplicație nu este cea mai bună abordare. De exemplu, puteți seta 8 server de procesor, dar din motive de economie, cel mai probabil, în loc de un server de mare va utiliza mai multe servere mai mici.
Pe de altă parte, în anumite situații, în funcție de rolul și utilizarea datelor, scalare verticală, urmată de scalarea orizontală poate fi o abordare optimă pentru serverele de baze de date. Cu toate acestea, posibilitatea de echilibrare a sarcinii și failover nu sunt infinite, iar numărul de servere care pot fi acoperite de aceste procese este limitat. Este, de asemenea, influențată de alte aspecte, cum ar fi separarea bazei de date. În plus față de aspectele tehnice și probleme de performanță, nu trebuie să uităm despre operarea și gestionarea și costul total al întregului sistem.
Ca o regulă, optimizarea prețurilor și a performanței în cadrul impus de toate celelalte restricții. De exemplu, folosind patru 2-way web
serverul server / aplicație poate fi cea mai bună opțiune în ceea ce privește prețul și performanța în comparație cu utilizarea a două servere cu patru procesoare. Cu toate acestea, trebuie luate în considerare și alte constrângeri, cum ar fi numărul maxim de servere care pot fi plasate într-o anumită infrastructură de încărcare de echilibrare, precum și consumul de energie sau zona prevăzută în centrul de date.
Pentru punerea în aplicare a fermelor de servere și pentru a găzdui serverele virtualizate pot utiliza serviciul. Această abordare va ajuta să găsească echilibrul optim de performanță și a costurilor, asigurând în același timp utilizarea la maximum a resurselor și randamentul investițiilor.
componente apatride
Aplicarea componentelor fără stare de economisire (nu reține componentele de stat intermediare, care pot fi implementate într-o aplicație web client-side) înseamnă capacitatea de a crea un design cu cele mai bune caracteristici atât pentru scalare orizontală și verticală. Pentru constiinta de design apatridă trebuie să facă mai multe compromisuri, dar beneficiile oferite acestora în ceea ce privește scalabilitate, de obicei, mai importante decât orice posibile dezavantaje.
Partiționarea și baza de date
În cazul în care aplicația funcționează cu o bază de date foarte mare, și există temeri că operațiunea I / O va deveni gâtuire a sistemului, în avans partiționarea bazei de date contemplati. partiționarea bazei de date în etapele ulterioare ale proiectului necesită, de obicei, un design complet de baze de date redesign și, în consecință, pe scară largă schimbă tot codul aplicației. Partiționarea oferă mai multe avantaje, inclusiv posibilitatea de a trimite toate cererile de o secțiune (astfel, utilizarea resurselor este limitată la numai o parte a datelor), precum și posibilitatea de a utiliza o multitudine de secțiuni (astfel, realizat cea mai bună funcționare simultană posibilă și performanța excepțională prin extragerea datelor dintr-o multitudine de discuri) .
Cu toate acestea, în unele situații, prezența unor secțiuni multiple poate avea consecințe negative. De exemplu, unele operațiuni de a efectua mai eficient de date, concentrate pe o singură unitate.
Acceptate în scenarii de implementare, o decizie privind împărțirea depozitul de date este determinată în mare măsură de tipul de date. Luați în considerare factori importanți:
Date de referință static este read-only. Pentru acest tip de date pot fi menținute pentru mai multe copii îmbunătăți cu ușurință performanța și scalabilitate pe diferite unități care urmează să fie plasate în locuri adecvate. Acesta are un impact minim asupra proiectării și de optimizare este de obicei considerente definite. Combinarea mai multor baze de date în mod logic separate și independente pe un server de baze de date, chiar dacă permite cantitatea de spațiu pe disc, care poate fi o soluție rea, și postarea copii ale datelor mai aproape de utilizatori pot fi la fel de abordare acceptabilă. Cu toate acestea, nu trebuie să uităm că orice
replicare impune utilizarea unor mecanisme care să asigure sincronizarea sistemului.
Dinamic (de multe ori în schimbare) sektsioniruemye cu ușurință date. Aceste date referitoare la un anumit utilizator sau o sesiune, cum ar fi un sistem de e-commerce coș de cumpărături, în cazul în care datele de utilizator A nu sunt conectate cu datele B. utilizator să gestioneze aceste date un pic mai complicate decât datele statice numai de citire, dar ele sunt destul de ușor de a optimiza și de a distribui deoarece acestea pot fi separate. Nu există dependențe între grupuri de până la utilizatorii individuali. O caracteristică importantă a acestor date este că nu există o cerere este făcută pentru toate secțiunile: Un utilizator a solicitat conținutul coșului, dar nu toate coșuri care includ un anumit produs. Vă rugăm să rețineți, în cazul în care solicitările ulterioare pot fi trimise la un alt server de server Web sau o aplicație, aceste servere trebuie să poată accesa secțiunea relevantă.
Date de bază. Acest caz de bază a aplicării scalarea verticale și scalarea orizontală a urmat. De obicei, acest tip de date REPLICATED nu este de dorit din cauza complexității de sincronizare a acestora. Solutia clasica pentru o astfel de date - pentru a limita capacitățile de scalare verticală (în mod ideal păstra instanța logică unică a unui cluster corespunzător) și aplicarea de partiționare și de distribuție numai în cazul în care scara orizontală este valabilă numai pentru acest lucru. Progrese și realizări în tehnologii de baze de date, cum ar fi punctele de vedere, distribuite partiționate partiționarea mult simplificată, cu toate acestea, ar trebui să fie folosit numai atunci când este absolut necesar. Prea mult dimensiunea bazei de date este rareori un factor decisiv în decizia, mult mai des este dominat de alte considerente, cum ar fi cine deține datele, distribuția geografică a utilizatorilor, apropierea de client și accesibilitatea.
Datele decalate de sincronizare. Unele dintre datele utilizate în aplicațiile nu necesită o sincronizare imediată, sau de sincronizare la toate. Un exemplu foarte bun - magazine astfel de date on-line, cum ar fi „Cu marfa X cumpăra de multe ori Y și Z». Aceste date sunt derivate din datele de bază, dar nu trebuie să fie actualizate în timp real. strategii de proiectare pentru traducerea datelor din majore în sektsioniruemye (dinamic) și apoi la static, este un factor cheie în construirea de aplicații extrem de scalabile.