百万级并发 之 MQTT 服务器
一、简介
整体是利用MQTTBroker + MQTTClient 实现服务端(HTTP服务器)和终端(网关)的通信过程。
其中MQTTBroker是采用Go语言实现,MQTTClient是采用PHP实现订阅和发布功能(可采用HTTP API来替代)
二、环境准备(Linux)
1、LNMP
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
可执行文件(/MQTT/Broker/)
./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 协议》,转载必须注明作者和本文链接