Skip to content

wuxh123/iot_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iot_server

利用epoll mqtt redis mysql mongodb 搭建的一个后台iot server的雏形。采用多进程的方式运行,提升cpu利用率。

开发工具

vs code

vscode 插件

pip install pylint

python库

pip install mysql-connector

pip install mysqlclient

pip isntall paho-mqtt

pip install protobuf

pip install pymongo

pip install redis

功能

1.设备通过socket连接到服务器

2.Iot server保存设备id

3.通过设备id订阅该设备的消息

4.中心通过该设备的定于发送指令

5.通过该server,将mqtt指令转发给具体的socket,实现数据透明传输。

特点

1.采用epoll+线程池处理指令,此处如果为cpu密集型操作,可以改成进程池

2.采用mqtt+threadpoll 处理指令。

其他

通过模拟多device操作,每毫秒发送数据,未发生数据丢失,粘包。cpu负荷在5%以下。

运行

python main.py

测试

python test.py

其他

1.如果觉得python性能不够好(我觉得不错的),可以改为pypy

2.数据粘包比较麻烦,我测试过,如果线程池是20,每毫秒3条数据会粘包。线程池50的话就没有发生粘包。

设备A通过epoll链接到iot server,server将其注册到mqtt broker

img

设备B通过epoll链接到iot server,server将其注册到mqtt broker

img

每毫秒设备A和设备2同时向iot server发送指令,指令转送给 mqttbroker。没有丢包,没有延时

img

设备A通过mqtt向设备B发送指令

img

About

利用epoll mqtt redis mysql mongodb 搭建的一个后台iot server。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages