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

相关文章
thinkphp6.0 集成Alipay 手机和电脑端支付的方法
第一步   下载 Alipay 的PHP SDK :https://docs.open.alipay.com/54/103419/ 第二步   解压下载都到的压缩包:   解压后得到的文件内容如图    第三步、上传得到的目录中的 aop 文件夹到 thinkphp 6.
6745 0
|
6月前
|
前端开发 网络安全
tmux 终端效率提升 300% 的实战指南
本文手把手教你从零掌握tmux:解决多终端切换痛点,详解安装配置、鼠标支持、vi模式、核心快捷键(Ctrl+a+c/n/p/"/%/o等),并提供可复用的自动化脚本,助你1个终端高效管理多个项目,远程断连不丢工作,效率提升300%!
|
监控 Java API
SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
前言 在从0到1构建分布式秒杀系统和打造十万博文系统中,限流是不可缺少的一个环节,在系统能承受的范围内既能减少资源开销又能防御恶意攻击。 在前面的文章中,我们使用了开源工具包 Guava 提供的限流工具类 RateLimiter 和 OpenResty 的 Lua 脚本分别进行 API 和应用层面的限流。
3723 0
|
运维 JavaScript 开发者
本地自托管部署 n8n,新手只需要 5 分钟
n8n 是开源低代码自动化工具,支持可视化工作流设计,可自托管保障数据安全。本文介绍其核心功能、官方安装方式,并演示如何通过 Websoft9 应用商店实现5分钟快速部署,适合开发者与新手快速上手。
本地自托管部署 n8n,新手只需要 5 分钟
|
关系型数据库 MySQL 数据库
Docker下Mysql8数据备份与恢复
通过以上步骤,您可以在Docker环境下高效地备份和恢复MySQL 8数据库。备份数据时,使用 `mysqldump`工具生成逻辑备份文件,并存储到指定目录;恢复数据时,使用 `mysql`工具从备份文件中读取数据并恢复到数据库。自动化脚本和定时任务的配置可以进一步简化备份和恢复的管理过程。
1430 41
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
2167 6
|
缓存 Ubuntu Linux
Docker Buildx 简介与安装指南
Docker Buildx 是一个强大的工具,提供了多架构构建、并行构建和高级缓存管理等功能。通过正确安装和配置 Buildx,可以显著提升 Docker 镜像的构建效率和灵活性。希望本文能帮助你更好地理解和使用 Docker Buildx,以提高开发和部署的效率。
7738 16
|
JavaScript NoSQL 中间件
《Node.js后端修炼手册》——揭秘服务器搭建与部署上线的生死时速,让你一战成名!
【8月更文挑战第27天】本文详细介绍如何从零开始利用Node.js构建后端服务器并部署至生产环境。首先,通过简易步骤搭建基础服务器,包括环境安装与配置。接着,引入Express框架优化路由与中间件管理,提升开发效率。随后,利用Mongoose实现MongoDB数据库连接,增强数据交互能力。为保证系统稳定性,文中还讲解了错误处理机制。最后,通过PM2等工具部署应用至生产环境,确保高效运行。本教程辅以示例代码,帮助读者快速掌握Node.js后端开发全流程。
1254 2

热门文章

最新文章