From 182f670b34f58f0d67ba6d19c68616c059772f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 22 Jul 2026 10:26:24 +0400 Subject: [PATCH] =?UTF-8?q?README:=20=D0=B4=D0=B5=D1=82=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D1=81=D1=85=D0=B5=D0=BC=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=B9=D0=BF=D0=BB=D0=B0=D0=B9=D0=BD=D0=B0,=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=B0=D0=B6?= =?UTF-8?q?=D0=B4=D0=BE=D0=B3=D0=BE=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iot-rmq-demo/README.md | 45 ++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/iot-rmq-demo/README.md b/iot-rmq-demo/README.md index 573d9e4..c12da22 100644 --- a/iot-rmq-demo/README.md +++ b/iot-rmq-demo/README.md @@ -2,20 +2,45 @@ Демо-стенд «Умный дом»: 6 сервисов Nubes Cloud, развёртывание через Terraform. -## Архитектура +## Пайплайн данных + +Эмуляция IoT-датчиков «Умного дома»: температура, влажность, энергопотребление. ``` -Producer (Node.js) → RabbitMQ → Consumer (Node.js) → Redis + MongoDB → Dashboard (Node.js + Chart.js) +┌──────────┐ AMQP ┌──────────┐ AMQP ┌──────────┐ +│ Producer │ ──────────→ │ RabbitMQ │ ──────────→ │ Consumer │ +│ Node.js │ iot-events │ (очередь)│ iot-events │ Node.js │ +└──────────┘ └──────────┘ └────┬─────┘ + │ + ┌────────────────────────┼────────────────────────┐ + │ запись │ запись │ + ▼ ▼ ▼ + ┌──────────┐ ┌──────────┐ ┌──────────┐ + │ Redis │ │ MongoDB │ │ Redis │ + │ latest │ │ архив │ │ counters │ + │ recent │ │ (7 дн.) │ │ │ + └────┬─────┘ └──────────┘ └────┬─────┘ + │ │ + │ ┌────────────────────────────────────┘ + │ │ чтение + ▼ ▼ + ┌──────────────┐ + │ Dashboard │ + │ Node.js + │ + │ Chart.js │ + └──────────────┘ ``` -| Сервис | Тип Nubes | Роль | -|---|---|---| -| `iot-rmq` | RabbitMQ | Очередь сообщений | -| `iot-rds` | Redis | Кэш дашборда | -| `iot-mgo` | MongoDB | Постоянный архив | -| `iot-prod` | Node.js (22) | Генератор IoT-событий | -| `iot-cons` | Node.js (22) | Обработчик очереди | -| `iot-dash` | Node.js (22) | Веб-дашборд | +| # | Сервис | Тип Nubes | Что делает | +|---|---|---|---| +| 1 | **Producer** | Node.js (22) | Генерирует случайные события от 8 датчиков (3 типа: температура °C, влажность %, энергопотребление kW). Раз в 3 секунды отправляет JSON-событие в очередь RabbitMQ `iot-events`. | +| 2 | **RabbitMQ** | RabbitMQ | Очередь сообщений AMQP. Держит события, пока Consumer не заберёт. `durable: true` — сообщения переживают рестарт брокера. | +| 3 | **Consumer** | Node.js (22) | Читает очередь RabbitMQ. Каждое событие пишет параллельно в Redis (оперативный кэш: последние значения + счётчики + лента) и MongoDB (постоянный архив с TTL 7 дней). | +| 4 | **Redis** | Redis | Кэш для Dashboard: `iot:latest` (hash — актуальные значения датчиков), `iot:counters` (hash — счётчики по типам), `iot:recent` (zset — лента 1000 событий). | +| 5 | **MongoDB** | MongoDB | Архив всех событий в коллекции `iot_events`. TTL-индекс на 7 дней — автоочистка. | +| 6 | **Dashboard** | Node.js (22) | Веб-интерфейс. Читает только Redis, отдаёт JSON-API и HTML с графиками Chart.js (bar chart значений, doughnut счётчиков, таблица событий). Автообновление каждые 3 сек. | + +Все соединения между сервисами — внутренние, через K8s Service (`.svc.cluster.local`). Наружу торчат только HTTP-эндпоинты Node.js-приложений. ## Быстрый старт