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.