This repository has been archived by the owner on Jun 16, 2023. It is now read-only.
Publish 2.1.1 to Maven Center repository
Publish 2.1.1 to Maven Center repository
For Chinese release notes, please refer to https://github.com/alibaba/jstorm/blob/master/history_cn.md
New features
- 1.5~6x performance boost from worst to best scenarios compared to JStorm-2.1.0
- Add application-level auto-batch
- Add independent control channel to separate control msgs from biz msgs to guarantee high priority for control msgs
- Dramatic performance boost in metrics, see "Improvements" section
- Support jdk1.8
- Add Nimbus hook and topology hook
- Metrics system:
- Support disable/enable metrics on the fly
- Add jstorm metrics design docs, see JSTORM-METRICS.md
- JStorm web UI:
- Add zookeeper viewer in web UI, thanks to @dingjun84
- Add log search and deep log search, support both backward search and forward search
- Support log file download
- Support changing log level on the fly
- Change error structure in zk, add errorLevel, errorCode and duration.
- Add supervisor health check
- Add -Dexclude.jars option to enable filtering jars manually
Improvements
- Metrics:
- use JHistogram/JMeter instead of Histogram/Meter, change internal Clock.tick to System.currentTimeMillis to improve performance (50+% boost in Meter and 25%+ boost in Histogram)
- add TupleLifeCycle metric
- add supervisor metrics: total_cpu_usage, total_mem_usage, disk_usage
- remove some unnecessary metrics like emitTime, etc.
- Use HeapByteBuffer instead of List to transmit metric data points, reduce 60+% metrics memory usage
- Change sample rate from 10% to 5% by default
- Remove AsmTimer and related code
- Log related:
- Use logback by default instead of log4j, exclude slf4j-log4j12 dependency
- Use jstorm.log.dir property instead of ${jstorm.home}/logs, see jstorm.logback.xml
- Change all log4j Logger's to slf4j Logger's
- Set default log page size(log.page.size) in defaults.yaml to 128KB (web UI)
- Change topology log structure, add ${topology.name} directory, see jstorm.logback.xml
- Add timestamp in supervisor/nimbus gc log files; backup worker gc log before launching a new worker;
- Set logback/log4j file encoding to UTF-8
- Refine backpressure stragety to avoid over-backpressure
- Change acker pending rotating map to single thread to improve performance
- Update RefreshConnections to avoid downloading assignments from zk frequently
- Change default memory of Supervisor to 1G (previous 512MB)
- Use ProcessLauncher to launch processes
- Add DefaultUncaughtExceptionHandler for supervisor and nimbus
- Change local ports to be different from 0.9.x versions (supervisor.slots.ports.base, nimbus.thrift.port,
nimbus.deamon.logview.port, supervisor.deamon.logview.port) - Change highcharts to echarts to avoid potential license violation
- Dependency upgrades:
- Upgrade kryo to 2.23.0
- Upgrade disruptor to 3.2.2
Bug fix
- Fix deadlock when starting workers
- Fix the bug that when localstate file is empty, supervisor can't start
- Fix kryo serialization for HeapByteBuffer in metrics
- Fix total memory usage calculation
- Fix the bug that empty worker is assigned when configured worker number is bigger than the actual number for user defined scheduler
- Fix UI log home directory
- Fix XSS security bug in web UI
- Don't start TopologyMetricsRunnable thread in local mode, thanks to @L-Donne
- Fix JSTORM-141, JSTORM-188 that TopologyMetricsRunnable consumes too much CPU
- Remove MaxTenuringThreshold JVM option support jdk1.8, thanks to @249550148
- Fix possible NPE in MkLocalShuffer
Deploy and scripts
- Add cleanup for core dumps
- Add supervisor health check in healthCheck.sh
- Change jstorm.py to terminate the original python process when starting nimbus/supervisor
Upgrade guide
- JStorm 2.1.1 is mostly compatible with 2.1.0, but it's better to restart your topologies to finish the upgrade.
- If you're using log4j, be cautious that we have switched default logging system to logback, if you still want to use log4j, please add "user.defined.log4j.conf: jstorm.log4j.properties" to your conf/storm.yaml.
- If you're using slf4j-api + log4j, please add slf4j-log4j12 dependency in your pom config.