【发布时间】:2015-02-14 23:38:40
【问题描述】:
它是如何工作的?他们是否为此使用zookeeper?将ACK保存在znode中? 我正在尝试使用 zookeeper 构建分布式系统,我需要从集群中的各种机器获得确认,200k ack/sec。
是否可以使用 zookeeper 来做到这一点?
【问题讨论】:
标签: apache-zookeeper apache-storm
它是如何工作的?他们是否为此使用zookeeper?将ACK保存在znode中? 我正在尝试使用 zookeeper 构建分布式系统,我需要从集群中的各种机器获得确认,200k ack/sec。
是否可以使用 zookeeper 来做到这一点?
【问题讨论】:
标签: apache-zookeeper apache-storm
Storm 不使用 zookeeper 来确认元组,也不将 ack 发送到 nimbus。它们被直接发送到 spout。
来自guaranteeing message processing 页面:
Storm 拓扑有一组特殊的“acker”任务来跟踪 DAG 每个喷口元组的元组。当一个acker看到一个DAG是 完成,它会向创建 spout 的 spout 任务发送消息 用于确认消息的元组。
您需要在 spout 中覆盖 ack 方法:
@Override
public void ack(Object id) {
int number = (Integer)id;
System.out.println(String.format("Spout ack -> %d", number));
}
【讨论】: