Какие правила следует соблюдать, чтобы обеспечить масштабируемость? - PullRequest
0 голосов
/ 28 апреля 2011

Клиент часто настаивает, чтобы я удостоверился, что любые веб-сайты, которые я разрабатываю для него, предназначены для масштабируемости и более высокой производительности. Мне интересно, что это на самом деле означает, с практической точки зрения. Что я должен сделать, чтобы выполнить это требование? В основном я создаю веб-приложения с использованием PHP / MySQL / AJAX.

Ответы [ 5 ]

4 голосов
/ 28 апреля 2011

Безгражданство!

(АКА: ничего не делиться).

Позвольте мне объяснить: чтобы ваше приложение могло легко обрабатывать больше трафика, вам нужно иметь возможность легко добавлять больше "штуковин" (сервлеты / серверы / процессоры / обработчики / респонденты точно определяют терминологию, определяемую используемой вами технологией) , Чтобы это работало, эти сервлеты не могут предполагать, что они всегда будут видеть запросы от одного и того же пользователя (если у вас много идентичных сервлетов, данный запрос может в конечном итоге оказаться в каждом из них). Таким образом, сервлет не может «запомнить» что-либо из предыдущего запроса. Все данные, относящиеся к текущему запросу, должны быть частью самого запроса.

1 голос
/ 22 мая 2011

Безгражданство огромно, как отметил Итай. Планируйте масштабировать OUT, а не UP, когда это возможно. Слабая связь облегчает и буферизует путь к масштабируемости. При необходимости используйте параллелизм, будь то параллельное выполнение на серверах или многопоточность в рамках одного процесса или службы. Избегайте слишком больших нагрузок на сервер (ы) БД. Рассмотрим стратегии разделения / разбиения. По возможности используйте кэширование.

Также обратите внимание: масштабируемость! = Доступность. Если есть проблема с доступностью, необходимо решить и другие проблемы.

Еще одно замечание: приборостроение! Инструмент / настраиваемый лог / настраиваемый трек ВСЕ! Если вы не можете получить подробную информацию о поведении компонента вашей системы, масштабирование становится более сложным и более дорогим. Теперь это не означает, что вы должны запустить свою производственную систему с запущенным кодом трассировки ввода / вывода, но это означает, что вы должны убедиться, что у вас нет пробелов, и устранять их по мере их обнаружения, иначе вы будете гоняться за хвостом и исправление неправильных проблем.

1 голос
/ 29 апреля 2011
Масштабируемость

означает, что ваше веб-приложение будет вести себя при увеличении количества пользовательских запросов на вашем сервере.В большинстве случаев базовые тесты, которые вы запускаете, могут не указывать на реальность, с которой столкнется веб-приложение.Так что тестируйте производительность вашего приложения в нормальных и больших масштабах.Несколько вещей, которые могут помочь вам увеличить масштаб: 1. Постарайтесь свести к минимуму точки вашего кода, которые блокируют.2. Используйте памятку (кэш-прокси) для дорогих вычислений, которые можно искать вместо пересчета, если это возможно.3. используйте клиентский кеш при необходимости.(например, это возможно в приложениях flex, actionscript). 4. Оптимизируйте базовую функциональность для обработки большего ввода.

масштабируемость также может быть связана с аппаратным обеспечением, емкостью хранилища дБ для обработки большого ввода.

1 голос
/ 28 апреля 2011

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

1 голос
/ 28 апреля 2011

Создайте свои приложения, чтобы они подходили для балансировки нагрузки на нескольких серверах и, возможно, даже на нескольких сайтах.Я не уверен, каковы меры предосторожности PHP для этого;для приложений на основе Java это означает строгое следование рекомендациям Enterprise Environment.

...