VerneMQ – Clustering MQTT for high availability and scalability
Today we discuss about VerneMQ. Recently i published a post MQTT Servers/Brokers. Read this post for VerneMQ – Clustering MQTT for high availability and scalability
What is VerneMQ ?
VerneMQ is an enterprise ready, high-performance, distributed MQTT message broker. It scales horizontally and vertically on commodity hardware to support a high number of concurrent publishers and consumers while maintaining low and predictable latency and fault tolerance. It plugins can be developed in Erlang, Elixir, Lua, and any programming language that can implement HTTP WebHooks. It uses modern broadcast protocols and LevelDB for state replication in a cluster. It is Open Source and Apache2 licensed.
It is first and foremost a MQTT publish/subscribe message broker which implements the OASIS industry standard MQTT protocol. But VerneMQ is also built to take messaging and IoT applications to the next level by providing a unique set of features related to scalability, reliability and high-performance as well as operational simplicity.
To achieve these goals VerneMQ is designed from the ground up to work as a distributed message broker, ensuring continued operation in the event of node or network failures and easy horizontal scalability. The underlying technology is a proven telecom grade technology stack providing a rock solid foundation for systems that must be in continuous operation around the clock. It’s also able to make efficient use of all available resources as a basis for easy vertical scalability.
It uses a master-less clustering technology. There are no special nodes like masters or slaves to consider when the inevitable infrastructure changes or maintenance windows require adding or removing nodes. This makes operating the cluster safe and simple.
MQTT 5.0 support now available.
Recommended :
VerneMQ is perfect for
- Mobile Messaging – Develop mobile messaging services with a much smaller overhead than XMPP. Open up new mobile use cases with low-latency bi-directional communication.
- Connecting IoT Field Devices – Monitor and control all devices you have out there in the field. Connect them to your data centers, backend services and smartphone apps. You can trust VerneMQ to hold it all together.
- Smart Infrastructure – Cities, Homes, Transportation. Mobile assets. From a small lab project to a successful industrial deployment of your solution: VerneMQ will handle your messages.
Features
VerneMQ implements the full MQTT 3.1, 3.1.1 and 5.0 specifications. The current list of core features include:
- QoS 0, QoS 1, QoS 2 levels
- File-based Authentication and Authorization
- PostgreSQL, MySQL, Redis & MongoDB Authentication and Authorization
- Bridge Support
- $SYS Tree for monitoring and reporting
- TLS (SSL) Encrypt
- Websockets Support
- Cluster Support
- Logging (Console, Files, Syslog)
- Reporting to Graphite
- Reporting to Prometheus
- Extensible Plugin architecture
- Shared Subscriptions
- Multiple Sessions per ClientId
- Session Balancing
- Message load regulation
- Message load shedding (for system protection)
- Offline Message Storage (based on LevelDB)
- Queue can handle messages FIFO or LIFO style.
- PROXY v2 Protocol
- Lua plugin scripting support
- Webhooks
- HTTP Administration API
Comparison Between MQTT Servers/brokers
Server | QoS 0 | QoS 1 | QoS 2 | auth | bridge | $SYS | SSL | dynamic topics | cluster | websockets | plugin system |
---|---|---|---|---|---|---|---|---|---|---|---|
2lemetry | § | ✘ | |||||||||
Jmqtt | § | § | § | ||||||||
Apache ActiveMQ | ✘ | ✘ | |||||||||
Apache ActiveMQ Artemis | ✘ | ✘ | |||||||||
Bevywise IoT Platform | rm | ||||||||||
emitter | § | ✘ | ✘ | ✘ | ✘ | ||||||
emqttd | |||||||||||
flespi | ✘ | ✘ | ✘ | ||||||||
GnatMQ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | |||||
HBMQTT | ✘ | ✘ | |||||||||
HiveMQ | |||||||||||
IBM MessageSight | ✘ | § | ✘ | ||||||||
JoramMQ | |||||||||||
Mongoose | ? | ? | ? | ? | ? | ? | ? | ? | ? | ||
moquette | ? | ? | ? | rm | ✘ | ||||||
mosca | ✘ | ? | ? | ? | ? | ✘ | ✘ | ||||
mosquitto | § | ||||||||||
MQTT.js | § | ✘ | ✘ | ✘ | ✘ | ||||||
MqttWk | ? | ✘ | |||||||||
RabbitMQ | ✘ | ✘ | ✘ | ? | ? | ? | |||||
RSMB | ✘ | ✘ | ✘ | ? | |||||||
Software AG Universal Messaging | ✘ | ✘ | rm | ✘ | |||||||
Solace | ✘ | § | ✘ | ||||||||
SwiftMQ | ✘ | ✘ | |||||||||
Trafero Tstack | ✘ | ✘ | ✘ | ✘ | ✘ | ||||||
VerneMQ | |||||||||||
WebSphere MQ | ? | ? | ? |
=> Key: supported ✘ not supported ? unknown § see limitations rm roadmap (planned) | Source: mqtt.org
How does VerneMQ compare to HiveMQ and MessageSight?
Both are high-performance, closed source brokers running on the Java VM. Both brokers are clusterable but lack proper documentation of their failure modes during the presence of network failures.
How does VerneMQ compare to RabbitMQ and EMQ?
All three brokers are implemented using Erlang and therefore benefit from the similar Erlang runtime characteristics. However, VerneMQ was build from the ground up to tolerate network failures and provides fine-grained control over the availability and consistency behaviour. Moreover, the underlying distributed data storage features automatic conflict resolution and recovers automatically from netsplits.
How To Install VerneMQ on UbunTu, RHEL, Docker, Debian and CentOS
Visit this post for Installtion : How To Install VerneMQ on UbunTu, RHEL, Docker, Debian and CentOS
You may like also:
- How To Create Secure MQTT Broker
- DHT11 sensor with NodeMCU using Arduino IDE
- Simple Raspberry Pi Home Security System
- Using Mq135 Sensor with InfluxDB
- Best OS for Raspberry Pi
- ROCK Pi 4 : Overview | Installation
- Remote control your Raspberry Pi from your PC with VNC!
- How To Use Raspberry pi in a truely headless mode
Pingback: VerneMQ – Clustering MQTT for high availability and scalability — IoTbyHVM – Explore TechBytes – hashstacks
Pingback: How To Install VerneMQ on UbunTu, RHEL, Docker, Debian and CentOS
Pingback: 6LoWPAN | ZigBee | 6LoWPAN Vs ZigBee - Explainer
Pingback: WiFi LoRA 32 (V2) ESP32 | Overview | Introduction
Pingback: Websockets with VerneMQ - IoTbyHVM - Bits & Bytes of IoT
Pingback: Connecting to VerneMQ Tutorial - IoTbyHVM - Bits & Bytes of IoT
Pingback: Vernemq Notes - Phanix's Blog