我最近发现了电梯框架,并且已经读到它是有状态的。
因此,如果我在Lift上运行一个高流量网站 - 说一些正在运行需要用户登录的聊天应用程序 - 并且我想要升级我的应用程序,那么这样做会让所有人都无法聊天让他们必须再次登录?
答案 0 :(得分:2)
之前的答案都不正确。 LiftSession中的许多文物都是不可邮寄的,因此无法填入数据库。有两种方法可以对状态应用程序进行rollig升级:
1)会话流血。基本上,你会在其会话结束或X持续时间过去之前完成其中一个部署会话,然后从生产中删除应用程序,同时自动将流量重新路由到另一个Lift实例。 Google正在使用HAProxy进行滚动升级,因为这可以从群集角度帮助您。
2)如果你的状态相当微不足道(大多数是原始风格的类型:整数,字符串等),那么你可以考虑使用ContainerVar / MigratableSession并使用兵马俑或类似的方法聚类状态。这有一系列的限制,因为它然后使用HTTPSession而不是LiftSession。
您可能需要查看Lift in Action的第15章,其中详细介绍了后一种解决方案。
答案 1 :(得分:1)
如果您将状态保留在内存中并重新部署Web应用程序,则该状态将丢失。您可以在重新部署之前将其保存到数据库或文件中,然后从那里读回来。