可以在Phoenix Framework中进行唯一的会话吗?

时间:2018-11-26 00:31:16

标签: elixir phoenix-framework

由于要为同一用户打开两个或多个会话,因此我试图避免与竞争条件作斗争,所以我想为每个打开新用户的用户关闭一个旧用户,而每个用户只打开一个会话。您知道如何以最佳方式实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

我个人认为这将是可怕的用户体验-我不希望应用程序以这种方式“管理”。我希望我可以为一个用户ID进行多个会话。

第二,您需要考虑应用程序水平扩展的可能性,因此需要多个应用程序/ Phoenix服务器。现在,您必须在整个分布式环境中管理“用户”的唯一性。

如果您采用这种策略,那么Phoenix Presence提供了一种管理分布式状态的方法,但是...这些不是原子动作,它们最终是一致的。因此,如果您已经有一个竞争条件,那么它将创建另一个竞争条件。

否则,您正在寻找集中式会话存储,这将意味着Redis实例或某种数据库。

就用户而言,我个人真的不喜欢以您建议的方式运行的网站,因此希望您可以解决竞争问题。