一台面对物联网的套接字服务器,架构较为简单:
Python Twisted socket server;
Redis作为缓存
MySQL作为持久层数据库;
Python Web server作为用户界面。
客户要求能够反向控制及配置设备。即在Web端口可以发送命令给前端套接字服务器。
有两种解决方案:
利用Redis pubsub构成消息队列。
利用Redis/MySQL数据库作为消息缓冲,套接字服务器端采用轮询方式。
采用PubSub可以构成异步推送的方案。但是代价是每个协议对象需要保持三个长连接:
Device
Redis Sub(主要)
Redis Pub(次要)
是否过于消耗存储器资源?现有的设计中与Redis连接采用连接池的设计,是否意味着重大的代码修改?
采用轮询方式,每次有设备活动,或者定时CallLater可以由协议对象去轮询一次数据库(Redis/SQL均可)。但是增加了Redis/TCP的无效通讯。
听听大家的意见?
ringa_lee