代码之家  ›  专栏  ›  技术社区  ›  theburningmonk

分布式环境中的主从模式

  •  1
  • theburningmonk  · 技术社区  · 16 年前

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

    1. 调用存储过程并从数据库中获取一些数据
    2. 处理数据
    3. 将结果保存回数据库

    它无法一次性加载所有数据,因为数据由多个字段分隔,并且每组数据在处理过程中需要不同的行为(可从前端配置)。 但是,最近业务的变化导致某些组的数据量(因此所需的处理时间)突然激增,因此,现在只要其中一个组超出范围,就会延迟所有其他组。

    我们的计划是在多台机器上并行此过程,以便:

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

    我对分布式环境中的主从模式做了一些研究,但到目前为止还没有找到很多参考资料,这里有人知道这种模式的良好实现吗?任何关于这种体系结构潜在缺陷的指点都将非常感激!

    谢谢

    1 回复  |  直到 16 年前
        1
  •  0
  •   Chris Card    16 年前

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