我创建了一个不可靠的小拓扑结构,其中一个喷口从包含lat/long坐标的文件中读取行,另一个下游螺栓调用外部反向地理编码服务来确定国家。因为这个特定的bolt在一段时间后以非常慢的速度处理元组,所以整个拓扑停止(不产生输出)。
(1) 我想知道当一个bolt不能处理元组的传入速率时会发生什么。据我所知,storm是基于push的,意思是喷口在一个循环中连续地发出元组,它们被存储在每个worker/executor的下游发送和接收缓冲区/队列中。当这些缓冲区/队列被完全填满时会发生什么?喷口停止发出新的元组了吗?这个实现是否因为从0mq到netty传输层的转换而改变了?
(2) 已经提到,在不可靠的拓扑结构中,在storm中进行流量控制的唯一方法是使用acking系统和max spout pending参数,在spoute上发出具有id的元组,而不在ack/fail方法中执行任何操作。这是因为0mq传输层中存在一些限制。既然storm>0.9使用了netty传输层,那么在不可靠的拓扑结构中还有其他方法来进行流量控制吗?
先谢谢你
暂无答案!
目前还没有任何答案,快来回答吧!