【问题标题】:Batch Processing on Multiple Servers多台服务器上的批处理
【发布时间】:2011-01-15 00:14:44
【问题描述】:

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

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

【问题讨论】:

    标签: c# batch-processing


    【解决方案1】:

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

    作为旁注,大多数分布式工作系统由以下人员运行:

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

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

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

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

    【讨论】:

      【解决方案2】:

      我认为没有对集群的内置支持。在最简单的情况下,您可以尝试创建一个简单的管理器应用程序,在服务器之间划分输入,并且您的进程不需要相互了解,因此无需重写任何内容。

      【讨论】:

        【解决方案3】:

        为什么不使用分布式框架部署应用程序?我推荐CloudIQ Platform 您可以使用该平台将代码分发到任意数量的服务器。它还处理负载平衡,因此您只需将作业提交到框架,它将处理作业分配到各个机器。它还监视应用程序的执行,因此如果其中一台机器发生故障,运行在那里的作业将在组中的另一台机器上重新启动。

        查看Community 链接以获取下载、论坛等内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-31
          • 1970-01-01
          • 2013-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-28
          相关资源
          最近更新 更多