【发布时间】:2016-04-10 08:24:54
【问题描述】:
我刚刚开始研究 etcd,创建者的谈话中提到的用例之一是工作队列系统。
但是您将如何实际实施呢?
基本模式是这样的。
1 个进程生成“工作描述票证”,并将该票证放在 etcd 的文件夹中,比如说“/queue/worktickets/00000000001/”
1->许多进程监听“/queue/worktickets/”文件夹的变化。 当出现新的工单时,每个进程都会尝试通过在“/queue/locks/00000001”中创建一个新值来锁定该工单来获取工单。只有第一个能够创建锁定值。
创建锁票的进程完成了它的工作,然后从队列中删除票,可能还有锁值。然后尝试从队列中获取下一张可用的票。如果没有更多可用的票证,请再次开始监听“/queue/worktickets/”文件夹中的更改。
在我看来,这应该很容易实现,但是如果队列变大(票很容易生成但很难处理),那么似乎会有很多数据从 etcd 传输到每个客户端. 据我所知,没有办法说给我这个文件夹中不存在的第一个值,也没有一些给我文件夹中的前 n 个项目。
任何人都愿意分享他们对此的想法。
【问题讨论】:
-
etcd 存储库提供了包含 queue 的配方,这可能对您有用。
标签: queue distributed etcd workload