百万级并发 之 MQTT 服务器

​一、简介

整体是利用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

可执行文件(/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,获取资源

来杯可乐不加糖。

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!