分布式环境中的任务执行

时间:2015-10-06 13:01:42

标签: distributed

我有一张表说雇员(id,name,email,is_email_verified,created_date)。我需要每天为已创建的用户发送电子邮件,并且不会验证电子邮件。我需要创建一个可以部署在两个盒子上的服务。它将读取用户表并获取用户ID并发送邮件进行验证。因为,有两个框,每个框将读取相同数量的用户,因此将发送两个邮件。

我们如何制作此服务,以便用户ID将在服务器之间分配(如果我有n台服务器)。

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。

最直接的&可靠:

  1. 创建一个作业任务,从表中读取所有用户ID并将其排队到任务队列 - 每个用户ID 1个任务。
  2. 使用任意数量的服务器从队列中拉出任务(1-N)。
  3. 不需要队列(不容错):

    选择一个哈希函数来决定服务器应该处理哪些用户ID。例如,第一个服务器处理奇数ID和第二个偶数ID等。或类似:

    def should_i_send(user_id, server_id):
      return user_id % server_id == 0