Хоризонтална скалиране на PHP-приложения

Като сървъри в сигурни центрове за данни в Европа. Open облак VPS / VDS сървър на бърз SSD за 1 минута!

Най-добър уеб хостинг:
- ще предпазят данните от неоторизиран достъп в защитена Европейския център за данни
- ще плати най-малко в Bitcoin.
- Той ще постави вашата дистрибуция

- защита от DDoS-атаки
- безплатно архивиране
- Uptime 99,9999%
- DPC - TIER III
- ISP - етап I

Подкрепа в руските 24/7/365 работи с юридически и физически лица. Сега трябва 24 ядро ​​и 72 Gb RAM. Моля ви!

Нашите конкурентни цени доказват, че най-евтиният хостинг, че не знаеш!

За броени минути, изберете конфигурация, заплати и CMS на VPS е готова.
Връщане на парите - за 30 дни!

Банкови карти, електронни валута през QIWI терминали, Webmoney, PayPal, Novoplat и други.

Задайте въпрос 24/7/365 поддръжка

Намерете отговорите в нашата база данни, както и да отговарят на препоръките на

Оферта от 8host.com

Хоризонтална скалиране на PHP-приложения

Непрекъснато расте броят на посетителите - винаги е голямо постижение за разработчици и администратори. Разбира се, с изключение на тези ситуации, когато движението се увеличава толкова много, че забранява на уеб сървъра или друг софтуер. Постоянните прекъсвания на сайта са винаги много скъпи за компанията.

Но това може да се фиксира. И ако сега си мислиш за мащабиране - вие сте на прав път.

С две думи, скалируемост - способността на системата да се справят с голям обем на трафика и да се адаптират към своя растеж, като същевременно се поддържа необходимата UX. Има два начина за мащабиране:

  • Вертикална (наричан също се преборят): увеличаване на системните ресурси, като например добавяне на паметта и процесорна мощ. Този метод ви позволява бързо да се премахнат проблеми с обработката на трафик, но нейните ресурси са бързо се изчерпали.
  • Хоризонтална (или мащабиране си): добавяне на сървърите в клъстера. Помислете за този метод по-подробно.

Какво е мащабиране?

Казано по-просто, клъстер - група от сървъри. Заредете Balancer - е сървър, който разпределя натоварването между сървърите в клъстера. Във всеки един момент в съществуващата клъстера, можете да добавите уеб сървър, за да се справят с по-голям обем на трафика. Това е същността на хоризонтално мащабиране.

балансьор натоварване е отговорен само за сървъра в клъстера ще се справят с искането. общо взето, тя работи като обратно прокси сървър.

Хоризонтална мащабиране - със сигурност е по-надежден метод за увеличаване на производителността на приложенията, но е трудно да се установи от вертикалната скала. Основното и най-трудната задача в този случай - да се поддържа постоянно всички възли приложения към днешна дата и в синхрон. Да предположим, че потребителят А изпраща заявка към посочили този на сайта, а след това балансьор на товара, който изпраща искане до сървъра 1. След искане на потребителя B ще бъде обработена от сървъра 2.

Какво се случва, ако на потребителя ще направи промени в приложението (например, разтоварване всеки файл или актуализиране на съдържанието на база данни)? Как да прехвърля останалата сървъри в клъстера тази промяна?

Отговорът на тези и други въпроси можете да намерите в тази статия.

Разделяне на сървъри

Подготовка на системата за мащаб изисква отделянето на сървъри; това е много важно, за да сървъри с по-малък обем от ресурси имаше по-малко отговорности от обемисти сървъри. В допълнение, разделението на заявления за такива "части" бързо ще идентифицира критичните елементи.

Да предположим, че имате PHP-приложение, което ви позволява да се удостовери и да качвате снимки. Заявлението се основава на LAMP стека. Снимките се записват на диска, както и връзки към тях - в базата данни. Предизвикателството тук е да подпомогне синхронизацията между множество сървъри на приложения, които споделят данните (качените файлове и потребителски сесии).

За да мащабирате това заявление, което трябва да споделят уеб сървър и сървър за бази данни. По този начин няма да има възли в клъстер, който споделя сървъра на база данни. Това ще подобри работата на програмите, чрез намаляване на натоварването на уеб сървъра.

В бъдеще, можете да конфигурирате балансиране на натоварването; Можете да прочетете за това в наръчника "Балансиране на натоварването с помощта на MySQL HAProxy»

заседателен последователност

Разделяне на уеб сървъра и базата данни, трябва да се съсредоточи върху обработката на потребителски сесии.

Релационни бази данни и мрежови файлови системи

Тези сесии често се съхраняват в релационни бази данни (като MySQL), защото тя е такава база данни е лесен за конфигуриране.

Това решение обаче не е най-надеждни, тъй като в този случай натоварването се увеличи. Сървърът трябва да направи до базата данни на всеки да чете и пише на работа за всяка заявка, както и в случай на рязко покачване на база данни на движението, като правило, се откаже, преди други компоненти.

Мрежа на файловата система - още един лесен начин за съхранение на данни; без да е необходимо да се направят промени в база данни източник код, обаче, системата на мрежата е много бавен I / O операции дръжка, и това може да окаже негативно влияние върху производителността на приложенията.

лепкави сесии

Sticky сесии се реализират на балансьор натоварване, и не изискват никакви промени в nodah за кандидатстване. Това е най-удобният начин на работа с потребителски сесии. балансьор натоварване ще продължи да насочва потребителя на същия сървър, което премахва необходимостта да се разпределят сесии на данни между други възли в клъстера.

Това решение обаче също има един сериозен недостатък. Сега, не само на балансьор натоварване разпределя натоварването, имаше появи допълнителна задача. Това може да се отрази на работата му и да доведе до катастрофа.

Сървъри Memcached и Redis

Можете също да конфигурирате един или повече допълнителни сървъри за обработка на сесия. Това е най-сигурният начин за решаване на проблемите, свързани с лечение сесии.

Memcached и Redis - е изключително бърз съхранение "ключ-стойност", която да ви позволи да обработва PHP сесия. С инсталирането на един от тези сървъри, трябва да се отвори достъп до тях за останалата част от клъстера на сървъра, а след това на клъстера ще бъде в състояние да използват този сървър като манипулатор сесия. Също така, за тази конфигурация, трябва да инсталирате специален разширение PHP и промените настройките на php.ini.

Повече информация можете да намерите в официалната документация и ръководство за PHP.

последователност файлове

На този етап, трябва да се намери начин да се подкрепи съгласуваност на качените файлове, тъй като те могат да се съхраняват на някой от възлите в клъстера.

Този проблем може да бъде решен по няколко начина. Например, може да се използва GlusterFS. инструмент, който създава хранилище за споделяне, дублира всички сваленото съдържание.

Можете също така да приложат съхранение обект; тя може да бъде петно ​​съхранение или облак съхранение. Въпреки това, това решение ще направи много промени в базата данни източник.

балансиране на натоварването

Окончателно действие

Увеличаване на дейностите по прилагане на първо изглежда много сложни и объркващи решение, но то помага за премахване на сериозните проблеми с трафика. Основното нещо - да се научат да работят с стабилизатор натоварване да се знае кои компоненти изисква допълнителна конфигурация.

Мащабиране и производителност на приложенията е много тясно свързан. Разбира се, мащабът не е необходимо за всички приложения и сайтове. Все пак по-добре е да се мисли за това по-рано, че е желателно да се разработват повече приложения.