JStorm 2.2.1 版本正式发布

简介:

Jstorm 2.2.1 目前已正式发布,用户可以自行前往https://github.com/alibaba/jstorm/wiki/Downloads 下载体验。

性能优化

对比2.1.1和去年的双十一版本0.9.8.1有200%~300%的提升。在高并发和低并发的多个测试场景(word count)中,是Flink性能的120%~200%,是Storm的300%~400%。

JStorm主要从以下几个方面对性能进行优化。

  1. 重构batch的实现方案
  2. 优化序列化和反序列过程,减少cpu和网络消耗
  3. 优化消息关键路径和metrics的cpu开销
  4. 优化网络接收和发送端的处理策略
  5. 增加disruptorQueue的异步batch操作

众多新特性支持

  1. 加入新的snapshot exactly once(只处理一次)框架。
    • 对比原有的Trident解决方案有着数倍的性能提升。同时可以减少用户在回滚的过程中的处理逻辑。
    • 同时支持at least once(至少处理一次场景)。对比原有的acker机制,可以减少acker的消息处理开销,同时在高吞吐的场景中可以大量的减少acker消息占用的网络带宽。以提高任务性能。
  2. 完成JStorm on yarn支持。
    • 现在JStorm可以实现快速的集群部署,以及集群的扩容和缩容。有效的提高集群资源的弹性和利用率。
      3, 重构backpressure设计,支持stage by stage的流控模式。
    • 当前的设计更加轻量,让backpressure在流控开启和关闭时更加高效。
    • 性能和稳定性对比原因的方案有着很大的提升。
  3. 引入Window API。
    • 支持tumbling window,sliding window
    • 对应的window支持count和duration 模式
    • 支持window的watermark机制
  4. 引入对Flux的支持
    • Flux是帮助创建和部署storm拓扑的编程框架及通用组件。帮助用户更方便创建及部署JStorm流式计算拓扑的编程框架
  5. 通过maven shade的方式,对一些容易冲突的依赖包做shade。以解决jstorm依赖和用户依赖之前的冲突问题。
  6. 优化Shuffle grouping方案
    • 合并shuffle, localOrShuffle和localFirst。根据任务情况自动适配。
    • shuffle时会根据下游节点的负载情况,做shuffle。以达到负载均衡。
  7. 增加Nimbus的黑名单机制。
  8. 增加Trident对消息batch模式的支持
  9. 支持集群的全局配置推送
  10. supervisor info和心跳中增加了buildTs,便于区分出集群中是否存在不同版本的supervisor
  11. nimbus和supervisor通过ext模块来支持外部插件
  12. 添加elastic search 5.11的支持, 感谢 @elloray 的PR

众多改进

  1. 重构nimbus metrics 框架,将原TopologyMetricsRunnable打散成事件驱动
  2. 重构Topology master的处理逻辑。改为事件驱动。提高Topology的处理性能。
  3. 重构example 代码, 增加大量example和测试用例
  4. 默认禁用stream metrics以及其他特定metrics,以减少发送的数据量
  5. 本地模式下启用metrics
  6. gauge的实现,由每分钟单值,改为每分钟采样多次计算平均值
  7. 引入了一种近似计算的方式来计算histogram的值,以减少内存开销
  8. 增加了Full GC以及supervisor中网络相关的metrics

Bug 修复

  1. Fix 消息的乱序问题
  2. Fix supervisor上有大量的zookeeper连接的问题
  3. Fix task初始化时,deactivate的错误调用
  4. Fix spout并发高时,少量消息rootid重复,导致消息失败的问题。
  5. Fix 本地模式的一些bug
  6. Fix logwriter的bug
  7. 修复了task metrics中RecvTps, ProcessLatency没有合并到task的bug
  8. 修复了AsmCounter在flush时的线程同步问题

企业级互联网架构Aliware,让您的业务能力云化:https://www.aliyun.com/aliware

