【问题标题】:Task execution in distributed environment分布式环境下的任务执行
【发布时间】:2015-10-06 21:16:29
【问题描述】:

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

如何,我们可以提供此服务,以便用户 ID 将分布在服务器之间(如果我有 n 个服务器)。

【问题讨论】:

    标签: distributed


    【解决方案1】:

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

    最直接可靠的:

    1. 创建一个作业任务,从表中读取所有用户 ID 并将它们排入任务队列 - 每个用户 ID 1 个任务。
    2. 使用任意数量的服务器从队列中提取任务 (1-N)。

    不需要队列(不能容错):

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

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

    【讨论】:

    • 不确定我是否理解您的意思,因为您可以拥有任意数量的拉拔器。
    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多