今天,我们将了解一下用于 MinIO 服务器的物联网压力计。这是一个由 Alex Ellis 使用 Raspberry Pi、Docker 和 MinIO 构建的酷炫黑客项目。
在为开源 MinIO 项目贡献代码以启用 Webhook 后,Alex 想要可视化通过其服务器传递的流量。他的黑客项目展示了对象上传到实时服务器的速率。
在这篇文章中,我们将进行现场演示,然后介绍物料清单、高级架构图,最后提供 Github 上源代码的链接,以便您自己尝试。
现场演示
这是一个压力计运行的视频。
物料清单
- 1x 带 40 针公头插座的 Raspberry Pi Zero
- 1x 8GB 10 类 microSD 卡
- 1x Pimoroni Blinkt! 8 LED 扩展板
- USB-OTG 到 USB-A 数据线
- 在云端、本地或您的笔记本电脑上运行的 MinIO 服务器。
该 Blinkt! 价格约为 5 美元,由英国 Pimoroni 公司创建,作为物联网项目的廉价有效输出。通过简单的 Python 或 Golang 库,您可以编程 8 个 RGB LED 并构建有趣的项目。
Alex 在去年的 Dockercon 上做了一个演讲和演示,名为“使用物联网保护数据中心”。它包括六个 Raspberry Pi 传感器和 Blinkt,所有这些都通过 Docker 和 Redis 连接,以提供来自服务器机房的热问题和篡改的实时警报。您可以在 此处观看 Container Camp,伦敦的现场演示视频和演讲。
技术概述

- 任何兼容的 S3 客户端(例如 MinIO CLI)都将文件上传到 S3 存储桶
- MinIO 服务器(在云端、本地、您的笔记本电脑或 RPi 上运行)通过 HTTP/s 生成 Webhook
- 在 RPi 上运行的 Node.js/Express.js 微服务接收 Webhook 并递增实时 Redis 计数器
objects_put
- Python 程序不断轮询 Redis 并根据
objects_put
速率的高低更新 Pi 上的颜色
问答
- 压力是如何下降的?Redis 有一个名为
EXPIRE
的自动过期命令——它用于将计数器转换为滚动速率。 - 代码是如何部署到 RPi 上的?三个活动部分——Node.js、Python 和 Redis 都使用 Docker 进行容器化,并且可以使用 Docker Compose 一次性设置。
- 如何在 MinIO 上启用 Webhook?请参阅 MinIO Webhook 的介绍性博文。
- 我可以在 Raspberry Pi 上直接运行 MinIO 服务器吗?MinIO 可通过 Docker 或作为大多数常用平台的独立二进制文件获得,包括所有当前型号的 Raspberry Pi、Pine64 和其他片上系统板 (SoC)。
后续步骤
前往 MinIO 快速入门指南,并使用一条命令启动并运行 Docker。