Scala / Lift: Требуется ли специальная http-маршрутизация? - PullRequest
3 голосов
/ 01 декабря 2011

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

Как это работает для хостинга в таких местах, как Heroku / Elastic Beanstalk, где балансировщик нагрузки выполняется автоматически для вас службой? Я знаю, если вы настраиваете все свои машины самостоятельно, вы можете настроить маршрутизацию так, чтобы она работала правильно, но как она работает на хостах типа PaaS, где все это должно быть сделано для вас?

РЕДАКТИРОВАТЬ: Google App Engine будет иметь те же ограничения, если я не ошибаюсь?

Ответы [ 2 ]

4 голосов
/ 01 декабря 2011

Heroku будет равномерно распределять запросы между dynos (процессами), поэтому я полагаю, что вам придется использовать некоторую форму сериализации сеансов для приложения Lift с сохранением состояния. Однако я считаю, что в Elastic Beanstalk есть некоторые средства для поддержки этого (как это делает ELB).

Дэвид Поллок пишет о том, как использовать Lift без использования состояния, а также в целом рассказывает о дизайне Lift в этой области здесь .

2 голосов
/ 07 декабря 2011

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

В более широком смысле, эта функциональность «липкого сеанса» может быть достигнута с помощью любого программного обеспечения аппаратной балансировки L4. Возможно, вас заинтересует глава 15 «Подъем в действии», в которой достаточно много времени уделяется обсуждению этой темы и различных стратегий сериализации сеансов, если вы действительно этого хотите.

...