2.0 正式版 “西湖以西”

发布日期: 2016-11-24

版本别名: 西湖以西(West of West Lake)

EMQ-2.0版本正式发布!EMQ-1.0版本产品环境下已支持900K并发连接,EMQ-2.0版本重构了整个项目架构并正式支持共享订阅功能:

  1. 支持共享订阅(Shared Subscription)与本地订阅(Local Subscription),解决MQTT协议负载平衡消费问题;
  2. 支持CoAP(RFC 7252)、MQTT-SN协议和网关,支持CoAP、MQTT-SN客户端与MQTT客户端互通;
  3. 重构配置文件格式与加载方式,支持用户友好的’K = V’文件格式,支持操作系统环境变量;
  4. 增加了扩展钩子和大量的认证插件,支持与大部分数据库或NoSQL的认证集成;
  5. 支持全平台编译部署,Linux/Unix/Windows以及ARM平台网关,支持Docker镜像制作。

共享订阅(Shared Subscription)

共享订阅(Shared Subscription)支持在多订阅者间采用分组负载平衡方式派发消息:

  1. ---------
  2. | | --Msg1--> Subscriber1
  • Publisher—Msg1,Msg2,Msg3—>| EMQ | —Msg2—> Subscriber2

    1. | --Msg3--\> Subscriber3

使用方式: 订阅者在主题(Topic)前增加’$queue’或’$share/\/‘前缀。

本地订阅(Local Subscription)

本地订阅(Local Subscription)只在本节点创建订阅与路由表,不会在集群节点间广播全局路由,非常适合物联网数据采集应用。

使用方式: 订阅者在主题(Topic)前增加’$local/‘前缀。

erlang.mk与relx

2.0版本分离 emqttd 主项目和发布项目 emq-relx, 采用 erlang.mkrelx 编译发布工具替换1.x版本使用的rebar,项目可以跨平台在Linux/Unix/Windows系统下编译。

CoAP协议支持

2.0版本支持CoAP协议(RFC7252),支持CoAP网关与MQTT客户端互通。

CoAP插件: https://github.com/emqtt/emq_coap

MQTT-SN协议支持

2.0版本支持MQTT-SN协议,支持MQTT-SN网关与MQTT客户端互通。

MQTT-SN插件: https://github.com/emqtt/emq_sn

‘K = V’格式配置文件

2.0版本支持用户友好的’K = V’格式配置文件etc/emq.conf:

  1. node.name = emqttd@127.0.0.1
  2. ...
  3. mqtt.listener.tcp = 1883
  4. ...

操作系统环境变量

2.0版本支持操作系统环境变量。启动时通过环境变量设置EMQ节点名称、安全Cookie以及TCP端口号:

  1. EMQ_NODE_NAME=emqttd@127.0.0.1
  2. EMQ_NODE_COOKIE=emq_dist_cookie
  3. EMQ_MAX_PORTS=65536
  4. EMQ_TCP_PORT=1883
  5. EMQ_SSL_PORT=8883
  6. EMQ_HTTP_PORT=8083
  7. EMQ_HTTPS_PORT=8084

Docker镜像支持

EMQ-2.0版本支持Docker镜像制作,Dockerfile开源在: https://github.com/emqtt/emq_docker

Windows平台支持

2.0版本完整支持Windows平台的编译、发布与运行,支持Windows平台下的’emqttd_ctl’控制命令,支持在Windows节点间的集群。

问题与改进

764: add mqtt.cache_acl option

667: Configuring emqttd from environment variables

722: mqtt/superuser calls two times emqtt_auth_http

754: “-heart” option for EMQ 2.0

741: emq_auth_redis cannot use hostname as server address

扩展插件

2.0版本发布的认证与扩展插件列表:

插件说明
emq_dashboardWeb控制台插件(默认加载)
emq_auth_clientidClientId认证插件
emq_auth_username用户名、密码认证插件
emq_auth_ldapLDAP认证/访问控制
emq_auth_httpHTTP认证/访问控制
emq_auth_mysqlMySQL认证/访问控制
emq_auth_pgsqlPostgreSQL认证/访问控制
emq_auth_redisRedis认证/访问控制
emq_auth_mongoMongoDB认证/访问控制
emq_mod_rewrite重写主题(Topic)插件
emq_mod_retainerRetain消息存储模块
emq_mod_presence客户端上下线状态消息发布
emq_mod_subscription客户端上线自动主题订阅
emq_coapCoAP协议支持
emq_snMQTT-SN协议支持
emq_stompStomp协议支持
emq_sockjsStomp over SockJS协议支持
emq_reconRecon性能调试
emq_reloaderReloader代码热加载插件
emq_plugin_template插件开发模版