Назад | Перейти на главную страницу

Масштабирование по горизонтали

Я почти ничего не знаю о совместной работе нескольких серверов. Прямо сейчас я экспериментировал с облачными серверами, предлагаемыми из стойки.

Все время, когда люди говорят об этих типах «облачных» серверов, они говорят, что их так легко масштабировать. Теперь легко масштабировать по вертикали. Но я говорю по горизонтали. Я знаю, что с помощью облачных серверов вы можете сохранить образ своего сервера и запустить новый сервер с точно таким же образом. Как использовать более одного сервера? Как вы обеспечиваете целостность базы данных в своем приложении? Люди говорят, что это так просто, как будто вы можете просто добавить пару сюда и взять пару там.

Кроме того, с облачными серверами вы можете масштабировать от 256 МБ до примерно 16 ГБ. В какой момент лучше масштабировать по горизонтали, а не по вертикали? Я предполагаю, что одним узким местом будет диск, и горизонтальное масштабирование было бы лучше, чтобы у вас могло быть больше дисков. Но, может быть, я ошибаюсь, и вы должны масштабировать по вертикали полностью, а затем по горизонтали?

Вы нигде не говорите о характере вашего приложения, но я предполагаю, что это веб-сайт с поддержкой базы данных.

Чтобы получить максимально простую горизонтальную масштабируемость, при разработке необходимо помнить о том, что ничего не разделяют. Это означает, что все содержимое и состояние приложения должны быть статическими (значки, JS, HTML, шаблоны и т. Д.) Или внешними по отношению к вашему приложению (обычно это база данных, хранилище, если вы управляете пользовательскими файлами).

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

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