我创建了一个小的不可靠拓扑,由一个喷口组成,该喷口从包含lat / long协调的文件中读取行,其中一个下游螺栓调用外部反向地理编码服务来确定国家/地区。因为这个特定的螺栓在一段时间后以非常慢的速率处理元组,整个拓扑结构停止(不产生输出)。
(1) 我想知道当一个螺栓无法处理传入的元组速率时会发生什么。据我所知,storm是基于push的意思,即spout在循环中连续发出元组,并且它们存储在每个worker / executor的下游发送和接收缓冲区/队列中。当这些缓冲区/队列完全填满时会发生什么?喷口是否会停止发射新的元组?由于从0mq到netty传输层的转换,此实现是否已更改?
(2) 已经提到在不可靠的拓扑结构中在风暴中进行流量控制的唯一方法是使用acking系统和max spout pending参数在spout上发送带有id的元组,而不用ack / fail方法做任何事情。这是因为0mq传输层存在一些限制。现在风暴> 0.9使用netty传输层是否有其他方法在不可靠的拓扑中进行流量控制?
提前谢谢