你们会建议什么是在zookeeper中实现队列的好方法,该队列能够延迟工作而不阻塞工作人员?
参考 beanstalkd 延迟作业选项。
你需要的是使用 zookeeper 开发一个 Barriers。
我假设“延迟时间”是由另一个名为 master 的进程设置的。
Master首先创建一个节点说/work/flag,数据为“false”
worker 需要做的是获取并观察节点 /work/flag。观察者会在异步中回调,这样你就可以在工人中做其他事情,不会阻塞。
时机成熟时,master 会将 /work/flag 数据设置为“true”,这会导致 ZOO_CHANGED_EVENT 事件。
并且工作人员应该在 /work/flag 中收到事件回调,说“ZOO_CHANGED_EVENT”。然后它可以获取并检查 /work/flag 是否为真,并确定是否继续工作流。