Storm与其他组件的关系
Storm,提供实时的分布式计算框架,它可以从数据源(如Kafka、TCP连接等)中获得实时消息数据,在实时平台上完成高吞吐、低延迟的实时计算,并将结果输出到消息队列或者进行持久化。Storm与其他组件的关系如图1所示:
Storm和Streaming的关系
Storm和Streaming都使用的开源Apache Storm内核,不同的是,Storm使用的内核版本是1.2.1,Streaming使用的是0.10.0。Streaming组件一般用来在升级场景继承过渡业务,比如之前版本已经部署Streaming并且有业务在运行的情况下,升级后仍然可以使用Streaming。如果是新搭建的集群,则建议使用Storm。
Storm 1.2.1新增特性说明:
- 分布式缓存:提供命令行工具共享和更新拓扑的所需要的外部资源(配置),无需重新打包和部署拓扑。
- Native Streaming Window API:提供基于窗口的API。
- 资源调度器:新增基于资源的调度器插件,可以在拓扑定义时指定可使用的最大资源,并且通过配置的方式指定用户的资源配额,从而管理该用户名下的拓扑资源。
- State Management:提供带检查点机制的Bolt接口,当事件失败时,Storm会自动管理bolt的状态并且执行恢复。
- 消息采样和调试:在Storm UI界面可以开关拓扑或者组件级别的调试,将流消息按采样比率输出到指定日志中。
- Worker动态分析:在Storm UI界面可以收集Worker进程的Jstack、Heap日志,并且可以重启Worker进程。
- 拓扑日志级别动态调整:提供命令行和Storm UI两种方式对运行中的拓扑日志进行动态修改。
- 性能提升:与之前的版本相比,Storm的性能得到了显著提升。虽然,拓扑的性能和用例场景及外部服务的依赖有很大的关系,但是对于大多数场景来说,性能可以提升3倍。