在前几年的职业生涯中我更多的是接触的http和websocket协议的业务比较多。http是基本的后端api接口开发,websocket则是在以前的电商系统中有个在线客服的功能需要实现,当使用的是django的daphne部署的asgi来实现的websocket。
其实物联网这个词我早几年就听到过了,并且在面试python的岗位中不止一次面试过这个岗位。我能记得的是一个是做python后端flask框架,就在西乡这边我家附近,是做日本出口的智能家居的,现在公司规模很大了。一个是在南山那边做车载视觉的,老板有自己的工厂,希望是从流水线生产到出厂都能做到全流程智能化。还有一次是我面试富士康的一个python后端,他们的部分技术也是python+drf+django_channel方式实现对产线的智能管理。
但是让我真正感觉到物联网确实是已经很普及了还是现在的公司的业务。现在公司的业务是做智能冰柜的,需要远程控制温度,灯光,ota远程升级等。我印象很清楚的是我当时面试的解决方案回答的是websocket,在我当时的认知里面是因为我做过websocket的项目而且我知道websocket比http方式节约资源,且能及时通信。但是后来发现在业内对物联网的主流的解决方案还是mqtt的方式,通过基于mqtt协议的方式,采用发布/订阅模型来实现远程控制操作命令的批量下发和命令缓存等功能(设备可能中途断电再上线)。
我们公司现在的解决方案是基于阿里云企业物联网平台来实现的,当我刚开始阅读相关文档的时候我其实是懵逼的,不是我看不懂那些文字而是我知道要想看懂阿里云物联网的相关文档我必须首先了解原生的mqtt怎么实现数据的上报和命令的下发。用类比的思想来说,我现在之所以会用阿里云的rds是因为我在本地搭建过mysql,或者我之所以会用阿里云的k8s集群ack服务是因为我本地搭建过k8s集群,所以我们看懂阿里云帮我们封装的可视化操作界面,比如服务,路由,有状态服务,无状态服务等。
所以我问觉得我应该首先从原生的mqqt方式自己实现一套基于mqtt协议的物联网解决方案,再去使用阿里云的问联网文档那就是信手拈来的事情了。
