目前我们有一个批处理驱动的过程在工作,它每 15 分钟运行一次,每次运行它都会重复这个循环几次:
- 调用存储过程并从数据库中取回一些数据
- 处理数据
- 将结果保存回数据库
它不能一次性加载所有数据,因为数据由多个字段分隔,并且每组数据在处理期间需要不同的行为(可从前端配置)。但是,最近业务的变化导致某些组的数据量(以及所需的处理时间)突然激增,因此现在每当其中一个组超限时,它都会延迟所有其他组。
我们的计划是在多台机器上并行处理这个过程,以便:
- 有一个中央控制器(主)和几个工作站(从)
- master 负责调度运行(可从前端配置)
- master(或单独的组件)负责从数据库加载/保存数据(以避免多个从属之间的死锁/争用)
- 从站接收工作项,处理它们并将结果返回给主站
- 有一个主要的从属服务器(我们环境中的主要生产服务器),它通常会接收所有的工作项
- 仅当主要从属正在处理需要更长处理时间的组时,辅助从属才会接收工作(主从可以根据返回的数据大小识别这一点,或者可以留给配置)
- 如果 slave 在处理过程中抛出异常,则向支持团队发送警报电子邮件,并在下一个计划周期中提取相同的工作项
- 不确定如何处理超时
我对分布式环境的主从模式进行了一些研究,但到目前为止还没有找到很多参考资料,这里有人知道这种模式的良好实现吗?任何关于这种架构潜在缺陷的指针也将不胜感激!
谢谢,