有一个多线程批处理程序,它创建多个工作线程来处理每个批处理。
现在要将应用程序扩展为处理 1 亿条记录,我们需要使用服务器场来处理每个批处理过程。C# 是否有本地支持来处理在服务器场上运行的请求?关于如何设置 C# 可执行文件以使用此设置的任何想法?
有一个多线程批处理程序,它创建多个工作线程来处理每个批处理。
现在要将应用程序扩展为处理 1 亿条记录,我们需要使用服务器场来处理每个批处理过程。C# 是否有本地支持来处理在服务器场上运行的请求?关于如何设置 C# 可执行文件以使用此设置的任何想法?
您可以像 fejesjoco 所说的那样创建一个分配工作的管理器,或者您可以使您的应用程序足够智能,以便只抓取一定数量的工作单元来处理。当他们完成这些单元的处理后,让他们联系数据库服务器以获取下一批。冲洗并重复直到完成。
作为旁注,大多数分布式工作系统由以下方式运行:
另一种选择是让 3 个工作人员处理完全相同的数据集。这将允许您比较结果。如果 2 个或更多具有相同的结果,则您接受这些结果。如果所有 3 个都有不同的结果,那么您知道存在问题并且您需要检查数据/代码。通常,这仅在工作人员超出您的控制范围(如 SETI)或您正在运行大量计算并希望纠正潜在的硬件问题时才会发生。
有时会有一个管理应用程序显示当前的工人数量和整个集合的进度。如果您大致知道单个批次需要多长时间,那么您可以检测工人何时死亡并可以让新流程获得相同批次。
这使您可以根据需要添加或删除任意数量的工作人员,而无需重新编码任何内容。
我认为没有对集群的内置支持。在最简单的情况下,您可以尝试创建一个简单的管理器应用程序,在服务器之间划分输入,并且您的进程不需要相互了解,因此无需重写任何内容。
Why not deploy the app using a distributed framework? I'd recommend CloudIQ Platform You can use the platform to distribute your code to any number of servers. It also handles the load balancing, so you would only need to submit your jobs to the framework, and it will handle job distribution to the individual machines. It also monitors application execution, so if one of the machines suffers a failure, the jobs running there will be restarted on another machine in the group.
Check out the Community link for downloads, forums, etc.