相关文章
|
Java Go Nacos
解决`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的问题
解决`java.lang.NoClassDefFoundError`在Nacos和Spring Boot集成中的问题
1155 0
|
安全 Linux 编译器
BigCloud Enterprise Linux 8和Rocky Linux 8升级OpenSSH步骤
本文介绍了在BigCloud Enterprise Linux 8.2/8.6和Rocky Linux 8.10上升级OpenSSH的详细步骤。首先配置Telnet服务和GCC编译器以确保远程登录安全,接着备份旧版OpenSSH并下载、编译、安装最新版本(如9.9p1)。然后创建新的sshd系统服务配置文件,调整配置并启动服务。最后验证升级效果,关闭不必要的Telnet服务,并处理可能的防火墙和SELinux问题。通过这些步骤可有效修复低版本OpenSSH带来的高危漏洞。
974 13
|
人工智能 监控 安全
管理和调度Dify工作流
Dify是一款开源的大模型应用开发平台,支持通过可视化界面快速构建AI Agent和工作流。然而,Dify本身缺乏定时调度与监控报警功能,且执行记录过多可能影响性能。为解决这些问题,可采用Dify Schedule或XXL-JOB集成Dify工作流。Dify Schedule基于GitHub Actions实现定时调度,但仅支持公网部署、调度延时较大且配置复杂。相比之下,XXL-JOB提供秒级调度、内网安全防护、限流控制及企业级报警等优势,更适合大规模、高精度的调度需求。两者对比显示,XXL-JOB在功能性和易用性上更具竞争力。
3413 64
管理和调度Dify工作流
|
关系型数据库 MySQL 数据库
Docker下Mysql8数据备份与恢复
通过以上步骤,您可以在Docker环境下高效地备份和恢复MySQL 8数据库。备份数据时,使用 `mysqldump`工具生成逻辑备份文件,并存储到指定目录;恢复数据时,使用 `mysql`工具从备份文件中读取数据并恢复到数据库。自动化脚本和定时任务的配置可以进一步简化备份和恢复的管理过程。
1205 41
|
数据采集 机器学习/深度学习 数据挖掘
基于DeepSeek的多模态融合技术:实现图像、视频与音频的协同分析
随着多媒体数据的爆炸式增长,单一模态数据分析已无法满足复杂场景需求。多模态融合技术通过整合图像、视频、音频等多源数据,提供更全面精准的分析结果。DeepSeek作为强大的深度学习框架,在多模态融合领域展现巨大潜力。本文深入探讨基于DeepSeek的多模态融合技术,结合代码示例展示其在图像、视频与音频协同分析中的实际应用,涵盖数据预处理、特征融合、模型训练及评估等环节,并展望未来发展方向。
2270 13
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
1998 6
|
应用服务中间件 网络架构
kodexplorer私有云本地部署,低成本内网穿透教程
可搭建:网站或个人博客;类似于某云的网盘;远程路由器(等家电)控制,内网的服务穿透至外网;迅雷远程下载;家庭云存储中心等。准备工作: 1、 可以插U盘的路由器(推荐二手小米mini,40包邮不能再多了) 2、 将路由器刷为最新的老毛子固件(参见恩山无线论坛) 3、 掏钱买VPS或者寻找一个免费的FRPS服务器 搭建步骤简述: 1、 路由器,联网,插U盘(事先格式化为EXT4格式,可以用diskgenius免费版)。
7265 1
|
JavaScript NoSQL 中间件
《Node.js后端修炼手册》——揭秘服务器搭建与部署上线的生死时速,让你一战成名!
【8月更文挑战第27天】本文详细介绍如何从零开始利用Node.js构建后端服务器并部署至生产环境。首先,通过简易步骤搭建基础服务器,包括环境安装与配置。接着,引入Express框架优化路由与中间件管理,提升开发效率。随后,利用Mongoose实现MongoDB数据库连接,增强数据交互能力。为保证系统稳定性,文中还讲解了错误处理机制。最后,通过PM2等工具部署应用至生产环境,确保高效运行。本教程辅以示例代码,帮助读者快速掌握Node.js后端开发全流程。
1049 2