gpt4 book ai didi

c# - 设计指南分布式计算

转载 作者:太空狗 更新时间:2023-10-29 21:30:49 25 4
gpt4 key购买 nike

我有一个软件系统可以同时在多台机器上执行 OCR。当前系统的工作原理如下:

  1. 所有需要ocred的文档都插入到db中的一个表中。
  2. 每个客户端 ocr 机器汇集该表,每当找到 ocr 数据时,它都会锁定表并选择 n 号。 ocr 的文件。锁定用于原子性。
  3. 每个文档被 ocred 后,文档的状态更新为完整。

我知道将数据库设置为同步位置是一个严重的错误。它运行良好,但有时我会看到数据库死锁..

所以我的问题是,设计此类系统的更好方法是什么,我希望数据库仅作为存储设备而不是同步位置。我想听听你的想法。

最佳答案

好吧,您可以在表中有一列来说明当前是否正在处理记录。在事务中,获取当前未被处理的记录的数据,并更新记录以说明它现在正在被处理。那里如何处理争用的细节将取决于您创建的事务类型和您使用的数据库,但我怀疑事务应该是它的核心。

假设您真的想要使用数据库而不是某种描述的消息队列。您可能会考虑将消息队列结合 与数据库一起使用……有些数据库内置了队列,这也很有用。即使你也想要数据库中的记录,你可以有一个只有 ID 的队列——客户端可以只从队列中拉出下一个项目,然后获取数据。您可能仍想记录从队列中提取项目的时间,以便在客户端崩溃或类似情况时,批处理作业可以放置任何失败的作业(例如,一天前提取但没有提取的作业)还没有结果)回到队列中。

关于c# - 设计指南分布式计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819175/

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