我想并行触发多个 Web 请求,然后在 Storm 拓扑中聚合数据?以下哪种方式是首选
1) 在一个 bolt 内创建多个线程
2) 创建多个 bolt 并创建一个合并 bolt 以聚合数据。
我想在一个 bolt 中创建多个线程,因为在另一个 bolt 中合并数据不是一个简单的过程。但我看到我在互联网上发现了一些担忧 https://mail-archives.apache.org/mod_mbox/storm-user/201311.mbox/%3CCAAYLz+pUZ44GNsNNJ9O5hjTr2rZLW=CKM=FGvcfwBnw613r1qQ@mail.gmail.com%3E 但没有明确说明为什么不创建多个线程。任何指针都会有所帮助。
附带说明一下,这是否意味着我不应该像 https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html 中提到的那样使用 java8 的并行流功能?
最佳答案
增加 tasks
的数量对于 bolt ,它就像产生相同的多个实例。并增加 executors (threads)
的数量均匀地处理它们。
确保#executors <= #tasks
. Storm 将为您完成剩下的工作。
关于apache-storm - 在 Storm Bolt 中创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31587136/