国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > MQTT開(kāi)源軟件之EMQ入門(mén)篇

MQTT開(kāi)源軟件之EMQ入門(mén)篇 時(shí)間:2018-09-29      來(lái)源:未知

EMQ 2.0 消息服務(wù)器簡(jiǎn)介

EMQ (Erlang/Enterprise/Elastic MQTT Broker)是基于Erlang/OTP平臺(tái)開(kāi)發(fā)的開(kāi)源物聯(lián)網(wǎng)MQTT消息服務(wù)器。Erlang/OTP是出色的軟實(shí)時(shí)(Soft-Realtime)、低延時(shí)(Low-Latency)、分布式(Distributed)的語(yǔ)言平臺(tái)。MQTT是輕量的(Lightweight)、發(fā)布訂閱模式(PubSub)的物聯(lián)網(wǎng)消息協(xié)議。

EMQ 項(xiàng)目設(shè)計(jì)目標(biāo)是承載移動(dòng)終端或物聯(lián)網(wǎng)終端海量的MQTT連接,并實(shí)現(xiàn)在海量物聯(lián)網(wǎng)設(shè)備間快速低延時(shí)(Low-Latency)消息路由:

1. 穩(wěn)定承載大規(guī)模的MQTT客戶(hù)端連接,單服務(wù)器節(jié)點(diǎn)支持50萬(wàn)到100萬(wàn)連接。

2. 分布式節(jié)點(diǎn)集群,快速低延時(shí)的消息路由,單集群支持1000萬(wàn)規(guī)模的路由。

3. 消息服務(wù)器內(nèi)擴(kuò)展,支持定制多種認(rèn)證方式、高效存儲(chǔ)消息到后端數(shù)據(jù)庫(kù)。

4. 完整物聯(lián)網(wǎng)協(xié)議支持,MQTT、MQTT-SN、CoAP、WebSocket或私有協(xié)議支持。

 

MQTT發(fā)布訂閱模式簡(jiǎn)述

MQTT是發(fā)布訂閱(Publish/Subscribe)模式的消息協(xié)議,與HTTP協(xié)議請(qǐng)求響應(yīng)(Request/Response)模式不同。

MQTT發(fā)布者與訂閱者之間通過(guò)"主題"(Topic)進(jìn)行消息路由,主題(Topic)格式類(lèi)似Unix文件路徑,例如

sensor/1/temperature

 

chat/room/subject

 

presence/user/feng

 

sensor/1/#

 

sensor/+/temperature

 

uber/drivers/joe/inbox

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

MQTT消息發(fā)布者(Publisher)只能向特定'名稱(chēng)主題'(不支持通配符)發(fā)布消息,訂閱者(Subscriber)通過(guò)訂閱'過(guò)濾主題'(支持通配符)來(lái)匹配消息。

初接觸MQTT協(xié)議的用戶(hù),通常會(huì)向通配符的'過(guò)濾主題'發(fā)布廣播消息,MQTT協(xié)議不支持這種模式,需從訂閱側(cè)設(shè)計(jì)廣播主題(Topic)。

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

 

五分鐘下載啟動(dòng)EMQ

EMQ 2.0消息服務(wù)器每個(gè)版本,會(huì)發(fā)布Ubuntu、CentOS、FreeBSD、Mac OS X、Windows平臺(tái)程序包與Docker鏡像。

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

程序包下載后,可直接解壓?jiǎn)?dòng)運(yùn)行,例如Mac平臺(tái):

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

 

# 啟動(dòng)emqttd

./bin/emqttd start

 

# 檢查運(yùn)行狀態(tài)

./bin/emqttd_ctl status

 

# 停止emqttd

./bin/emqttd stop

EMQ 消息服務(wù)默認(rèn)允許匿名認(rèn)證,啟動(dòng)后MQTT客戶(hù)端可連接1883端口,啟動(dòng)運(yùn)行日志輸出在log/目錄。

 

源碼編譯EMQ 2.0

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

 

cd emq-relx && make

 

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

 

Web管理控制臺(tái)(Dashboard)

EMQ 消息服務(wù)器啟動(dòng)后,會(huì)默認(rèn)加載Dashboard插件,啟動(dòng)Web管理控制臺(tái)。用戶(hù)可通過(guò)Web控制臺(tái),查看服務(wù)器運(yùn)行狀態(tài)、統(tǒng)計(jì)數(shù)據(jù)、客戶(hù)端(Client)、會(huì)話(huà)(Session)、主題(Topic)、訂閱(Subscription)、插件(Plugin)。

控制臺(tái)地址: //127.0.0.1:18083,默認(rèn)用戶(hù): admin,密碼:public

 

EMQ 2.0消息服務(wù)器功能列表

完整的MQTT V3.1/V3.1.1協(xié)議規(guī)范支持

QoS0, QoS1, QoS2消息支持

持久會(huì)話(huà)與離線(xiàn)消息支持

Retained消息支持

Last Will消息支持

TCP/SSL連接支持

MQTT/WebSocket(SSL)支持

HTTP消息發(fā)布接口支持

