gpt4 book ai didi

azure - Actor 模型: how to reach data integrity in this specific situation?

转载 作者:行者123 更新时间:2023-12-03 02:49:02 26 4
gpt4 key购买 nike

我是 Actor 模型和奥尔良的新手,因此非常感谢任何有关解决以下任务的良好实践的建议:

我们有[service1],它运行一些逻辑并将一些结果存储在关系数据库(遗留的东西)中。现在,在中间的某个地方,我们要调用奥尔良 actor [Actor1],它包含一个数字列表,以获取下一个可用的数字。 [Actor1] 的目标是连续且一致地输入数字,因此不允许跳过,不允许重复,因此它是一种单线程堆栈。不仅每个进程都是单线程,而且整个服务集群都是单线程,这正是我们所需要的。

[service1] -> [Actor1]

现在我在这里看到的唯一问题是 [service1] 在获取下一个数字之后但在将结果存储到数据库之前可能会失败并出现异常。数字是从单线程堆栈中获取的,但它会丢失,因为调用应用程序无法根据数据库中的馈送数字来存储结果。换句话说,我不希望 Actor 提供下一个数字,除非它确保最后一个提供的数字得到很好的利用,并且只有调用应用程序知道它是否得到充分利用。

您建议如何处理这些情况?我可以以某种方式保持奥尔良 Actor 的工作开放,除非调用服务(或另一个 Actor )将其提交到数据库吗?

最佳答案

这是一个拜占庭问题,因此没有简单的解决方案:数字序列中会有“漏洞”,或者您将使用相同的数字两次。

如果有必要的话,我更愿意稍后用虚拟数据填充它们(例如,如果这是一个计费系统,则在月底为每个作为“漏洞”的帐单号码输入取消的空帐单)。

即使在 SQL 中,插入和回滚也会让序列在自动增量主键 ID 列中递增,因此失败后可能会出现漏洞。

关于azure - Actor 模型: how to reach data integrity in this specific situation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com