博客
关于我
[整理] 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/

    你可能感兴趣的文章
    PHP水仙花问题解法之一
    查看>>
    php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
    查看>>
    php注册页面实现注册后跳转页面
    查看>>
    PHP消息队列的实现方式与详解,值得一看
    查看>>
    PHP混合Go协程并发
    查看>>
    php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
    查看>>
    PHP源码安装后如何新增模块
    查看>>
    php源码详细安装步骤,linux下php源码安装步骤
    查看>>
    php漏洞tips
    查看>>
    php版Zencoding之 phpstorm
    查看>>
    PHP版本升级5.4手记
    查看>>
    php版本升级总结
    查看>>
    php版本微信公众号开发
    查看>>
    php版的微信公众号开发演示
    查看>>
    php生成html文件的多种方法介绍
    查看>>
    php生成二维码到图片上
    查看>>
    php生成二维码并下载图片(适应于框架)
    查看>>
    PHP生成及获取JSON文件的方法
    查看>>
    PHP生成唯一不重复的编号
    查看>>
    PHP生成器-动态生成内容的数组
    查看>>