scalare orizontală php-aplicații

Având servere în centre de date sigure din Europa. Deschideți nor VPS server / VDS pe un SSD rapid în 1 minut!

Cel mai bun Web Hosting:
- va proteja datele împotriva accesului neautorizat într-un centru european de date securizat
- va plăti cel puțin în Bitcoin.
- Acesta va pune distribuție

- protecție împotriva atacurilor DDoS-
- gratuit de backup
- Uptime 99,9999%
- DPC - TIER III
- ISP - NIVELULUI I

Suport în 24/7/365 rusă lucra cu persoane juridice și persoane fizice. Ai nevoie de acum 24 de bază și 72 GB RAM. Vă rog!

Tarifele noastre competitive dovedesc că cele mai ieftine de găzduire pe care nu a știut!

O chestiune de minute, selectați configurația, să plătească și CMS pe un VPS este gata.
Bani Înapoi - 30 de zile!

Carduri bancare, moneda electronică prin intermediul unor terminale QIWI, Webmoney, PayPal, Novoplat și altele.

Pune o intrebare 24/7/365 Suport

Găsiți răspunsurile în baza noastră de date, și să respecte recomandările din

Oferta de la 8host.com

scalare orizontală php-aplicații

Numărul tot mai mare de vizitatori - întotdeauna o mare realizare pentru dezvoltatori și administratori. Desigur, cu excepția acelor situații în care traficul crește atât de mult încât dezactivează serverul de web sau alt software. întreruperi constante ale site-ului sunt întotdeauna foarte costisitoare pentru companie.

Dar este fixable. Și dacă acum te gândești la scalarea - sunteți pe drumul cel bun.

Într-un cuvânt, scalabilitate - capacitatea sistemului de a gestiona un volum mare de trafic și să se adapteze la creșterea acesteia, menținând în același timp UX necesar. Există două metode de zoom:

  • Verticală (de asemenea, numit scalare în sus): creșterea resurselor de sistem, cum ar fi adăugarea de memorie și putere de procesare. Această metodă vă permite să elimine rapid problemele cu prelucrarea traficului, dar resursele sale sunt epuizate rapid în sine.
  • Orizontală (sau scalarea): adăugarea serverele din cluster. Luați în considerare această metodă mai detaliat.

Ce este scalarea?

Pur și simplu pune, de cluster - un grup de servere. Egalizatorul de încărcare - este un server care distribuie volumul de muncă între serverele din cluster. În orice punct din cluster-ul existent, puteți adăuga un server Web pentru a gestiona un volum mai mare de trafic. Aceasta este esența scalare orizontală.

Echilibrist de sarcină este responsabil doar pentru un server din cluster va gestiona cererea. Practic, acesta funcționează ca un server proxy invers.

scalarea orizontală - cu siguranță o metodă mai sigură de a crește performanța aplicațiilor, dar este dificil să se stabilească decât scara verticală. Sarcina principală și cea mai dificilă în acest caz - pentru a menține în mod constant toate aplicațiile nod la zi și de sincronizare. Presupunem că utilizatorul A trimite o cerere către site-ul mydomain.com, apoi trimite sarcină balancer cerere către server 1. Apoi, cererea utilizatorului B va fi procesată de către serverul 2.

Ce se întâmplă dacă utilizatorul A va face modificări la cererea (de exemplu, descărca orice fișier sau actualiza conținutul unei baze de date)? Cum de a transfera această schimbare servere rămase în cluster?

Răspunsul la aceste și alte întrebări pot fi găsite în acest articol.

Separarea serverelor

Pregătirea sistemului la scară necesită separarea serverelor; este foarte important pentru servere cu un volum mai mic de resurse au avut mai puține responsabilități decât serverele voluminoase. În plus, divizia de aplicații pentru astfel de „piese“ va identifica rapid elementele sale critice.

Să presupunem că aveți un PHP-aplicație care vă permite să autentifice și să încarci fotografii. Cererea se bazează pe stiva LAMP. Fotografiile sunt salvate pe disc, și link-uri pentru a le - în baza de date. Provocarea aici este de a sprijini sincronizarea între servere de aplicații care au aceleași date (fișiere încărcate și sesiuni de utilizator).

