百萬級併發 之 MQTT 伺服器

來杯可樂不加糖發表於2019-11-18

​一、簡介

整體是利用MQTTBroker + MQTTClient 實現服務端(HTTP伺服器)和終端(閘道器)的通訊過程。

其中MQTTBroker是採用Go語言實現,MQTTClient是採用PHP實現訂閱和釋出功能(可採用HTTP API來替代)

二、環境準備(Linux)

1、LNMP

詳見:https://mp.weixin.qq.com/s/OXN5ckhg-iJI9m3e2xsygg

2、Composer


> #下載
> 
> php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
> 
> #執行
> 
> php composer-setup.php
> 
> #移動 composer.phar,這樣 composer 就可以進行全域性呼叫:
> 
> mv composer.phar /usr/local/bin/composer
> 
> #切換為國內映象
> 
> # composer config -g repo.packagist composer https://packagist.phpcomposer.com
> 
> #更新composer
> 
> # composer selfupdate

3、Go

wget https://dl.google.com/go/go1.13.4.linux-am...

tar -C /usr/local -xzf go1.13.4.linux-amd64.tar.gz

cd /data/ && mkdir go && cd go && mkdir bin &&mkdir src &&mkdir pkg

vi /etc/profile

export GOROOT=/usr/local/go           ##Golang安裝目錄

export PATH=$GOROOT/bin:$PATH

export GOPATH=/home/go  ##Golang專案目錄

source /etc/profile           ##重新整理環境變數

go version            ##檢視go版本

三、MQTTBroker

./MQTTBroker

四、MQTTClient

> #下載mqttclient(/MQTT/Client)
> #配置檔案
> /MQTT/Client/conf/mqtt.php
> 
> return [
> 
>    'ip' => 'mqtt://192.168.71.144:1883',#MQTTBroker IP
> 
>    'pubUrl' => "http://192.168.71.144/mqtt/index",#推送http地址
> 
>    'http' =>'http://0.0.0.0:1212',#監聽埠
> 
>  #配置資訊
> 
>    'options' => [
> 
>        'client_id' => '*',#clientID
> 
>        'username' => '*',#mqtt登入使用者
> 
>        'password' => '*',#mqtt登入密碼
> 
>        'qos' => 1,
> 
>        'debug' => 0 #開啟除錯模式
> 
>    ]
> 
> ];
> 
> #開啟發布
> php /MQTT/Client/examples/pubilsh.php start
> 
> #開啟訂閱
> php /MQTT/Client/examples/subscribe.php start

五、壓力測試

> #下載mqtt-benchmark(/MQTT/MQTTBenchmark)
> 
> #檢視命令
> 
> mqtt-benchmark --help
> 
> #常用命令(text格式)
> mqtt-benchmark --broker tcp://broker.local:1883 --count 100 --size 100 --clients 100 --qos 1 --format text > mqttbenchmark.log
> 
> #json格式
> mqtt-benchmark --broker tcp://broker.local:1883 --count 100 --size 100 --clients 100 --qos 1 --format json --quiet > mqttbenchmark.log

六、總結

1、可使用MQTTBroker 登入驗證(金鑰、賬號等)

2、第四步MQTTClient可通過HTTP的API進行替代(開發ing)

3、整體效能有待提高(可配置叢集)

微信公眾號後臺回覆MQTT,獲取資源

本作品採用《CC 協議》,轉載必須註明作者和本文連結

來杯可樂不加糖。

相關文章