我试图找出下面的查询是否可以安全地用于以下情况:
我需要生成序号,没有间隔。由于需要跟踪许多记录,因此我有一个表,其中包含序列记录和序列整数列。
为了获得下一个序列,我将触发下面的SQL语句。
WITH updated AS (
UPDATE sequences SET sequence = sequence + ?
WHERE sequence_id = ? RETURNING sequence
)
SELECT * FROM updated;
Run Code Online (Sandbox Code Playgroud)
我的问题是:当多个用户在不显式启动事务的情况下同时在数据库中触发此查询时,下面的查询是否安全?
注意:第一个参数通常为1,但也可以为10,例如,以获取10个新序列号的块
postgresql concurrency multithreading race-condition transaction-isolation
我试图弄清楚如何基于 JSESSIONID cookie 为具有长期交互式用户会话的 web 应用程序提供零停机滚动更新,这些会话应该是粘性的。
出于这个(和其他)原因,我正在研究容器技术,比如 Docker Swarm 或 Kubernetes。
我很难找到关于如何的好答案:
更多信息:
所以,我对所需流程的想法是这样的:
正如我提到的,我正在研究 Kubernetes 和 Docker Swarm,但对其他建议持开放态度,但最终解决方案应该能够在云平台上运行(目前使用 Azure,但未来可能会使用谷歌或亚马逊云)
任何指示/提示/建议或想法表示赞赏
保罗
编辑:回答@Tarun 问题和一般说明:是的,我不想停机。我设想的方式是托管旧版本的容器将继续运行以服务所有现有会话。一旦旧服务器上的所有会话结束,旧服务器就会被移除。
新容器只会为在新版本开始推出后启动应用程序的用户提供新会话。
因此,举个例子: - 我在上午 9 点启动旧版本应用程序的新会话 A - 上午 10 点推出新版本。- 我继续使用会话 A,并保留托管在运行旧版本的容器上。- 中午我去吃午饭并注销 - 因为我是连接到运行旧版本的容器的最后一个会话,容器现在将被销毁 - 下午 1 点我回来,重新登录并获得新版本的应用程序
说得通?