我有一个更新数据库表的服务器端休息 api。桌子看起来像这样
ID PubId DocUuid DocFamUuid CorrelationUuid
1 156 1A 2A 3A
唯一键是 ID,此服务器端 API 为每个请求生成唯一的 DocUuid,它基于 PubId 生成 DocFamUuid 和 CorrelationUuid。因此,具有相同 PubId 的每个文档都将具有相同的 DocFamUuid 和相同的 CorrelationUuid。
我的问题是我正在查找来自传入请求的特定 pubId 是否存在于数据库中,如果存在,我选择第一个返回结果的 docFamUuid 和相关性Uuid,否则我生成它们并保存它到分贝。现在,我有一个集群服务器环境,我可以让两个不同的服务器获取两个单独的文档,并且都启动它们的处理线程。那么,在这种情况下期望的行为是什么?1. 请求 1 从服务器 1 进入 rest API,它的 pubId 为 156,服务在 db 中查找它。2. 请求 2 从服务器 2 到 rest API 访问数据库,它的 pubId 也是 156,它查找 db 表中不存在的记录。3.请求1创建一个2A的docFamUuid和3A的correlationUuid,并保存到db 4。请求 2 现在还创建了 2B 的 docFamUuid 和 3B 的correlationUuid 并将其保存到 db 表中。现在我们有两个不同的值
ID ID PubId DocUuid DocFamUuid CorrelationUuid
1 156 1A 2A 3A
2 156 1B 2B 3B
这是错误的,因为期望的结果是:
ID ID PubId DocUuid DocFamUuid CorrelationUuid
1 156 1A 2A 3A
2 156 1B 2A 3A