物联网是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物体与因特网连接起来,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络。
物联网这一概念提出已有20多年,但受全球各国重视是2008年和2009年这两年,各国纷纷推出物联网相关政策,我国也开启了物联网发展里程碑的年份,列为国家五大新兴战略性产业之一。经过10年发展,物联网已不再是高高在上的概念,在云+AI等技术加持下,让物联网得到了广泛应用,产业发展迅猛,也迎来了黄金发展时代。
运营商、半导体厂商、通信设备、云服务商和应用端等形成物联网产业链,而NB-IoT和LoRa等LPWA低功耗广域网通信技术,解决物联网大规模部署连接等需求,继而使得物联网在工业、零售、物流和交通等垂直领域得到广泛应用。
在产业链积极推动下,物联网连接规模成倍速度增长,LPWAN连接的复合年增长率为109%。此外物联网高级顾问杨剑勇指出,5G技术部署,也将把物联网带上更高的层次,也让万物互联成为可能,其中运营商是万物互联积极推动者,全球运营商纷纷转型寄望于在大连接时代,不再局限做一个管道提供者,希望能抢夺物联网应用端市场,例如面向工业、教育、医疗、车联网和智慧家庭等应用场景寻求机遇。
物联网在移动监测、智能可穿戴、POS机、气象、医疗和能源等行业用途很大,而且是实现设备联网不可或缺的产品,不少相关的top域名都被注册。
IOT网关,接收sensor数据的总入口,主要是日志,安全防护,流控,协议转换等功能,
图1 IOT网关
之前有提到IOT网关是基于python的twisted框架实现的,初期的时候该IOT网关主要实现的功能是 数据接收和转换功能 和 安全防护 。
数据接收和转换功能 ,这里很简单,拟定好数据交互格式后,IOT网关按照约定好的格式进行解析,然后转发给后端服务进行进一步的处理
安全防护 ,设备的区分主要是依靠烧录到硬件的SN号来实现,SN号包含的信息比较多,如生产批次,设备型号等,受制于厂商我安全防护不能做的非常完善,同时sensor与IOT网关的交互不能非常复杂。安全防护这一块理论上是设备接入要一型一密或者一机一密,协议上还应该启用tls/ssl安全通信协议。
图2 鉴权
安全防护要做ssl这类的安全通信协议的话,要考虑设备厂商实现通信模块能力,设备功耗,设备性能(低端设备cpu性能可能比较差,可考虑对称加密形式),IOT网关也需要引入相应模块。
另外认证从性能方面考虑,后期在设备比较多的情况下,可以加入redis等内存型key-value数据库,缓存设备信息,提高鉴权模块性能。
实践中,我们的sensor基本都是依靠电池供电,因此我们的IOT网关基本是面向短链接(后期我们有监测设备,依靠外部电源直接供电,为长连接),因此在每次发起连接我们都要进行一次鉴权,鉴权通过后,设备方可上传传感器监测数据和设备自身状态。
图3 数据交互流程
这一块的调试工作长达半年左右,才基本稳定下来,主要集中在设备商处除了硬件稳定性,还有在调试中发现传输的字符串乱码(c语言处理问题),沾包(厂商开发人员tcp协议不熟),优化传输效率,关闭cork或者 Nagle 算法(传输包很小)。
因为IOT网关不能主动断连接,理论 *** 作中,IOT网关应该和sensor有心跳协议,保证连接的有效性。设备商在数据流程交互完成后,竟然没有close 连接,直接休眠,导致网关所在服务器的连接的文件描述符一直没有正常释放,后面为了预防这种现象,我开启了 *** 作系统层面的keepalve定时器,回收失效连接(系统默认时间是2小时左右,我缩短了失效时间),理论上来说应该是应用层面去实现心跳协议。
整个IOT网关的设计,是无状态,可伸缩的,单网关在普通型ecs上可轻松达到数百tps。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)