An Ultra-lightweight and Blazing-fast MQTT Broker for IoT Edge

Why NanoMQ

  • Ultra-Lightweight: Booting footprint is less than 200Kb in minimum feature set.
  • Asynchronous I/O: Parallelize computation for IoT & MQTT with built-in actor-model.
  • Multi-Threading: Scale-out easily to engage multiple cores with less CPU usage in the modern SMP system.
  • Blazing Fast: Achieve million-level TPS. Up to 10 times faster than Mosquitto on a multi-core CPU.
  • Cross-platform: Highly compatible and portable with any POSIX based platform.
  • Interoperability: Transparent and customizable data flow. EdgeOps friendly.

Key Features

  • Fully MQTT 5.0 Compliant: Fully support MQTT 5.0/3.1.1, Compatible with all standard open-source MQTT SDKs.
  • MQTT Bridges: Bridging message from edge to multiple clouds. In-line connections to Global cloud services.
  • Message Persistence: Preserve your business-critical data with built-in data persistence, and resume uploading automatically when the connection is restored.
  • Rule Engine: Unlock the flexibility of data with a SQL-based rule engine. Integrates with eKuiper to bring stream processing to the edge.
  • Integrability: Reduce the cost of integrating edge computing applications with event-driven WebHooks. Easy to maintain with EdgeOps friendly HTTP APIs.
  • All-round: Support multiple protocols such as ZeroMQ/nanomsg/NNG/WebSocket. Enabling flexible and diverse routing topology on edge with. Secure your IoT connections with TLS/SSL.

Architecture

NanoMQ is small but mighty. It is fully featured and competes in every perspective despite the tiny size.

  • Platform adaptor Layer: Detects whatever hardware and OS NanoMQ inhabited and provide compatible APIs, to avoid platform-lock-in problem.
  • Task Layer: It is a built-in actor model with thread-level parallelism, which make NanoMQ highly scalable on modern SMP system.
  • Transport Layer: Responsible for managing TCP/UDP stream of each pipe/client, and implement Zero-copy to reduce memory usage.
  • Protocol layer: Parse byte stream to MQTT message, generate MQTT events and manage in-flight window.
  • Application layer: Interact with rule-engine and global topic trie. Expose all MQTT messages and events to users with a lock-free state machine.