我正在构建一个大规模的查询处理系统,它需要很小的延迟(理想情况下每个请求<1秒)。我使用Storm但发现从上游螺栓发出的元组大约需要 300ms 才能被下游螺栓接收。
关于如何减少延迟的任何想法?
PS:我在Azure中使用HDInsight Storm服务,使用默认设置的4个datanotes。
答案 0 :(得分:1)
由于网络数据传输,可能会导致延迟。为了减少延迟,您可以尝试合并一些螺栓逻辑(如果可能的话)(例如,过滤器螺栓可能与标记器螺栓合并)。
另一个想法是在您的流上使用LocalorShuffle分组,以便风暴将元组发送到同一工作进程中的任务。
最后,您可以调整消息缓冲区以优化拓扑的性能。
这是一篇关于内部缓冲区的优秀文章: understanding-storm-internal-message-buffers