Agregación IoT en el Edge & Telemetría
En entornos industriales, hogares inteligentes y escenarios de edge computing, los recursos de hardware son muy limitados. Ejecutar una Java Virtual Machine completa para Kafka, o el runtime de Erlang para RabbitMQ, en una Raspberry Pi o en un IPC industrial (PC Industrial) suele ser excesivo y desperdicia memoria valiosa.
Aquí es donde brilla el binario estático de 13MB de TinyMQ.
El Desafío
Tienes decenas de sensores locales (temperatura, humedad, movimiento, RFID) que publican datos de telemetría vía MQTT. Necesitas un broker local que:
- Agregue el tráfico local.
- Proporcione un buffer si la conexión a internet upstream se cae.
- Reenvíe los datos de forma segura a una aplicación cloud centralizada vía HTTP REST.
La Solución TinyMQ
Despliega TinyMQ en el dispositivo edge usando la imagen Docker scratch.
- Ingesta: El Gateway MQTT v3.1.1 integrado en TinyMQ escucha en el puerto
1883y acepta conexiones de todos los sensores locales. - Buffer: El Write-Ahead Log (WAL) persiste los mensajes en la tarjeta SD. Si el dispositivo edge pierde su conexión 4G/Wi-Fi, TinyMQ sigue ingiriendo mensajes hasta el límite de
TINYMQ_MAX_MESSAGES. - Reenvío: Usando las Webhook Subscriptions de TinyMQ, el broker se configura para hacer
POSTautomáticamente de los mensajes a tu API de ingesta en la nube.
Ejemplo de Configuración en el Edge
Configura TinyMQ con límites de memoria agresivos para asegurarte de que el dispositivo edge nunca se quede sin RAM, confiando en el disco para la durabilidad:
services:
tinymq-edge:
image: ghcr.io/x-name15/tinymq:latest
restart: always
ports:
- "1883:1883"
environment:
# Enable strict disk sync for durability on power loss
- TINYMQ_FSYNC=true
# Protect RAM: Max 10,000 messages in memory per topic
- TINYMQ_MAX_MESSAGES=10000
# Drop oldest messages if the buffer fills up during a long network outage
- TINYMQ_DEFAULT_POLICY=drop-oldest
volumes:
- ./tinymq-data:/home/tinymq/data
Reenvío a la Nube (Webhook)
Usa la CLI de TinyMQ para registrar el webhook en la nube. El webhook cuenta con backoff exponencial integrado, lo que significa que gestionará con elegancia las caídas del cloud upstream.
tmq webhook add \
--topic "sensors.*" \
--url "https://api.mycloud.com/ingest" \
--secret "cloud_hmac_secret"
Por Qué Destaca Aquí
- Sin Dependencias del SO: Puede ejecutarse directamente sobre una build mínima de Alpine Linux o Yocto.
- Límites de Recursos: Los límites estrictos en el uso de memoria evitan que el broker cause panics del kernel por Out-Of-Memory (OOM) en el host.
- Resiliencia: Descartar los mensajes más antiguos garantiza que el sistema se recupere con elegancia de cortes prolongados sin intervención del operador.