Storm 和JStorm该如何理解

发布时间:2025-03-26 点击:27
云计算
这篇文章给大家介绍 storm 和jstorm该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
简单的概述storm就是:jstorm 比storm更稳定,更强大,更快,storm上跑的程序,一行代码不变可以运行在jstorm上。直白的将jstorm是阿里巴巴的团队基于storm的二次开发产物,相当于他们的tengine是基于ngix开发的一样。
现有storm无法满足一些需求
现有storm调度太简单粗暴,无法定制化
storm 任务分配不平衡
rpc oom一直没有解决
监控太简单
对zk 访问频繁
jstorm相比storm更稳定
nimbus 实现ha:当一台nimbus挂了,自动热切到备份nimbus
原生storm rpc:zeromq 使用堆外内存,导致os 内存不够,netty 导致oom;jstorm底层rpc 采用netty disruptor保证发送速度和接受速度是匹配的
新上线的任务不会冲击老的任务:新调度从cpu,memory,disk,net 四个角度对任务进行分配,已经分配好的新任务,无需去抢占老任务的cpu,memory,disk和net
supervisor主线
spout/bolt 的open/prepar
所有io, 序列化,反序列化
减少对zk的访问量:去掉大量无用的watch;task的心跳时间延长一倍;task心跳检测无需全zk扫描。
jstorm相比storm调度更强大
彻底解决了storm 任务分配不均衡问题
从4个维度进行任务分配:cpu、memory、disk、net
默认一个task,一个cpu slot。当task消耗更多的cpu时,可以申请更多cpu slot
默认一个task,一个memory slot。当task需要更多内存时,可以申请更多内存slot
默认task,不申请disk slot。当task 磁盘io较重时,可以申请disk slot
可以强制某个component的task 运行在不同的节点上
可以强制topology运行在单独一个节点上
可以自定义任务分配,提前预约任务分配到哪台机器上,哪个端口,多少个cpu slot,多少内存,是否申请磁盘
可以预约上一次成功运行时的任务分配,上次task分配了什么资源,这次还是使用这些资源
jstorm相比storm性能更好
jstorm 0.9.0 性能非常的好,使用netty时单worker 发送最大速度为11万qps,使用zeromq时,最大速度为12万qps。
jstorm 0.9.0 在使用netty的情况下,比storm 0.9.0 使用netty情况下,快10%%uff0c 并且jstorm netty是稳定的而storm 的netty是不稳定的
在使用zeromq的情况下, jstorm 0.9.0 比storm 0.9.0 快30%
性能提升的原因:
zeromq 减少一次内存拷贝
增加反序列化线程
重写采样代码,大幅减少采样影响
优化ack代码
优化缓冲map性能
java 比clojure更底层
jstorm的其他优化点
资源隔离。不同部门,使用不同的组名,每个组有自己的quato;不同组的资源隔离;采用cgroups 硬隔离
classloader。解决应用的类和jstorm的类发生冲突,应用的类在自己的类空间中
task 内部异步化。worker 内部全流水线模式,spout nexttuple和ack/fail运行在不同线程
关于 storm 和jstorm该如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

亚马逊店铺怎么挂在云服务器上
web服务器阿里云价格
云服务器怎样挂网线
2019云服务器爆款优惠券
服务器配件超云硬盘总容量1t
linux如何关闭php fpm
许昌云服务器哪家好
域名竞价过程中,代理出价是什么意思?