jstorm 2.1.1 release

简介:

jstorm 2.1.1 2016年3月1日正式release, 用户可以自行前往https://github.com/alibaba/jstorm/wiki/Downloads 下载

 

Release 2.1.1

New features

  • 相比2.1.0有1.5~6倍的性能提升
  • 添加了应用层的自动batch
  • 增加了独立的控制消息通道,将控制消息与业务消息分开,保证控制消息有较高的优先级被处理
  • 支持jdk1.8
  • 添加了nimbus hook和topology hook
  • Metrics系统:
    • 支持动态开关特定的metrics
    • 添加了metrics的设计文档,见JSTORM-METRICS.md
  • JStorm web UI相关:
    • 添加了zk节点的查看功能,感谢@dingjun84的PR
    • 添加了普通日志搜索以及topology日志搜索功能,支持正向和反向搜索
    • 支持日志的下载
  • 支持动态修改日志级别
  • 修改了zk中ErrorInfo的结构,增加了errorLevel, errorCode和duration
  • 增加了supervisor的健康检查
  • 增加了-Dexclude.jars选项以手动排除特定的jar包

 

Improvements

  • Metrics相关:
    • 使用JHistogram/JMeter代替codahale的Histogram/Meter, 把内部的Clock.tick改为System.currentTimeMillis,Meter和Histogram分别有50%和25%+的性能提升
    • 添加了TupleLifeCycle指标,用于统计消息从当前component发出来到下一个component被处理的总耗时
    • 添加了supervisor的指标: total_cpu_usage, total_mem_usage, disk_usage
    • 删除了一些不必要的指标,如emitTime等
    • 使用HeapByteBuffer代替List来发送histogram中的点数据,节省60+%的metrics内存使用
    • 将metrics采样率从10%调为5%
    • 删除AsmTimer及相关代码
  • 日志相关:
    • 默认不再使用log4j,而是使用logback,除非slf4j-log4j12依赖
    • 使用jstorm.log.dir配置取代原来的${jstorm.home}/logs, 详见jstorm.logback.xml
    • 将logback/log4j中日志文件的默认编码改为UTF-8
    • 修改日志目录结构,添加了${topology.name}目录, 详见jstorm.logback.xml
    • 将代码中所有log4j的Logger改为slf4j的Logger
    • 将defaults.yaml中默认的日志page size(log.page.size)由32K调整为128K
    • 将supervisor/nimbus的gc日志文件加上时间戳,防止重启后被覆盖; 重启worker前备份worker之前的gc日志
  • 优化反压策略,防止过度反压
  • 将acker中的pending map改为单线程,以提高性能
  • 修改RefreshConnections逻辑,防止频繁地从zk中下载assignments
  • 将Supervisor的默认内存由512MB调到1GB
  • 统一使用ProcessLauncher来起进程
  • 为supervisor和nimbus添加DefaultUncaughtExceptionHandler
  • 与0.9.x系列错开端口配置,见supervisor.slots.ports.base, nimbus.thrift.port, nimbus.deamon.logview.port, supervisor.deamon.logview.port配置
  • 将web UI的前端库highcharts改为echarts,防止潜在的版权冲突
  • 依赖升级
    • 升级kryo至2.23.0
    • 升级disruptor至3.2.2

 

Bug fix

  • 修复了起worker时可能的死锁
  • 修复了当localstate文件为空时,supervisor无法启动的问题
  • 修复了开启kryo时metrics中HeapByteBuffer无法被注册的bug
  • 修复了内存使用率计算不准确的bug
  • 修复了当用户自定义调度中分配的worker大于真实worker数时会创建空worker的bug
  • 修复web UI的日志目录设置错误的问题
  • 修复了web UI中的XSS bug
  • 在local mode的时候,TopologyMetricsRunnable线程不运行,感谢@L-Donne的PR
  • 修复JSTORM-141, JSTORM-188:TopologyMetricsRunnable消耗CPU过多的bug
  • 删除MaxTenuringThreshold JVM参数
  • 修复MkLocalShuffer中outTasks可能为null的bug

 

