Storm 与 Kafka 和处理器
Storm vs Kafka and Processors
我发现阅读 storm 文档并不清楚 apache storm 究竟是什么让我拥有从 kafka 主题消费并产生到另一个主题的小进程?使用这种架构,我可以更改每个工作进程的数量,以适应哪些组件速度较慢等。大概风暴会给我自动容错和重新平衡的便利性?是否可能有任何性能改进?
Presumably storm will give me auomatic fault tolerance and ease of re-balancing?
是的,这都是关于容错和重新平衡的:
Storm 将密切关注大多数组件并跟踪批处理是否成功重放。如果不是,它会很方便地重播它。 UI 和日志查看器是非常小的添加。另一件好事是 Storm 已经与所有主要 databases/queues(HDFS、Kafka、Kestrel、Cassandra 等)集成,但由于您已经掌握了输入类型,因此它对您来说可能并不那么重要。
Are there likely to be any performance improvements?
恰恰相反。具有相当普遍范围的现成解决方案几乎总是比临时系统性能低。特别是,在窗口连接任务中,我们能够在 6 台机器的集群上每秒处理约 120k 条记录,而我们自己专门为此任务设计的 POC 显示 > 2.5 倍的吞吐量。如果您不打算将 Storm 用作各种不同管道的平台,那么值得考虑滚动您自己的实现。
storm不仅提供了容错和再平衡特性,它还有一些适合实时事件处理的特性
- 消息处理保证。核心风暴有“至少一次”
保证和消息仅在出现故障时重播。
三叉戟有“精确一次”保证
- 易于分布式部署。
您需要做的就是将拓扑 jar 提交到集群。
- 拓扑的不同部分允许不同级别的
并行度。
- 不同类型的分组支持。分组模式
例如 fieldsGrouping 使流连接更容易。
当然,如果您的事件处理用例非常简单,并且您的体系结构需要上述 none,手动启动多个 java 进程以读取 Kafka 主题的消息应该有更好的表现。但实际上,情况并非如此。
我发现阅读 storm 文档并不清楚 apache storm 究竟是什么让我拥有从 kafka 主题消费并产生到另一个主题的小进程?使用这种架构,我可以更改每个工作进程的数量,以适应哪些组件速度较慢等。大概风暴会给我自动容错和重新平衡的便利性?是否可能有任何性能改进?
Presumably storm will give me auomatic fault tolerance and ease of re-balancing?
是的,这都是关于容错和重新平衡的:
Storm 将密切关注大多数组件并跟踪批处理是否成功重放。如果不是,它会很方便地重播它。 UI 和日志查看器是非常小的添加。另一件好事是 Storm 已经与所有主要 databases/queues(HDFS、Kafka、Kestrel、Cassandra 等)集成,但由于您已经掌握了输入类型,因此它对您来说可能并不那么重要。
Are there likely to be any performance improvements?
恰恰相反。具有相当普遍范围的现成解决方案几乎总是比临时系统性能低。特别是,在窗口连接任务中,我们能够在 6 台机器的集群上每秒处理约 120k 条记录,而我们自己专门为此任务设计的 POC 显示 > 2.5 倍的吞吐量。如果您不打算将 Storm 用作各种不同管道的平台,那么值得考虑滚动您自己的实现。
storm不仅提供了容错和再平衡特性,它还有一些适合实时事件处理的特性
- 消息处理保证。核心风暴有“至少一次” 保证和消息仅在出现故障时重播。 三叉戟有“精确一次”保证
- 易于分布式部署。 您需要做的就是将拓扑 jar 提交到集群。
- 拓扑的不同部分允许不同级别的 并行度。
- 不同类型的分组支持。分组模式 例如 fieldsGrouping 使流连接更容易。
当然,如果您的事件处理用例非常简单,并且您的体系结构需要上述 none,手动启动多个 java 进程以读取 Kafka 主题的消息应该有更好的表现。但实际上,情况并非如此。