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.
[divider line_type="small" custom_height="50"]
Architecture
NanoMQ is small but mighty. It is fully featured and competes in every perspective despite the tiny size.
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.