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

    | —Msg3—> Subscriber3


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

本地订阅(Local Subscription)

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

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

erlang.mk与relx

2.0版本分离 emqttd2.0 正式版 “西湖以西” - 图1 (opens new window) 主项目和发布项目 emq-relx2.0 正式版 “西湖以西” - 图2 (opens new window), 采用 erlang.mk2.0 正式版 “西湖以西” - 图3 (opens new window)relx2.0 正式版 “西湖以西” - 图4 (opens new window) 编译发布工具替换1.x版本使用的rebar,项目可以跨平台在Linux/Unix/Windows系统下编译。

CoAP协议支持

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

CoAP插件: https://github.com/emqtt/emq_coap2.0 正式版 “西湖以西” - 图5 (opens new window)

MQTT-SN协议支持

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

MQTT-SN插件: https://github.com/emqtt/emq_sn2.0 正式版 “西湖以西” - 图6 (opens new window)

‘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_docker2.0 正式版 “西湖以西” - 图7 (opens new window)

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_dashboard2.0 正式版 “西湖以西” - 图8 (opens new window)Web控制台插件(默认加载)
emq_auth_clientid2.0 正式版 “西湖以西” - 图9 (opens new window)ClientId认证插件
emq_auth_username2.0 正式版 “西湖以西” - 图10 (opens new window)用户名、密码认证插件
emq_auth_ldap2.0 正式版 “西湖以西” - 图11 (opens new window)LDAP认证/访问控制
emq_auth_http2.0 正式版 “西湖以西” - 图12 (opens new window)HTTP认证/访问控制
emq_auth_mysql2.0 正式版 “西湖以西” - 图13 (opens new window)MySQL认证/访问控制
emq_auth_pgsql2.0 正式版 “西湖以西” - 图14 (opens new window)PostgreSQL认证/访问控制
emq_auth_redis2.0 正式版 “西湖以西” - 图15 (opens new window)Redis认证/访问控制
emq_auth_mongo2.0 正式版 “西湖以西” - 图16 (opens new window)MongoDB认证/访问控制
emq_mod_rewrite2.0 正式版 “西湖以西” - 图17 (opens new window)重写主题(Topic)插件
emq_mod_retainer2.0 正式版 “西湖以西” - 图18 (opens new window)Retain消息存储模块
emq_mod_presence2.0 正式版 “西湖以西” - 图19 (opens new window)客户端上下线状态消息发布
emq_mod_subscription2.0 正式版 “西湖以西” - 图20 (opens new window)客户端上线自动主题订阅
emq_coap2.0 正式版 “西湖以西” - 图21 (opens new window)CoAP协议支持
emq_sn2.0 正式版 “西湖以西” - 图22 (opens new window)MQTT-SN协议支持
emq_stomp2.0 正式版 “西湖以西” - 图23 (opens new window)Stomp协议支持
emq_sockjs2.0 正式版 “西湖以西” - 图24 (opens new window)Stomp over SockJS协议支持
emq_recon2.0 正式版 “西湖以西” - 图25 (opens new window)Recon性能调试
emq_reloader2.0 正式版 “西湖以西” - 图26 (opens new window)Reloader代码热加载插件
emq_plugin_template2.0 正式版 “西湖以西” - 图27 (opens new window)插件开发模版