c# - 多台服务器上的批处理

标签 c# batch-processing

有一个多线程批处理程序,它创建多个工作线程来处理每个批处理。

现在要扩展应用程序以处理 1 亿条记录,我们需要使用服务器场来处理每个批处理。 C# 是否有本地支持来处理服务器场上运行的请求?关于如何设置 C# 可执行文件以使用此设置有什么想法吗?

最佳答案

您可以像 fejesjoco 所说的那样创建一个分配工作的管理器,也可以使您的应用程序足够智能,只抓取一定数量的工作单元进行处理。当他们完成这些单元的处理后,让他们联系数据库服务器以获取下一批。冲洗并重复直至完成。

作为旁注,大多数分布式工作系统的运行方式是:

  1. 工作在服务器中批量排队
  2. 工作进程与服务器 checkin 以获取要操作的批处理,可用批处理被标记为正在由该工作进程处理。
  3. (可选)工作进程通过状态报告重新检查服务器(即:完成 10%、完成 20% 等)
  4. 工作进程完成工作并提交结果。
  5. 转到第 2 步。

另一种选择是让 3 个工作线程处理完全相同的数据集。这将允许您比较结果。如果 2 个或更多结果相同,则您接受这些结果。如果所有 3 个结果都有不同,那么您就知道存在问题,需要检查数据/代码。通常,只有当工作人员超出您的控制范围(例如 SETI)或者您正在运行大量计算并希望纠正潜在的硬件问题时,才会发生这种情况。

有时会有一个管理应用程序显示当前的 worker 数量和整个集合的进度。如果您大致知道单个批处理需要多长时间,那么您可以检测到工作人员何时死亡,并可以让新进程获得相同的批处理。

这使您可以根据需要添加或删除任意数量的单个工作人员,而无需重新编码任何内容。

关于c# - 多台服务器上的批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547090/

相关文章:

c# - 在 .NET 中对 HTTPS 使用 chacha20-poly1305 对称算法

java - Spring Batch - 无法初始化阅读器

c# - 是否可以向 HtmlTextWriter WriteBreak 添加属性

r - 为 13K pdf 文档运行 for 循环时出现空间不足错误

windows - 批处理文件以检查文件列表是否存在。不适用于空格

java - 一般建议?用于 JAVA 中的 ACH 缓冲读取器/写入器的 GUI

mysql - Windows .bat 文件 0< 不确定 0 来自何处

c# - 配置 MassTransit 以反序列化多态属性

c# - mongodb $lookup + 正则表达式

c# - 在 XElement.ToString 结果中的 XAttributes 之间输入换行符/回车符