deployment - Play Framework应用部署到多台服务器怎么办?

标签 deployment playframework playframework-2.0 load-balancing web-deployment

如果我想使用 Play Framework 2.x 将我的应用程序部署到多个服务器,我需要注意哪些事项?

  1. 如果我使用(内置) session ,它是否对所有节点可用,因为它们存储在浏览器端?

  2. 除了将变量存储在数据库中之外,我如何在应用程序范围内共享变量?

最佳答案

将 Play 应用程序投入生产到多个服务器节点时,您应该检查以下步骤:

  • 确保应用程序 secret (对 session cookie 进行加密和签名)在每个节点上都是相同的,因为您无法将 HTTP 响应发送到哪个节点。
  • 确保您没有使用内置缓存系统 (ehcache) 来存储用户特定信息(因为缓存存储在服务器的内存中)。

就这样吧

所以回答你的其他观点:

  1. 如果您正在使用(内置) session ,则存储在 session cookie 中的信息将可供每个服务器节点使用(因为它来自客户端)。请记住,在某些旧浏览器 (IE6) 中,cookie 的大小限制为 4kb,因此请注意您在 session 中输入的信息量。
  2. 如果您想共享其他应用程序范围的变量:

    • 如果信息是特定于用户的,您还可以将它们存储在 session 或另一个 cookie 中。例如,如果您想保存当前用户的主题:response().setCookie("theme", "blue");。然后您可以使用 Http.Request.current().cookies.get("theme") 检索存储的信息。您可以深入了解 play sessions and cookie .

    • 如果您想在多个节点之间共享其他变量,则必须使用分布式缓存解决方案,例如 memcached或者,您建议的数据库。

如果尚未完成,您应该查看 how to deploy play to production

关于deployment - Play Framework应用部署到多台服务器怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29624216/

相关文章:

java - 如何在运行时更新 Java 应用程序的库?

java - Play Framework : How to create & use connection pool?

java - Play Framework 中的发布请求中的表单值为null

android - 自定义 QML 模块部署到 Android : QML dependencies missing

maven - [错误]无法执行目标org.apache.maven.plugins :maven-deploy-plugin:2. 7:部署

java - JBoss AS 7 不接受远程连接

playframework - Play Framework 2.3 如何重置数据库?

java - 使用 CompletableFutures 和 java 时的 PlayFramework 自定义执行程序

playframework - 如何在非 Play 应用程序中使用 Play Framework 配置库命令行参数

斯卡拉 + Play : how to pass a parameter into a route in a template?