在当当公司的大数据实践中,Storm是一个核心的实时数据处理系统,其设计旨在处理大规模、不断流动的数据流。Storm的特点包括高度可扩展性,能够轻松通过添加机器和提升运算并行度来适应增长的需求;它具备强大的容错机制,确保数据在处理过程中的完整性,即使遇到异常也能自动重试或调整处理逻辑;此外,Storm支持多种编程语言,使得开发更为灵活。
在当当的IT架构中,目前有12台服务器,其中8台用于线上处理,4台作为测试环境,每台服务器配置为8核128GB,这表明当当对其 Storm 集群有着高性能和稳定性的要求。Storm在当当的应用范围广泛,主要适用于流数据处理,能够实时处理源源不断的输入消息,并将其结果持久化存储。由于其分布式处理模式和低延迟,Storm还被用作分布式RPC框架,提供高效、可靠的服务。
在技术层面,Storm的核心组件包括:
1. **Topology**:这是Storm中的核心概念,代表了一个实时计算应用程序的逻辑。它类似于Hadoop MapReduceJob,但区别在于,Topology是持续运行的,除非明确停止。
2. **Stream**:消息流是Storm处理的基础,它是一系列无边界的消息tuple,通过分布式方式并行处理。Stream的定义由tuple的字段名和类型确定。
3. **Spout**:Spout是消息源,负责从外部数据源读取数据并将其转换为tuple发送到Topology。Spout可以是可靠或不可靠的,可靠Spout能确保消息重试处理。
4. **Bolt**:Bolt是Topology中的处理单元,它们接收Spout产生的tuple进行处理,执行业务逻辑。Bolt通常与其他Bolt和Spout相连,形成拓扑结构。
5. **Streamgrouping**:这是定义tuple如何在Bolts之间传递的关键概念,它决定了tuple的路由策略,如全局有序、shuffle、all等。
Storm在当当的运用既提升了数据处理效率,又保证了系统的弹性和可靠性,是构建实时数据分析和决策支持系统的重要工具。通过合理的拓扑设计和组件配置,当当能够灵活应对各种实时数据处理需求,实现数据驱动的业务优化。