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:


 

Harshvardhan Mishra

I am an IoT (Internet of Things) Enthusiast and Blogging is my Passion. Follow and send tweets me on @harshvardhanrvm

5 thoughts on “VerneMQ – Clustering MQTT for high availability and scalability

Leave a Reply

%d bloggers like this: