如果我想将Play Framework应用程序部署到多个服务器,我该怎么办?

时间:2015-04-14 09:50:12

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

如果我想使用Play Framework 2.x将我的应用程序部署到多个服务器,那么我需要关注的是什么?

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

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

1 个答案:

答案 0 :(得分:3)

将Play应用程序投入生产时,应该检查以下步骤:

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

全部......

所以回答你的其他观点:

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

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

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

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