Проблемы масштабируемости для сложного процесса, требующего приложения php? - PullRequest
1 голос
/ 26 сентября 2010

Привет Рассмотрим несколько ресурсоемкое PHP-приложение, которое интенсивно работает со сложными транзакциями БД и не имеет другого выбора, кроме как иметь достаточно высокие алгоритмы потребления памяти. Например, до 4 МБ памяти на запрос. (В среднем 1 МБ для этих определенных запросов, менее 200 КБ переменных данных для обычных запросов) Очевидно, что мы будем использовать что-то вроде Amazon S3 для размещения наших статических данных, но очевидно, что большая часть нагрузки приходится на динамические части.

Приложение будет работать на нескольких серверах, но как это работает? Делаем ли мы его как обычное приложение, работающее на одном сервере, а дополнительные серверы просто заставят его работать как один большой сервер с огромными объемами памяти и вычислительной мощностью?

Наша проблема в том, что, хотя приложение написано очень модульно, этот процесс заставляет нас иметь все в одной среде. Мы можем разместить базу данных на машине, которая оптимизирована для такого обслуживания, но практически нет возможности разместить разные модули кода самого приложения на разных серверах.

Итак, каковы общие решения для этого?

1 Ответ

0 голосов
/ 26 сентября 2010

Из многих решений масштабируемости можно сделать одну вещь - балансировку нагрузки с запросами.Если вы не можете разместить разные части своих приложений на разных серверах, разместите все приложение, реплицированное на нескольких серверах.

Теперь запрос конечного пользователя не отправляется напрямую на ваш сервер приложений.Вам нужен балансировщик нагрузки (пример: F5 Big IP) между ними.Балансировщик нагрузки определит наиболее оптимальный сервер из пула серверов и перенаправит запрос на этот сервер.Таким образом, добавление / удаление сервера занимает 10-15 минут конфигурации на балансировщике нагрузки.

Как балансировщик нагрузки узнает, какой сервер выбрать?

На каждом сервере запускается скрипт loadBlanacer, который сообщает о загрузке сервера / использовании памяти / количестве процессов и т. Д., В зависимости от того, выбирает ли он сервер

...