IoT socket server 设备反控方案选择,Redis PubSub还是SQL ?

一台面对物联网的套接字服务器,架构较为简单:

  1. Python Twisted socket server;

  2. Redis作为缓存

  3. MySQL作为持久层数据库;

  4. Python Web server作为用户界面。

客户要求能够反向控制及配置设备。即在Web端口可以发送命令给前端套接字服务器。

有两种解决方案:

  1. 利用Redis pubsub构成消息队列。

  2. 利用Redis/MySQL数据库作为消息缓冲,套接字服务器端采用轮询方式。

采用PubSub可以构成异步推送的方案。但是代价是每个协议对象需要保持三个长连接:

  1. Device

  2. Redis Sub(主要)

  3. Redis Pub(次要)

是否过于消耗存储器资源?现有的设计中与Redis连接采用连接池的设计,是否意味着重大的代码修改?

采用轮询方式,每次有设备活动,或者定时CallLater可以由协议对象去轮询一次数据库(Redis/SQL均可)。但是增加了Redis/TCP的无效通讯。

听听大家的意见?

阅读 3.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题