apache-storm - 在 Storm Bolt 中创建线程

标签 apache-storm distributed-system

我想并行触发多个 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/

相关文章:

logging - 在 Apache Storm 中禁用 LocalCluster 日志记录

Spring Boot uber jar 将类打包到 root 而不是 BOOT-INF/classes

java - 分布式环境中的布隆过滤器

kubernetes - 如何在分布式系统中维护套接字或通信 channel

apache-kafka - 我如何使用嵌入式模式从 Kafka 反序列化 Avro

java - KafkaSpout 工作示例

java - Hive 无法在 hdfs 中写入数据

erlang - Mnesia - 将 ram_copy 表从另一个节点复制到 Disc_only_copy 表

kubernetes - 即使 ETCD 使用 CP 算法 Raft,它如何成为一个高可用系统?

mongodb - NoSQL(Cassandra/Mongodb)与 RDBMS