MQTT 消息服務器,emqttd 0.14.0 beta 發布
emqttd-0.14.0版本正式發布,改進PubSub路由模塊設計。改進協議、會話、路由層CPU占用。Benchmark測試單服務器(12Core, 32G)承載130萬MQTT連接。
改進
改進gproc_pool的使用方式,新增一個通用的emqttd_pool_sup模塊
重新設計emqttd_pubsub, 新增一個本地路由模塊emqttd_router
改進整個emqttd應用監控樹的設計,為emqttd_trace, emqttd_sysmon添加Supervisor
通過路由老化方式清理無訂閱的Topic
升級Dashboard、MySQL、PostgreSQL、Stomp、SockJS插件
管理命令行新增'topics'、'subscriptions'命令
刪除部分mnesia表索引、刪除mnesia:index_read API調用
提高訂閱(SUBSCRIBE)請求處理性能,每秒處理4000+以上
支持訂閱關系(Subscription)持久化,支持在Broker端維護訂閱關系
emqttd_ctl支持手工添加、刪除訂閱關系
Bugfix
emqttd_sm: 修改lookup_session/1的注釋錯誤 (#411)
reltool.config文件和發布包刪除observer應用(#410)
Benchmark
單臺12 Core, 32G CentOS服務器承載130萬MQTT連接,15G內存、200%CPU占用。
[emqttd]是采用Erlang語言開發,全面支持MQTT V3.1.1協議,支持集群和大規模連接的開源MQTT消息服務器。 [emqttd]致力于發布一個基于Erlang/OTP語言平臺,企業級穩定可靠,完全開源免費,可集群支持大規模物聯網、移動互聯網連接的MQTT消 息服務器。
# 完整的MQTT V3.1/V3.1.1協議支持
* 全面支持MQTT V3.1/V3.1.1協議規范
* QoS0/1/2消息發布與訂閱支持
* Session管理和離線消息支持
* Last Will消息支持
* Retained消息支持
* TCP/SSL連接支持
* MQTT over WebSocket連接支持
* HTTP Publish消息發布接口
* ‘$SYS/#’系統Topic支持
* 基于ClientId、IP地址認證支持
* 基于用戶名、密碼認證支持
* 基于ClientId、用戶名、IP地址的ACL訪問控制
* 多服務器集群(Cluster)支持
* 多節點橋接(Bridge)支持
* 單節點50萬+客戶端連接支持
* 插件擴展架構支持
* 通過Eclipse Paho項目的服務器互操作性測試
# 完全開放源碼,多節點集群支持
* 開放源碼, MIT開源軟件許可協議
* 多服務器集群, 大規模客戶端連接支持
* 安裝簡便, 下載解壓即可啟動運行
* 插件架構, 定制或擴展服務器功能
# 快速下載安裝
emqttd可跨平臺運行在Linux、FreeBSD、Windows與 Mac OS X。[http://emqtt.io/downloads]頁面下載程序安裝包。
解壓tgz格式程序包,到安裝目錄啟動。例如:
tar xvf emqttd-ubuntu64-0.8.1-alpha-20150529.tgz && cd emqttd
控制臺模式啟動,用于調試。控制臺可以打印所有收發的MQTT報文
./bin/emqttd console
守護進程模式啟動,默認占用1883端口用于MQTT連接,8083端口用于HTTP接口
./bin/emqttd start
查看運行狀態
./bin/emqttd_ctl status
停止
./bin/emqttd stop
下載源碼編譯:
git clone https://github.com/emqtt/emqttd.git
cd emqttd && make && make dist
HTTP消息發布接口測試
emqttd支持通過HTTP接口從應用程序向MQTT客戶端發布消息:
curl -v --basic -u user:passwd -d "qos=1&retain=0&topic=/a/b/c&message=hello" -k http://localhost:8083/mqtt/publish
URL: HTTP POST http://host:8083/mqtt/publish
參數:
* qos: QoS(0, 1, 2)
* retain: Retain(0, 1)
* topic: Topic
* message: Message
本文轉載自: https://github.com/emqtt/emqttd/releases/tag/0.14.0-beta