Deploy and scripts

  • 增加了对core dump文件的清理
  • 增加了supervisor的健康检测,见healthCheck.sh
  • 修改了jstorm.py,起进程后结束父python进程

 

升级指南

  • JStorm2.1.1基本与JStorm2.1.0保持兼容,但是为了保险起见,建议重启topology
  • 如果你的topology原先使用log4j,请在你的conf或者storm.yaml中加入"user.defined.log4j.conf: jstorm.log4j.properties"配置,以保证JStorm框架使用log4j
  • 如果你使用slf4j-api + log4j,请在你的应用中添加slf4j-log4j12的依赖
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 JSON 安全
解锁互联网安全的新钥匙:JWT(JSON Web Token)
解锁互联网安全的新钥匙:JWT(JSON Web Token)
845 0
|
Java Linux Docker
Linux服务器JRE中文字体设置,解决java.awt乱码、显示方块问题
最近因为需要在java应用中合成曲线图,使用了jfreechart库,但是发现图片中的中文全都显示成方块了。Linux机器一般都是没有中文字体的,所以在使用java.awt相关类生成图片时,输出的中文很可能显示乱码或者呈方块状。解决方案就是在服务器启动脚本里,加上安装中文字体的步骤。
2690 0
Linux服务器JRE中文字体设置,解决java.awt乱码、显示方块问题
|
7月前
|
关系型数据库 MySQL Java
《理解MySQL数据库》执行计划EXPLAIN深度解析
本文系统讲解MySQL执行计划(EXPLAIN)在Java开发中的应用,涵盖基础语法、各列深度解析及实战优化案例。通过分析type、key、Extra等关键字段,帮助开发者诊断慢查询、优化索引、提升SQL性能,并结合Spring AOP与JDBC实现执行计划的自动化监控与优化建议,构建高效稳定的数据库访问体系。(239字)
|
消息中间件 Dubbo Java
微服务
【10月更文挑战第1天】微服务是一种将大型应用分解为小型、独立服务的设计理念,每个服务负责单一业务功能,独立部署、运行,通过轻量级通信机制(如HTTP API或RPC)互联。相比单体应用,微服务提高了部署效率、团队协作效能和系统可用性,但也增加了系统复杂性、通信开销和数据一致性管理的难度。实现微服务架构涉及服务拆分、服务发现、配置管理、服务治理、数据一致性、安全性、监控与日志、持续集成与部署等多个方面。
573 4
|
Java API Nacos
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forge
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forge
1076 2
|
SQL 存储 OLAP
大数据-133 - ClickHouse 基础概述 全面了解
大数据-133 - ClickHouse 基础概述 全面了解
541 0
|
设计模式 Java 程序员
《On Java 8》中文版,又名《Java 编程思想》中文第五版
《On Java 8》中文版,又名《Java 编程思想》中文第五版
819 0
|
XML JSON API
微服务是什么
微服务是什么
1313 0
|
存储 分布式计算 MaxCompute
Hologres RoaringBitmap实践,千亿级画像数据秒级分析
本文将会分享Hologres RoaringBitmap 方案在画像分析的应用实践,实现更快更准的画像分析。
|
Prometheus 监控 Cloud Native
Flink 任务实时监控最佳实践(Prometheus + Grafana)打造企业级监控方案
我们都知道 Flink 任务是一个 7*24 小时不停运行的任务,所以对于任务的实时监控就显得尤为重要,因为任务运行的状态对于我们来说是一个黑盒,比如任务是否挂掉,是否存在反压,使用的内存,CPU 等情况我们是不知道的,虽然 Flink 的 UI 上面可以添加相关的 metrics 来查看,但是需要手动的一个一个添加,还是比较麻烦的,特别是在任务非常多的情况下.所以就需要有一种统一的监控方案来解决这个问题.Flink 本身提供了非常丰富的 Metric Reporters,比如 JMX InfluxDB Graphite Prometheus 等等,生产环境上用的比较多的是 InfluxDB
Flink 任务实时监控最佳实践(Prometheus + Grafana)打造企业级监控方案