假设我有一个用于处理电子邮件的分布式任务队列。需要获取和解析的每封电子邮件都会在队列中创建一个新作业。
现在,电子邮件提供商的速率限制为每个电子邮件帐户的n个并发连接数,因此当我的工作人员启动任务时,它将获得“连接”(通过连接我只是想要考虑到这样一个事实:现在n-1个可用的连接,供其他工作人员访问该帐户)。如果没有空闲连接,工作人员会将工作返回给经纪人并继续尝试下一份工作。
我试图用原子锁来解决这个问题,工人首先必须获得锁才能进入连接池,但遇到了一个雷鸣般的群体问题 - 工人有时会碰到它,正好有两个工人可以获得锁同时丢掉计数并超过限额。
这种情况有更优雅的方法吗?
答案 0 :(得分:0)
基本上有两种方法可以解决这个问题: