久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > MQTT開源軟件之EMQ入門篇

MQTT開源軟件之EMQ入門篇 時間:2018-09-29      來源:未知

EMQ 2.0 消息服務器簡介

 EMQ (Erlang/Enterprise/Elastic MQTT Broker)是基于Erlang/OTP平臺開發的開源物聯網MQTT消息服務器。Erlang/OTP是出色的軟實時(Soft-Realtime)、低延時(Low-Latency)、分布式(Distributed)的語言平臺。MQTT是輕量的(Lightweight)、發布訂閱模式(PubSub)的物聯網消息協議。

 EMQ 項目設計目標是承載移動終端或物聯網終端海量的MQTT連接,并實現在海量物聯網設備間快速低延時(Low-Latency)消息路由:

1. 穩定承載大規模的MQTT客戶端連接,單服務器節點支持50萬到100萬連接。

2. 分布式節點集群,快速低延時的消息路由,單集群支持1000萬規模的路由。

3. 消息服務器內擴展,支持定制多種認證方式、高效存儲消息到后端數據庫。

4. 完整物聯網協議支持,MQTT、MQTT-SN、CoAP、WebSocket或私有協議支持。

 

MQTT發布訂閱模式簡述

 MQTT是發布訂閱(Publish/Subscribe)模式的消息協議,與HTTP協議請求響應(Request/Response)模式不同。

 MQTT發布者與訂閱者之間通過"主題"(Topic)進行消息路由,主題(Topic)格式類似Unix文件路徑,例如

sensor/1/temperature

 

chat/room/subject

 

presence/user/feng

 

sensor/1/#

 

sensor/+/temperature

 

uber/drivers/joe/inbox

MQTT主題(Topic)支持'+', '#'的通配符,'+'通配一個層級,'#'通配多個層級(必須在末尾)。

MQTT消息發布者(Publisher)只能向特定'名稱主題'(不支持通配符)發布消息,訂閱者(Subscriber)通過訂閱'過濾主題'(支持通配符)來匹配消息。

初接觸MQTT協議的用戶,通常會向通配符的'過濾主題'發布廣播消息,MQTT協議不支持這種模式,需從訂閱側設計廣播主題(Topic)。

例如Android推送,向所有廣州用戶,推送某類本地消息,客戶端獲得GIS位置后,可訂閱'news/city/guangzhou'主題。

 

五分鐘下載啟動EMQ

 EMQ 2.0消息服務器每個版本,會發布Ubuntu、CentOS、FreeBSD、Mac OS X、Windows平臺程序包與Docker鏡像。

下載地址: //emqtt.com/downloads

程序包下載后,可直接解壓啟動運行,例如Mac平臺:

 unzip emqttd-macosx-v2.0.zip && cd emqttd

 

# 啟動emqttd

./bin/emqttd start

 

# 檢查運行狀態

./bin/emqttd_ctl status

 

# 停止emqttd

./bin/emqttd stop

 EMQ 消息服務默認允許匿名認證,啟動后MQTT客戶端可連接1883端口,啟動運行日志輸出在log/目錄。

 

源碼編譯EMQ 2.0

git clone //github.com/emqtt/emq-relx.git

 

cd emq-relx && make

 

cd _rel/emqttd && ./bin/emqttd console

 

Web管理控制臺(Dashboard)

 EMQ 消息服務器啟動后,會默認加載Dashboard插件,啟動Web管理控制臺。用戶可通過Web控制臺,查看服務器運行狀態、統計數據、客戶端(Client)、會話(Session)、主題(Topic)、訂閱(Subscription)、插件(Plugin)。

控制臺地址: //127.0.0.1:18083,默認用戶: admin,密碼:public

 

EMQ 2.0消息服務器功能列表

完整的MQTT V3.1/V3.1.1協議規范支持

QoS0, QoS1, QoS2消息支持

持久會話與離線消息支持

Retained消息支持

Last Will消息支持

TCP/SSL連接支持

MQTT/WebSocket(SSL)支持

HTTP消息發布接口支持

$SYS/#系統主題支持

客戶端在線狀態查詢與訂閱支持

客戶端ID或IP地址認證支持

用戶名密碼認證支持

LDAP認證

Redis、MySQL、PostgreSQL、MongoDB、HTTP認證集成

瀏覽器Cookie認證

基于客戶端ID、IP地址、用戶名的訪問控制(ACL)

多服務器節點集群(Cluster)

多服務器節點橋接(Bridge)

mosquitto橋接支持

Stomp協議支持

MQTT-SN協議支持

CoAP協議支持

Stomp/SockJS支持

通過Paho兼容性測試

2.0新功能: 本地訂閱($local/topic)

2.0新功能: 共享訂閱($share/<group>/topic)

2.0新功能: sysctl類似k = v格式配置文件

 

EMQ 2.0擴展插件列表

EMQ 2.0支持豐富的擴展插件,包括控制臺、擴展模塊、多種認證方式、多種接入協議等:

擴展插件通過'bin/emqttd_ctl'管理命令行,或Dashboard控制臺加載啟用。例如啟用PostgreSQL認證插件::

./bin/emqttd_ctl plugins load emq_auth_pgsql

 

100萬線連接測試說明

*EMQ* 2.0消息服務器默認設置,允許大客戶端連接是512,因為大部分操作系統'ulimit -n'限制為1024。

 EMQ 消息服務器1.1.3版本,連接壓力測試到130萬線,8核心/32G內存的CentOS云服務器。

 操作系統內核參數、TCP協議棧參數、Erlang虛擬機參數、EMQ大允許連接數設置簡述如下:

Linux操作系統參數

2M - 系統所有進程可打開的文件數量

sysctl -w fs.file-max=2097152

sysctl -w fs.nr_open=2097152

1M - 系統允許當前進程打開的文件數量

ulimit -n 1048576

TCP協議棧參數

backlog - Socket監聽隊列長度::

sysctl -w net.core.somaxconn=65536

Erlang虛擬機參數

## Erlang Process Limit

node.process_limit = 2097152

 

 ## Sets the maximum number of simultaneously existing ports for this system

node.max_ports = 1048576

EMQ 大允許連接數

emqttd/etc/emq.conf 'listeners'段落

## Size of acceptor pool

listener.tcp.acceptors = 64

 

## Maximum number of concurrent clients

listener.tcp.max_clients = 1000000

測試客戶端設置

測試客戶端在一個接口上,多只能創建65000連接

 sysctl -w net.ipv4.ip_local_port_range="500 65535"

 

echo 1000000 > /proc/sys/fs/nr_open

按應用場景測試

 MQTT是一個設計得非常出色的傳輸層協議,在移動消息、物聯網、車聯網、智能硬件甚至能源勘探等領域有著廣泛的應用。1個字節報頭、2個字節心跳、消息QoS支持等設計,非常適合在低帶寬、不可靠網絡、嵌入式設備上應用。

 不同的應用有不同的系統要求,用戶使用emqttd消息服務器前,可以按自己的應用場景進行測試,而不是簡單的連接壓力測試:

1. Android消息推送: 推送消息廣播測試。

2. 移動即時消息應用: 消息收發確認測試。

3. 智能硬件應用: 消息的往返時延測試。

4. 物聯網數據采集: 并發連接與吞吐測試。

 

開源MQTT客戶端項目

GitHub: //github.com/emqtt

Eclipse Paho: //www.eclipse.org/paho/

 MQTT.org: //github.com/mqtt/mqtt.github.io/wiki/libraries

上一篇:Linux 3.14的設備樹-實戰開發代碼

下一篇:MQTT代理搭建

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部