EMQ 2.1.0-beta.1 发布, 百万级 MQTT 消息服务器

来源: 投稿
作者: emqtt
2017-02-24

EMQ v2.1.0-beta.1 版本正式发布。

改进Session/Inflight窗口设计,一个定时器负责全部Inflight QoS1/2消息重传。优化MQTT连接的GC机制,降低高消息吞吐情况下的CPU/内存占用。

EMQ 2.1.0版本正式采用'Semantic Versioning 2.0.0' 规范创建发布版本号,按'Tick-Tock'方式按月发布迭代版本。奇数版本问题修复与性能改进,偶数版本架构改进和新功能布。

注: EMQ 2.1+ 依赖Erlang/OTP R19+源码编译

GC优化

1. WebSocket、Client、Session进程空置一段时间后自动Hibernate与GC。

2. 新增'mqtt.conn.force_gc_count'配置,Client、Session进程处理一定数量消息后强制GC。

3. 大幅降低WebSocket、Client、Session进程fullsweep_after设置,强制进程深度GC。

新增功能

单Client、Session进程统计

支持对单个Client、Session进程进行统计,etc/emq.conf配置文件中设置'enable_stats'开启:

mqtt.client.enable_stats = on

mqtt.session.enable_stats = on

新增'missed'统计指标

EMQ收到客户端PUBACK、PUBREC、PUBREL、PUBCOMP报文,但在Inflight窗口无法找到对应消息时,计入missed统计指标:

packets/puback/missed

packets/pubrec/missed

packets/pubrel/missed

packets/pubcomp/missed

Syslog集成

支持输出EMQ日志到Syslog,etc/emq.config配置项:

## Syslog. Enum: on, off
log.syslog = on

##  syslog level. Enum: debug, info, notice, warning, error, critical, alert, emergency
log.syslog.level = error

Upgrade QoS支持

支持根据订阅升级QoS,etc/emq.conf配置项:

mqtt.session.upgrade_qos = on

新增'acl reload'命令行

Reload acl.conf without restarting emqttd service (#885)

项目改进

etc/emq.conf 配置项变更

1. 变更 mqtt.client_idle_timeout 为 mqtt.client.idle_timeout
2. 新增 mqtt.client.enable_stats 配置项
3. 新增 mqtt.session.upgrade_qos 配置项
4. 删除 mqtt.session.collect_interval 配置项
5. 新增 mqtt.session.enable_stats 配置项
6. 变更 mqtt.session.expired_after 为 mqtt.session.expiry_interval

Hooks API

Hooks模块支持'tag'方式重复注册相同的回调函数。

合并扩展模块到emq_modules项目

合并emq_mod_presence, emq_mod_subscription, emq_mod_rewrite到emq_modules项目

变更emq_mod_retainer为emq_retainer项目

插件升级

Dashboard插件

Overview页面增加missed相关统计指标。
Client页面增加SendMsg、RecvMsg统计指标。
Session页面增加DeliverMsg、EnqueueMsg指标。

recon插件

变更recon.gc_interval配置项类型为duration

reloader插件

变更reloader.interval配置项类型为duration

HTTP认证插件

修复superuser认证导致ACL不可用问题。

下载地址:

展开阅读全文
31 收藏
分享
加载中
更多评论
4 评论
31 收藏
分享
返回顶部
顶部