Я создаю веб-приложение Python / Pylons, которое до сих пор обслуживалось одним сервером, Теперь я хочу исследовать, как он будет масштабироваться среди нескольких серверов с каким-то балансировщиком нагрузки впереди.
Основное беспокойство вызывает состояние на стороне сервера, конечно. Он включает в себя данные сеанса пользователя, данные, загруженные пользователем (изображения и т.п.), и кэш. Я хочу, чтобы серверы приложений разделяли кеш, поэтому одному серверу не нужно выполнять дополнительную работу, если другой уже сделал это. Масштабирование, вероятно, не будет проблемой в ближайшее время, но это кажется большим архитектурным решением, так что лучше вначале сделать его полу-правильным.
Для сессий я мог бы использовать сессии на основе файлов cookie: http: //beaker.groovie.org/sessions.html#cookie-based
для загруженных пользователем данных и кеша (оба в настоящее время хранятся в локальной файловой системе) мне нужен другой подход, и я не уверен, какой из них будет наилучшим , Некоторые из вариантов, которые я рассмотрел:
В настоящее время я рассматриваю возможность использования NFS - это, кажется, самое простое решение, которое может возможно работа. Но опять же, может быть, есть еще предостережения, о которых я не знаю, принимая это близорукое решение? Каков ваш опыт, какие формы хранения и обмена данными вы использовали для приложений, размещенных в облаке и которые, как ожидается, будут масштабироваться горизонтально?
кэширование легко выполняется с помощью стандартного кэширования мемов, которое может быть распределены по нескольким серверам. NFS звучит как плохая идея, поскольку вам нужно будет реализовать свой собственный механизм блокировки, чтобы избежать состояний гонки. Я бы выбрал одно из распределенных решений без sql, например cassandra.