$SYS/#系統(tǒng)主題支持

客戶(hù)端在線(xiàn)狀態(tài)查詢(xún)與訂閱支持

客戶(hù)端ID或IP地址認(rèn)證支持

用戶(hù)名密碼認(rèn)證支持

LDAP認(rèn)證

Redis、MySQL、PostgreSQL、MongoDB、HTTP認(rèn)證集成

瀏覽器Cookie認(rèn)證

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

多服務(wù)器節(jié)點(diǎn)集群(Cluster)

多服務(wù)器節(jié)點(diǎn)橋接(Bridge)

mosquitto橋接支持

Stomp協(xié)議支持

MQTT-SN協(xié)議支持

CoAP協(xié)議支持

Stomp/SockJS支持

通過(guò)Paho兼容性測(cè)試

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

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

2.0新功能: sysctl類(lèi)似k = v格式配置文件

 

EMQ 2.0擴(kuò)展插件列表

EMQ 2.0支持豐富的擴(kuò)展插件,包括控制臺(tái)、擴(kuò)展模塊、多種認(rèn)證方式、多種接入?yún)f(xié)議等:

擴(kuò)展插件通過(guò)'bin/emqttd_ctl'管理命令行,或Dashboard控制臺(tái)加載啟用。例如啟用PostgreSQL認(rèn)證插件::

./bin/emqttd_ctl plugins load emq_auth_pgsql

 

100萬(wàn)線(xiàn)連接測(cè)試說(shuō)明

*EMQ* 2.0消息服務(wù)器默認(rèn)設(shè)置,允許大客戶(hù)端連接是512,因?yàn)榇蟛糠植僮飨到y(tǒng)'ulimit -n'限制為1024。

EMQ 消息服務(wù)器1.1.3版本,連接壓力測(cè)試到130萬(wàn)線(xiàn),8核心/32G內(nèi)存的CentOS云服務(wù)器。

操作系統(tǒng)內(nèi)核參數(shù)、TCP協(xié)議棧參數(shù)、Erlang虛擬機(jī)參數(shù)、EMQ大允許連接數(shù)設(shè)置簡(jiǎn)述如下:

Linux操作系統(tǒng)參數(shù)

2M - 系統(tǒng)所有進(jìn)程可打開(kāi)的文件數(shù)量

sysctl -w fs.file-max=2097152

sysctl -w fs.nr_open=2097152

1M - 系統(tǒng)允許當(dāng)前進(jìn)程打開(kāi)的文件數(shù)量

ulimit -n 1048576

TCP協(xié)議棧參數(shù)

backlog - Socket監(jiān)聽(tīng)隊(duì)列長(zhǎng)度::

sysctl -w net.core.somaxconn=65536

Erlang虛擬機(jī)參數(shù)

## Erlang Process Limit

node.process_limit = 2097152

 

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

node.max_ports = 1048576

EMQ 大允許連接數(shù)

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

## Size of acceptor pool

listener.tcp.acceptors = 64

 

## Maximum number of concurrent clients

listener.tcp.max_clients = 1000000

測(cè)試客戶(hù)端設(shè)置

測(cè)試客戶(hù)端在一個(gè)接口上,多只能創(chuàng)建65000連接

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

 

echo 1000000 > /proc/sys/fs/nr_open

按應(yīng)用場(chǎng)景測(cè)試

MQTT是一個(gè)設(shè)計(jì)得非常出色的傳輸層協(xié)議,在移動(dòng)消息、物聯(lián)網(wǎng)、車(chē)聯(lián)網(wǎng)、智能硬件甚至能源勘探等領(lǐng)域有著廣泛的應(yīng)用。1個(gè)字節(jié)報(bào)頭、2個(gè)字節(jié)心跳、消息QoS支持等設(shè)計(jì),非常適合在低帶寬、不可靠網(wǎng)絡(luò)、嵌入式設(shè)備上應(yīng)用。

不同的應(yīng)用有不同的系統(tǒng)要求,用戶(hù)使用emqttd消息服務(wù)器前,可以按自己的應(yīng)用場(chǎng)景進(jìn)行測(cè)試,而不是簡(jiǎn)單的連接壓力測(cè)試:

1. Android消息推送: 推送消息廣播測(cè)試。

2. 移動(dòng)即時(shí)消息應(yīng)用: 消息收發(fā)確認(rèn)測(cè)試。

3. 智能硬件應(yīng)用: 消息的往返時(shí)延測(cè)試。

4. 物聯(lián)網(wǎng)數(shù)據(jù)采集: 并發(fā)連接與吞吐測(cè)試。

 

開(kāi)源MQTT客戶(hù)端項(xiàng)目

GitHub: https://github.com/emqtt

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

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

上一篇:Linux 3.14的設(shè)備樹(shù)-實(shí)戰(zhàn)開(kāi)發(fā)代碼

下一篇:MQTT代理搭建

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專(zhuān)線(xiàn):010-82525158 企業(yè)培訓(xùn)洽談專(zhuān)線(xiàn):010-82525379 院校合作洽談專(zhuān)線(xiàn):010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部