У меня есть вопрос о Tomcat/jBOSS и других серверах приложений Java. Где хранятся сеансы (данные сеанса)?
По умолчанию, я бы сказал в памяти. Подробности на самом деле ... детали реализации, которые специфичны для сервера приложений.
В PHP сессии обычно хранятся в базе данных, что означает, что вы можете легко обмениваться данными сеанса в среде с балансировкой нагрузки. В Tomcat и других серверах приложений сессия, по-видимому, хранится в памяти по умолчанию, которая не будет применяться в среде с балансировкой нагрузки.
Ну, не совсем. Это означает, что запрос клиента должен быть отправлен на тот же узел в кластерной среде (это называется «липкость сеанса»), и это не проблема с точки зрения балансировки нагрузки. Но это проблема с точки перехода на другой ресурс: в случае отказа узла в кластере состояние сеанса, управляемое узлом, может быть потеряно. Чтобы решить эту проблему, почти все поставщики серверов приложений реализуют переход на спящий режим (используя различные механизмы, такие как репликация в памяти, постоянство на основе JDBC и т. Д.). Но, опять же, детали реализации являются специфичными для сервера приложений. См. Например, как Tomcat или WebLogic справиться с этим. Очень интересным является также статья Under the Hood of J2EE Clustering на стороне сервера.
Хотя верно, что PHP хранит сеансы в файлах по умолчанию, для его подключения к базе данных требуется несколько строк. То же самое верно для серверов приложений?
Как я уже сказал, не все серверы приложений будут предлагать настойчивость на основе JDBC. После этого, и чтобы ответить на ваш вопрос, конфигурация в целом проста, когда они это делают. Но использование базы данных на самом деле не является предпочтительным решением (на самом деле, я вообще избегаю его).
В принципе, какие плюсы для сессий рассказов в памяти? Является ли эта стандартная практика для серверов приложений?
Просто: выступление! Сериализация данных, вызов базы данных, запись на диск, все это имеет стоимость. Репликация в памяти, очевидно, позволяет избежать некоторых накладных расходов. Но у него есть и некоторые ограничения. Например, он не разрешает WAN HTTP Session State Replication с WebLogic. Но хорошо, это мало кому нужно :)
Это было очень полезно. Спасибо. – frio80
@ frio80 Добро пожаловать! Кстати, общий способ распознавания хорошего ответа - это его поддержка ;-) –