Jstorm vs Storm

简介: Jstorm 是由Storm演化而来,在架构和实现上都有很大的相似度,并且沿用了Storm的编程接口,Storm的程序在很多版本上,可以无缝迁移到Jstorm。整体上说,Jstorm更稳定,灵活性更高,性能更高。

Jstorm 是由Storm演化而来,在架构和实现上都有很大的相似度,并且沿用了Storm的编程接口,Storm的程序在很多版本上,可以无缝迁移到Jstorm。整体上说,Jstorm更稳定,灵活性更高,性能更高。

  • Jstorm Nimbus 实现HA
    当一台nimbus挂了,自动热切到备份nimbus
  • 彻底解决Storm雪崩问题
    底层RPC 采用netty + disruptor,保证发送速度和接受速度是匹配的
  • rebalance
    Storm采取的策略更自动化,可能会影响稳定性。而Jstorm则采取更稳定的策略,在下面的情况发生时,都不会rebalance,可以手动relanbance
1. 添加supervisor时, 会触发任务rebalance
 2. Supervisor shutdown时, 触发任务rebalance
 3. 提交新任务时,当worker数不够时,触发其他任务做rebalance
  • Jstorm调度策略更稳定
    当新拓扑提交时,Jstorm不会去抢占老任务占用的资源cpu,memory,disk,net。
  • Jstorm减少对ZK的访问量
    去掉大量无用的watch,task的心跳时间延长一倍,Task心跳检测无需全ZK扫描
  • Jstorm调度更强大
    可以从4个维度对任务进行资源分配,CPU,Memory,Disk,Net。需要开启Cgroups,具体http://blog.csdn.net/zengqiang1/article/details/78451307
  • Jstorm默认一个task,一个cpu slot,当task消耗更多的cpu时,可以申请更多cpu slot
  • Jstorm 默认task,不申请disk slot,当task 磁盘IO较重时,可以申请disk slot
  • Jstorm可以强制某个component的task 运行在不同的节点上
  • Jstorm 可以强制topology运行在单独一个节点上
  • Jstorm可以自定义任务分配
    提前预约任务分配到哪台机器上,哪个端口,多少个cpu slot,多少内存,是否申请磁盘
  • JstormWorker 内部全流水线模式,Spout nextTuple和ack/fail运行在不同线程
    nextTuple中 做sleep和wait操作不会block ack/fail 动作
  • Jstorm底层使用ZeroMq, 比storm快30%
  • Jstorm底层使用netty时, 和storm快10%,并且稳定非常多

Jstorm 为什么性能更好

  • Zeromq 减少一次内存拷贝
  • 增加反序列化线程
  • 重写采样代码,大幅减少采样影响
  • 优化ack代码
  • 优化缓冲map性能
  • Java 比clojure更底层

作者:glowd
原文:https://blog.csdn.net/zengqiang1/article/details/78448694
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章
|
消息中间件 设计模式 SQL
从Lambda架构到Kappa架构再到?浅谈未来数仓架构设计~
Linked大佬Jay Kreps曾发表过一篇博客,简单阐述了他对数据仓库架构设计的一些想法。从Lambda架构的缺点到提出基于实时数据流的Kappa架构。本文将在Kappa架构基础上,进一步谈数仓架构设计。 现代实时数仓和重要性已经越来越高,离线数仓积累的历史数据又很难被抛弃。采用新型的数仓架构,融合实时数仓和离线数仓的优点是一个值得讨论的话题。本文结合ECS的设计模式,探讨了如何设计了一套全新的混合数仓架构。
17617 0
|
存储 机器学习/深度学习 分布式计算
HDFS Federation简介
背景 熟悉大数据的人应该都知道,HDFS 是一个分布式文件系统,它是基于谷歌的 GFS 思路实现的开源系统,它的设计目的就是提供一个高度容错性和高吞吐量的海量数据存储解决方案。在经典的 HDFS 架构中有2个 NameNode 和多个 DataNode 的,如下: 从上面可以看出 HDFS 的架构其实大致可以分为两层: Namespace:由目录,文件和数据块组成,支持常见的文件系统操作,例如创建,删除,修改和列出文件和目录。
|
人工智能 数据挖掘 Python
提升办公生产力工具——AI数据分析应用小浣熊
办公小浣熊广泛应用于日常数据分析、财务分析、商业分析、销售预测、市场分析等多个领域,为用户提供了强大的支持。
提升办公生产力工具——AI数据分析应用小浣熊
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能能源管理与节能减排
【8月更文挑战第5天】 使用Python实现深度学习模型:智能能源管理与节能减排
446 3
|
Java 索引 安全
[Mvel]Mvel2.0使用指南一 基础
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/75244442 MVEL在很大程度上受到Java语法的启发,作为一个表达式语言,也有一些根本的区别,旨在更高的效率,例如:直接支持集合、数组和字符串匹配等操作以及正则表达式。
15825 0
|
API 开发者
【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
429 0
|
存储
NameNode 故障无法重新启动解决方法
当NameNode进程挂掉时,若无数据丢失,可直接使用`hdfs --daemon start namenode`重启。但若数据丢失,需从SecondaryNameNode恢复。首先查看启动日志,确认因数据丢失导致的未启动成功问题。接着,将SecondaryNameNode的备份数据拷贝至NameNode的数据存储目录,目录路径在`core-site.xml`中设定。进入NameNode节点,使用`scp`命令从SecondaryNameNode复制数据后,重启NameNode进程,故障即可修复。
1600 0
|
XML 存储 Android开发
Android自定义控件 | 小红点的三种实现(下)
上篇介绍了两种实现小红点的方案,分别是多控件叠加和单控件绘制,其中第二个方案有一个缺点:类型绑定。导致它无法被不同类型控件所复用。这篇给出一种新的方案。
742 0
Android自定义控件 | 小红点的三种实现(下)
|
消息中间件 监控 负载均衡
深入解析Kafka中的Lag现象
深入解析Kafka中的Lag现象
1152 0
|
Java 开发工具 git
java解析CSV文件三种方法(openCSV)
java解析CSV文件三种方法(openCSV)
420 0