更新时间:2023-03-17 GMT+08:00

Storm与其他组件的关系

Storm,提供实时的分布式计算框架,它可以从数据源(如Kafka、TCP连接等)中获得实时消息数据,在实时平台上完成高吞吐、低延迟的实时计算,并将结果输出到消息队列或者进行持久化。Storm与其他组件的关系如图1所示:

图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界面可以收集Wokrer进程的Jstack、Heap日志,并且可以重启Worker进程。
  • 拓扑日志级别动态调整:提供命令行和Storm UI两种方式对运行中的拓扑日志进行动态修改。
  • 性能提升:与之前的版本相比,Storm的性能得到了显著提升。虽然,拓扑的性能和用例场景及外部服务的依赖有很大的关系,但是对于大多数场景来说,性能可以提升3倍。