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