一个简单的基于数据库实现的多机任务抢占调度

一般的协调工作,让zookeeper来做那是最好的,问题是你得部署zookeeper。如果没有能否模拟一个协调者呢?这是本篇文章需要介绍的内容。

背景

有合同约定,如果总消费额达到一定的额度,需要启动折扣,达到另一个更高的额度后,会启动另一个折扣。用户的消费记录都是小额的,如1毛一笔,折扣需要详细到每一笔交易。现在已经有了很大批量的这种数据,需要计算总价。应用部署了3台机器,如何让3台机器都可以参与处理,并且一个合同的消费数据只能由一台机器处理,并且,如果这台机器处理了合同的部分数据死掉后,需要有其他的机器继续处理?

在这里,使用数据库作为协调器,协调各机器间的状态,详细介绍如下:

1、约定心跳时间为1分钟

2、创建调度任务表

字段

 

说明

 

任务类型

 

这里对应批价合同ID,唯一ID

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsypp.html