EMQ X v5.0-beta.1 is an early release for users to experiment with the new features with the configuration interface.
Please note that the configuration & provisioning HTTP APIs are incomplete and planed for beta.2 release,
so the GUI dashboard is not started by default.
(for brave users who want to peek, export _EMQX_ENABLE_DASHBOARD=1
to enable)
Highlighted feature list
Unified authentication management
Replaces small plugins with scattered configurations etc. Now the authentication config namespace groups all the supported auth backends including the built-in database (Mnesia). It now also supports multiple authentication backends with deterministic ordering -— which enables smooth extension or migration of external authentication providers. Authentication can be either configured globally (like before), or configured to be overridden by individual listeners, making it a lot more flexible for finer-grained access control.
Unified authorisation management
Also known as the ACL, the small plugins with scattered configurations from previous versions are now replaced by one config group. Although it has to be configured differently comparing to previous versions (4.3 or earlier), the acl.conf file is still compatible with one enhancement: the ACL rules are extended with regexp to match username or client-ID. Besides the file provider, the built-in database provides the ability to support massive number of per-user or per-client rules. We believe this two authorisation providers should meet most of the use cases. Nonetheless, the external providers from emqx-auth-xxx plugins are also brought to the new version.
Unified gateway management
This is to also replace small plugins with scattered configurations etc. We have included all protocol access plugins into the gateway concept, such as Stomp, MQTT-SN, CoAP and LwM2M. Unlike previous versions, each type of gateway can be configured with a separate authenticator。 In addition, the CoAP protocol has been redesigned based on Publish-Subscribe Broker for the Constrained Application Protocol (CoAP) to meet the standard protocol specifications.
Unified data-bridge and rule-engine features
Previously the bridges and rule-engine are implemented separately. In 5.0 rule-engine's data sources and data sinks utilises the underlying data-bridge
HOCON format config
HOCON replaces the old cuttlefish config. The config style is mostly backward compatible, and it also supports nginx-like nested configuration layout, and a much better array data structure support. The improved schema implementation also makes it a lot easier to manage and test the changes in configs.
Async database replication (Mria project)
In previous versions, the EQM X cluster nodes form a full-mesh network for data replication. This network topology is not quite scalable and the overhead of database transactions increases significantly when the size of the cluster grows. In 5.0, the cluster forms a mesh + star topology. A node can be configured as either a stateful core node or a stateless replicant node. core nodes mostly behave the same as the regular node in previous versions, and forms a small mesh network, the replicant role nodes are the ‘stars’ in this mesh+star topology, which can be scaled up and down more freely.
MQTT over QUIC
EMQ X 5.0 comes with a configurable QUIC protocol listener, which allows users to switch MQTT's transport layer from TCP/TSL to QUIC. As an experimental feature, this is for brave users to play with, we will learn together and build better MQTT networks together.