博客
关于我
[整理] Storm 基础
阅读量:433 次
发布时间:2019-03-06

本文共 1345 字,大约阅读时间需要 4 分钟。

Storm技术解析:分布式实时计算引擎

什么是Storm?

Apache Storm 是一款开源的分布式实时计算系统,旨在处理大规模数据流中的复杂计算任务。Storm 的核心特点体现在三个关键属性上:

  • 分布式:Storm 的计算和存储分散在多台服务器上,通过集群方式完成任务。
  • 实时:系统能够在毫秒级或秒级响应数据,适合对实时性有严格要求的场景。
  • 计算:Storm 可以对流数据进行复杂的处理,如数据清洗、转换等。
  • Storm 的设计理念强调高效处理大规模数据流,常见应用包括实时数据分析、网络流量监控、金融交易系统等。

    我们使用Storm做了什么?

    在实际项目中,我们利用Storm构建了一套消息处理系统,主要用于解决以下问题:

  • 消息下发监控:跟踪消息的传输状态,包括是否成功下发、用户是否接收、消息是否被点击等。
  • 消息效果分析:统计消息的传递量、有效率以及用户互动数据。
  • 基于这些需求,我们设计并实现了一套埋点方案,通过在关键节点打日志的方式,记录消息在不同环节的状态和处理结果。

    背景与需求

    消息管理平台虽然功能简单,但其后端涉及多个系统,消息传输链路较长。一个消息可能需要经过7个系统处理,每个环节都可能导致消息丢失或失败。这种复杂性使得问题排查效率低下,尤其是面对突发问题时,及时响应变得尤为重要。

    我们需要实现两个核心功能:

  • 快速定位消息问题:能够查询用户当天所有消息的下发情况,明确是哪个系统导致消息未送达。
  • 实时下发数据分析:查看消息的整体下发情况,包括传递量、过滤量和用户点击数据。
  • 需求实现

    为了解决上述问题,我们设计了一个基于Storm的埋点方案。具体实现步骤如下:

  • 日志收集:利用logAgent将各系统的日志收集到Kafka中。
  • 日志清洗:Storm负责对收集的日志进行清洗处理,提取有用信息。
  • 数据输出:清洗后的数据输出至Redis(实时)或Hive(离线)。
  • Storm在日志清洗环节发挥了关键作用。通过对关键节点进行埋点,我们可以收集到消息在传输过程中的完整状态。例如:

    • 11:用户未绑定手机号。
    • 12:用户最近收到相同消息。
    • 13:用户屏蔽了消息...

    这些点位记录在关键位置,形成完整的消息传输轨迹,便于后续分析和排查。

    Storm架构

    Storm的工作流程如下:

  • 任务提交:通过StormSubmitter提交任务,上传至Nimbus节点。
  • Nimbus处理:Nimbus将任务交给Supervisor节点,负责任务分配和监控。
  • Worker进程:Supervisor创建Worker进程,每个Worker负责多个Task。
  • Task执行:Task作为Bolt或Spout的实例,处理数据流。
  • Storm的架构具有高度的并行处理能力,支持多种Grouping策略。例如:

    • shuffleGrouping:随机分组,提升数据分布性。
    • fieldsGrouping:按字段分组,确保同一数据流路处理一致性。

    最后

    Storm 是一个强大而灵活的分布式计算框架。通过合理配置和拓扑结构设计,可以实现复杂的数据处理任务。对于实时数据分析和消息处理,Storm 展现出显著优势。

    如果想深入了解Storm 的具体实现和使用方法,可以参考其官方文档或相关技术博客。

    转载地址:http://ehcuz.baihongyu.com/

    你可能感兴趣的文章
    NOIP2014 提高组 Day2——寻找道路
    查看>>
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>