Вопрос

Это то, о чем я всегда задавался вопросом.Я понимаю, что горизонтальное масштабирование подразумевает добавление большего количества машин.Но я могу придумать два подхода к этому.Предположим, у меня есть 20 серверов, которые я хочу использовать (плюс база данных).Я могу:

  1. Заставьте все 20 серверов работать как серверы приложений.
  2. Заставьте разные серверы выполнять разные части задачи.Например, пусть один набор серверов обрабатывает запрос, другой — для применения бизнес-логики, а затем третий — для вызова базы данных.

Номер 1 кажется более распространенным и более простым для понимания, но номер 2 считается «лучшей практикой» (поскольку в основном это n-уровневая архитектура).Как сделать выбор между этими двумя моделями?И каковы плюсы и минусы каждого подхода?

Это было полезно?

Решение

Это зависит от задачи и того, какие у вас узкие места.

Почти без исключения вам понадобятся как минимум два типа серверов:1) Приложение и 2) База данных.Если вы распределяете серверы приложений, вам все равно необходимо синхронизировать данные между ними, сделав один из этих серверов (или отдельный сервер) вашим сервером базы данных.

Если вы знаете, что база данных не будет подвергаться большому трафику (например:у вас есть сайт на основе живого чата, и постоянно хранится или синхронизируется не так уж много данных), тогда вариант ничего не создавать, кроме серверов приложений, может быть подходящим.

Однако вариант №2 лучше для большинства сайтов, особенно если вы заранее не знаете, какие серверы станут узкими местами.Если вы не позволите масштабировать каждый тип сервера, вам придется переписывать исходный код во время неожиданных всплесков роста.Тогда вам придется принимать трудные решения, например: «Какие функции нам следует отключить, чтобы сайт продолжал работать, пока мы работаем над масштабированием?»

Однако, честно говоря, я бы не стал тратить слишком много времени на беспокойство по поводу масштабируемости.Как только вы достигнете точки, когда нагрузка на ваш сервер станет слишком высокой, вы сможете позволить себе некоторые перезаписи исходного кода.Либо за счет недавно обнаруженных источников финансирования, либо за счет прямой прибыли с сайта. Дело в точке:Twitter по-прежнему преуспевает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top