华为云计算 云知识 Storm是什么
Storm是什么

Apache Storm是一个分布式、可靠、容错的实时流式数据处理的系统。在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。

图1 Storm系统架构

Storm是什么1

业务处理逻辑被封装进Storm中的Topology中。一个Topology是由一组Spout组件(数据源)和Bolt组件(逻辑处理)通过Stream Groupings进行连接的有向无环图(DAG)。Topology里面的每一个Component(Spout/Bolt)节点都是并行运行的。在Topology里面,可以指定每个节点的并行度,Storm则会在集群里面分配相应的Task来同时计算,以增强系统的处理能力。

图2 Topology

Storm是什么2

Storm有众多适用场景:实时分析、持续计算、分布式ETL等。Storm有如下几个特点:

适用场景广泛

易扩展,可伸缩性高

保证无数据丢失

容错性好

易于构建和操控

多语言

Storm作为计算平台,在业务层为用户提供了更为易用的业务实现方式:CQL(Continuous Query Language—持续查询语言)。CQL具有以下几个特点:

使用简单:CQL语法和标准SQL语法类似,只要具备SQL基础,通过简单地学习,即可快速地进行业务开发。

功能丰富:CQL除了包含标准SQL的各类基本表达式等功能之外,还特别针对流处理场景增加了窗口、过滤、并发度设置等功能。

易于扩展:CQL提供了拓展接口,以支持日益复杂的业务场景,用户可以自定义输入、输出、序列化、反序列化等功能来满足特定的业务场景

易于调试:CQL提供了详细的异常码说明,降低了用户对各种错误的处理难度。


上一篇:备案 下一篇:华为云开发者桌面全新发布CodeArts IDE for Python,极致优雅云原生开发体验