我在阅读storm文档时发现,不清楚apachestorm究竟给了我什么,而不是让小进程从一个kafka主题消费并产生到另一个主题?有了这个体系结构,我可以改变每个工作进程的数量,以适应哪个组件比较慢等。大概storm会给我自动容错和易于重新平衡?有可能有任何性能改进吗?
d4so4syb1#
storm不仅提供了容错和重新平衡功能,还具有一些其他适合实时事件处理的功能消息处理保证。核心风暴有“至少一次”的保证,只有在出现故障时才会重播消息。三叉戟有“精确一次”的保证易于分布式部署。您只需将拓扑jar提交到集群。拓扑的不同部分允许不同级别的并行性。不同类型的分组支持。像fieldsgrouping这样的分组模式使流连接更加复杂。当然,如果您的事件处理用例非常简单,而且在您的体系结构中不需要上述任何一项,那么手动启动多个java进程来读取kafka主题的消息应该会有更好的性能。但实际上,情况并非如此。
wj8zmpe12#
想必storm会给我自动容错和重新平衡的便利?是的,这都是关于容错和再平衡:storm将关注大多数组件,并跟踪批处理是否成功重播。如果不是,它将方便地重放它。ui和logviewer是非常小的添加。另一个好处是,storm已经与所有主要的数据库/队列(hdfs、kafka、kestrel、cassandra等)集成,但是由于您已经在输入类型上有了坚实的基础,所以对您来说可能没有那么重要。有可能有任何性能改进吗?更像是相反的。具有相当广泛范围的现成解决方案几乎总是比临时系统性能差。特别是,在窗口连接任务中,我们能够在6台机器组成的集群上每秒处理约120k条记录,而我们自己专门为此任务设计的poc显示的吞吐量大于2.5倍。如果您不打算将storm用作各种不同管道的平台,那么值得考虑推出自己的实现。
2条答案
按热度按时间d4so4syb1#
storm不仅提供了容错和重新平衡功能,还具有一些其他适合实时事件处理的功能
消息处理保证。核心风暴有“至少一次”的保证,只有在出现故障时才会重播消息。三叉戟有“精确一次”的保证
易于分布式部署。您只需将拓扑jar提交到集群。
拓扑的不同部分允许不同级别的并行性。
不同类型的分组支持。像fieldsgrouping这样的分组模式使流连接更加复杂。
当然,如果您的事件处理用例非常简单,而且在您的体系结构中不需要上述任何一项,那么手动启动多个java进程来读取kafka主题的消息应该会有更好的性能。但实际上,情况并非如此。
wj8zmpe12#
想必storm会给我自动容错和重新平衡的便利?
是的,这都是关于容错和再平衡:
storm将关注大多数组件,并跟踪批处理是否成功重播。如果不是,它将方便地重放它。ui和logviewer是非常小的添加。另一个好处是,storm已经与所有主要的数据库/队列(hdfs、kafka、kestrel、cassandra等)集成,但是由于您已经在输入类型上有了坚实的基础,所以对您来说可能没有那么重要。
有可能有任何性能改进吗?
更像是相反的。具有相当广泛范围的现成解决方案几乎总是比临时系统性能差。特别是,在窗口连接任务中,我们能够在6台机器组成的集群上每秒处理约120k条记录,而我们自己专门为此任务设计的poc显示的吞吐量大于2.5倍。如果您不打算将storm用作各种不同管道的平台,那么值得考虑推出自己的实现。