分布式环境的主从模式

时间:2009-11-19 10:42:55

标签: c# design-patterns parallel-processing distributed-computing

目前我们有一个批处理驱动的流程,每15分钟运行一次,每次运行时都会多次重复此循环:

  1. 调用sproc并从数据库中获取一些数据
  2. 处理数据
  3. 将结果保存回数据库
  4. 它无法一次性加载所有数据,因为数据被多个字段隔离,并且每组数据在处理期间需要不同的行为(可从前端配置)。 然而,最近业务的变化导致一些组的数据量突然激增(因此需要处理时间),所以现在只要其中一个组超出它就会延迟所有其他组。

    我们的计划是在多台计算机上并行处理此流程,以便:

    • 有一个中央控制器(主站)和几个工作站(从站)
    • master负责安排运行(可从前端配置)
    • master(或单独的组件)负责从DB加载/保存数据(以避免多个从属设备之间的死锁/争用)。
    • 奴隶接收工作项,处理它们并将结果返回给主人
    • 主要奴隶(我们环境中的主要生产服务器)通常会收到所有工作项
    • 仅当主要从属设备正在处理需要更长处理时间的组时,辅助从属设备才会接收工作(主设备可以根据返回的数据大小识别此设备,或者可以将其留给配置)
    • 如果奴隶在处理过程中抛出异常,则会向支持团队发送警报电子邮件,并在下一个计划周期内拾取相同的工作项目
    • 不确定如何处理超时

    我已经对分布式环境的主从模式做了一些研究,但到目前为止还没有找到很多参考资料,这里有没有人知道这种模式的良好实现?关于这种架构的潜在缺陷的任何指示也将非常受欢迎!

    谢谢,

1 个答案:

答案 0 :(得分:0)

上面的主/从设计似乎意味着无论如何都会对数据库的写入进行序列化,因此您是否考虑过并行运行当前进程的多个副本(例如,通过为每个作业分配新进程)和管理通过共享应用程序锁争用?