Pentru a scala această aplicație aveți nevoie pentru a partaja server de web și serverul de baze de date. Astfel, vor exista noduri într-un cluster care au în comun un server de baze de date. Acest lucru va crește performanța aplicațiilor, prin reducerea sarcinii pe serverul de web.

În viitor, puteți configura echilibrarea încărcării; Puteți citi despre acest lucru în manualul „Echilibrarea sarcinii folosind MySQL HAProxy»

coerența sesiune

Împărțind serverul web și baza de date, va trebui să se concentreze pe prelucrarea sesiuni de utilizator.

Bazele de date relaționale și sisteme de fișiere de rețea

Aceste sesiuni sunt adesea stocate în baze de date relaționale (cum ar fi MySQL), pentru că este o astfel de bază de date este ușor de configurat.

Cu toate acestea, această soluție nu este cel mai de încredere, pentru că în acest caz, sarcina crește. Serverul trebuie să facă la baza de date de fiecare operațiune de citire și scriere pentru fiecare cerere, iar în cazul unei creșteri accentuate a bazei de date de trafic, de regulă, înainte de a refuza alte componente.

sistem de fișiere de rețea - o altă modalitate ușoară de a stoca date; fără a fi nevoie de a face modificări la codul sursă de bază de date, cu toate acestea, sistemul de rețea este mâner foarte lent operatiile I / O, iar acest lucru poate avea un impact negativ asupra performanței aplicației.

sesiuni de lipicioase

sesiuni lipicioase sunt realizate pe balansier de sarcină, și nu necesită nici o modificare a nodah de aplicare. Aceasta este metoda cea mai convenabilă de manipulare sesiuni de utilizator. Echilibrist de sarcină va continua să ghideze utilizatorul pe același server, eliminând necesitatea de a distribui sesiuni de date între alte noduri din cluster.

Cu toate acestea, această soluție are, de asemenea, un dezavantaj serios. Acum, nu numai de sarcină distribuie balancer sarcina, a avut apare sarcina suplimentară. Acest lucru poate afecta performanțele sale și să conducă la un accident.

Servere Memcached și Redis

Puteți configura, de asemenea, unul sau mai multe servere pentru manipularea sesiune. Acesta este modul cel mai fiabil pentru a rezolva problemele asociate cu sesiunile de tratament.

Memcached și Redis - este extrem de rapid de stocare „cheie-valoare“, care vă permit să proceseze PHP sesiune. Prin instalarea unuia dintre aceste servere, aveți nevoie pentru a deschide accesul la ele pentru restul cluster de server, atunci clusterul va fi capabil de a utiliza acest server ca un handler sesiune. De asemenea, pentru această configurație, trebuie să instalați o extensie specială PHP și modifica setările php.ini.

Mai multe informații pot fi găsite în documentația oficială și manualul PHP.

fișiere de consistență

În această etapă, aveți nevoie pentru a găsi o modalitate de a sprijini coerența fișierelor încărcate, deoarece acestea pot fi stocate pe oricare dintre nodurile din cluster.

Această problemă poate fi rezolvată în mai multe moduri. De exemplu, se poate folosi GlusterFS. un instrument care creează un depozit pentru partajare, duplicarea tot conținutul descărcat.

Puteți pune în aplicare, de asemenea, de stocare obiect; acesta poate fi un BLOB-depozitare sau stocare cloud. Cu toate acestea, această decizie va face o mulțime de schimbări în baza de date sursă.

echilibrarea încărcării

acțiunea finală

Scalarea din cererea la prima vedere pare o soluție foarte complicat și confuz, dar ajută la eliminarea problemelor grave cu trafic. Principalul lucru - să învețe să lucreze cu un stabilizator de încărcare să știe ce componente necesită configurare suplimentară.

Scalare, și performanța de aplicare este foarte strâns legată. Desigur, scara nu este necesară pentru toate aplicațiile și site-uri. Cu toate acestea, este mai bine să se gândească în avans, este de dorit să mai multe aplicații în curs de dezvoltare.