2012-03-27 4 views
1

Я часто слышал, что развертывание традиционного монолитного приложения Rails (т. Е. Никакого внутреннего веб-API, без очереди сообщений, без сервера Redis/memcached) на несколько серверов может вызвать множество ошибок, которые очень трудно отлаживать, но я с трудом придумывают некоторые конкретные примеры, несмотря на несколько часов прибегая к помощиПроблемы с развертыванием серверов рельсов на несколько хостов

некоторые очевидные проблемы, которые я могу думать, являются:

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

Сессии - вероятно, нужно будет хранить их в базе данных, которая нуждается в ее собственном хосте

Кэши - любые подметальные машины будут иметь проблемы, распространяющие недействительности между серверами.

Кто-нибудь еще должен внести свой вклад? Я бы очень признателен за любые статьи, которые могут возникнуть у других, или просто общая мудрость :)

ответ

0

Наблюдатели - это только обратные вызовы кода. Они запускаются на каждом процессе на каждом сервере.

Сессии по умолчанию хранятся в хранилище файлов cookie в течение последних нескольких лет. Так много серверов не проблема. Если у вас недостаточно места в вашем файле cookie, я предлагаю вам сделать что-то неправильно.

Кэш-аннулирование действительно является проблемой. Но это всегда так. Одним из решений является разбиение вашего кэша на автономный сервис. Сайты, подобные Facebook, имеют гигантские фермы memcache

Я думаю, что масштабирование и кластеризация всегда являются трудной проблемой. Но это, похоже, старый аргумент против рельсов. Если что-нибудь за последние несколько лет увидело, что в этом отношении сияют рельсы. С ec2, nosql и сервером автоматизация становится довольно нормой в сообществе.

+0

Да, я полностью верю, что Rails не может справиться с проблемой, я просто работаю с устаревшим приложением Rails 2.3 прямо сейчас и пытаюсь убедить других людей в том, что они предпринимают детские шаги для масштабирования :) – Kabal458

+0

Наблюдатели имеют смысл - проблема возникнет когда вы ожидаете, что наблюдение будет происходить на каждом сервере - кэширование - хороший пример этого, но это еще одна проблема. Сессия Я не полностью понимаю. Я полагаю, вы говорите, что все данные сеанса полностью хранятся в файле cookie, что является отличной причиной для обращения к хранилищу DB на своем собственном. Я предполагаю, что это сломается, если вы используете что-то вроде FileStore. – Kabal458

+0

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

Смежные вопросы