参考资料

  1. YOURLS (Your Own URL Shortener) 是一个开源的PHP程序,允许用户创建和管理自定义短链接
  2. Storm 是一个分布式实时计算系统
  3. Pony 是一个高性能、并发安全的编程语言,专为构建高并发系统设计
  4. MeiliSearch 是一个快速、开源的全文搜索引擎
  5. Draw 是一款开源的绘图工具
  6. 如何优化Docker镜像?
  7. Reader 是一款开源的 RSS 阅读器和稍后阅读工具
  8. Backdrop 是一个轻量级、高性能的反向代理工具

Storm 详细简介

Storm 是一个分布式实时计算系统,用于处理大规模数据流。由 Twitter 开发并开源,现为 Apache 顶级项目。核心设计目标是高吞吐、低延迟和容错性,适用于实时分析、在线机器学习等场景。

特点

  • 实时处理:毫秒级延迟

  • 水平扩展:支持动态增加节点

  • 容错机制:自动重启失败任务

  • 多语言支持:原生支持 Java/Clojure,通过 Shell/Python 适配器扩展

  • 精确一次语义:通过 Trident 实现

最新更新内容及时间

  • v2.5.0 (2023-05-18):

    • 移除对 Java 8 的支持(最低要求 Java 11)

    • 新增 Prometheus 监控集成

    • 优化 Kafka 连接器性能

    • 修复 ZooKeeper 连接泄漏问题

下载地址

官网地址

https://storm.apache.org

文档地址

Docker 安装示例

# 单节点模式
docker run -it -p 8080:8080 \
  -e STORM_ZOOKEEPER_SERVERS="zookeeper" \
  apache/storm:2.5.0 storm nimbus

# 使用 docker-compose
version: '3'
services:
  nimbus:
    image: apache/storm:2.5.0
    command: storm nimbus
    ports:
      - "6627:6627"
  supervisor:
    image: apache/storm:2.5.0
    command: storm supervisor
    depends_on:
      - nimbus

YAML 配置教程

# storm.yaml 示例
storm.zookeeper.servers:
  - "zk1.example.com"
  - "zk2.example.com"

nimbus.seeds: ["nimbus1.example.com"]

supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

storm.local.dir: "/var/lib/storm"

# 启用 Kerberos 认证
storm.thrift.transport: "org.apache.storm.security.auth.kerberos.KerberosSaslTransportPlugin"

常见错误及解决

  1. No space left on device

    • 原因:storm.local.dir 磁盘空间不足

    • 解决:清理工作目录或增加存储空间

  2. Connection refused to ZooKeeper

    • 原因:ZK 服务未启动或网络不通

    • 解决:检查 storm.zookeeper.servers 配置和防火墙设置

  3. Topology submission timeout

    • 原因:Nimbus 负载过高

    • 解决:增加 nimbus.thrift.max_buffer_size 或优化拓扑结构

  4. Worker heartbeat timeout

    • 原因:Supervisor 节点资源不足

    • 解决:调整 worker.heap.memory.mb 或减少并发数

  5. Serialization exception

    • 原因:使用了不可序列化的 Spout/Bolt

    • 解决:实现 Serializable 接口或使用 Kryo 序列化