作者:阿里云IoT事业部 技术专家 问途
IoT时代的技术又遇到怎样的不一样与挑战,简单总结一下阿里云IoT场景中我们面临的问题与挑战。
多样的连接
万物的互联,连接的形态也在悄然的发生变化,从WIFI,3G/4G,BLE到NB-loT,LoRa,传统的RS232,RS485, CAN BUS等等也登上新的舞台,原本相互无关的网络形态,交织在一起,异构的网络构建着统一通讯。
面对着智能生活,智能工业,智能城市,智能园区,有的场景追求低功耗,有的场景追求低延迟,有的场景追求吞吐量,面对着不同的需求,单一的网络形态以及网络协议很难满足不同的场景需求。
举例来说,在协议方面:
MQTT协议
具有轻巧的特性,简洁优雅的PUB/SUB模型非常适合消息驱动的场景,短小精致的特点同时对弱网环境以及资源受限环境的十分友好。
CoAP协议
CoAP主要基于UDP,与HTTP相似的模型为嵌入式资源受限的场景提供了REQ&RSP的能力,这种模型更适合多数开发者的习惯,这种模型更适合多数开发者的习惯。UDP面临最大的就是下行寻址的问题,但在局域网本地通信非常适用,同时在IPv6时代也会迎来一些新的思考。另外 COAP over TCP也是非常值得看好的。
HTTP/2
HTTP/2的多流特性,天生就是为复杂场景而设计的,数据报与双向流能力的支持,极大的扩展了应用场景,多流的特性也可以为其他协议提供良好的封装能力,可谓是有潜力的的全能通道,在大数据场景以及流数据场景得心应手。
AMQP协议
AMQP适合吞吐量极大的云云消息流转场景,多信道支持,同时具备良好的开源生态,也是被广泛用于在构建云云,云边(边缘端)场景。
其他协议
还有大量传统的协议,例如J1939, Modbus,OPC等等,不同的接入方式,不同的网络链路,不同的连接协议,构建了前所未有的繁荣与复杂。
连接不止于此,也留给我们更多的思考:
1. TCP长连保活模式可以被颠覆吗?
2. SDN在IoT时代可以重新被定义吗?
3. 下一代网络会是什么样的?
技术链路长
一个经典的IoT闭环应用不仅仅涉及传感器,芯片,模组,OS,主控程序,网络以及连接协议等等,还有云平台的数据建模与结构化,存储,加工,分析到应用
链路长的挑战在于一是不容易看到全貌,二是不容易把控各点。
链路长更大考验的是分工,协作以及整合,这种分工不仅仅是公司内的分工,更多是合作伙伴的分工,行业的分工,生态的协作。
IoT时代的全面来临,正是各种技术积累的必然结果。
从技术视角,从单点看,每个技术链路上的点也充满着巨大的挑战。例如
・传感器-如何提开精度,降低成本,带来持绠的硬件技术红利...
・芯片组-如何持续提升性能,不断提开工艺,研发新协处理器...
・OS-如何在碎片化的格局下做好通用性,良好的可移植性,还有确保资源占用足够小...
・网络-如何满足低功耗,传输距离,传输性能,稳定性...
从全局上看,也充满着挑战。例如
・稳定性一随着路的增长,全局的稳定性会持续下降,确保全链路的可靠性就值得深入的思考与践行
终端碎片化
移动互联网时代早期,大家一定对手机不同系统的适配的繁杂记忆犹新,在应用层,你可能会面临奇奇怪怪的兼容问题,当你接触到 native或者framework/层,有些适配的问题更是让你疲意不堪
对于IoT,现在的终端不仅仅是手机,还有冰箱,彩电,空调,汽车,水表,吊车...,
面临的不仅仅是 Android,iOS,有 Linux,RAM, FreeRTOS,uCOS,Mbed,QNX等等,还有大量没有OS的:)
你会面临接入的终端可能TCP的协议栈存在各种bug,你可能会面临永远也无法升级而且死循环在连接你的设备,你可能会面临DNS永久被缓存的场景....
海量连接
今天IM连接了人,达到了数十亿的规模,但实际的在线长连接数会少很多,对于支持这样的连接规模,已经很了不起,我们的支付宝也一样。
但不久后的IoT连接的是数百数千亿设备,会是十亿百亿在线规模,这里面面临的挑战更是巨大,这样的规模也是IT工程史上前所未有的,充满了未知。
例如网络抖动,时钟溢出,或者是一批设备的故障,都是巨大的共振,会对平台以及基础设施产生极大的冲击,如何防护以及快速的恢复?
海量连接不仅仅关乎稳定,例如如何有效的就近接入,让信息通过最短的路径投递,提升效率以及节省成本?
保障海量连接的稳定,安全,高性能,低成本,每一个都是很大的话题。
巨量数据
移动互联网时代今天大量的数据来源于C端场景,数据已经可谓是海量。对于常规以人为核心的应用,日活比例也不会太高。
但物联网设备的特征与人还是有还大差异,以典型的生活场景为例,如果是1亿设备,在线大于可能在3千万,关键是这些设备还不时的会上报数据,对于平台几乎时时都在秒杀,产生着巨量的数据。
如果是10亿设备呢,如果是100亿设备呢?100亿的设备并不遥远。
如此大量的loT数据会迫切的引发对数据质量的思考,数据的信息密度的思考。怎样治理数据质量?数据怎样分级存储?数据如何更高效的清洗与萃取?
在我们都在讨论大数据的时候,举个有趣的例子。当你到IoT工业场景中,你会发现有很多都是个性化的设备,这些设备会产生不少数据,但是还算不上大数据,我们大数据的分析平台与技术在解决个体设备的数据分析时,就是杀鸡用了牛刀,成本的问题又突显出来。所以又可能引入小数据的重新思考。
还有,以聚合计算为主体的分析引擎,在面对CEP( Complex Event Processing)场景的计算时,又往往不那么有效。
面对IoT场景,数据分析,存储需求都面临了一些变革,其根源来自于场景的多样型。
云端一体
各种迹象都在表明未来去中心的趋势。孙正义2017年在一次演讲中提及,末来鞋子的一块芯片的计算力会超越人脑,那真正是无处不在的计算。
当计算触手可得的时候,就不再需要用时间换计算力,随时随地计算,而且更加的自治。
这说的有点大,从小的角度来说,在很多特定的场景,例如工厂数字化采用云端集中式会存在可靠(例如断网风险,成本(例如带宽成本),性能(例如需要更快响应),安全(例如不希望数据被扩散)的需求,这种场景最佳的方案就是边缘计算。
但今天的边缘计算不同与以前的本地或单机系统,是大网络中的小网络,是大协作中的小自治。
今天的边缘计算的核心是云端一体的协同,云端提供了更强的控制力与计算力,边缘端提供更实时的执行力。
在技术的架构上,云与端也越来越趋于相似,所以,云端的一体一是指工作的协同,另一方面也是架构的趋同。
边缘计算是云计算能力的延展,会覆未来的技术格局,也会对互联网的中间件带来新的创新机遇。例如,如果把边缘看作一个单元,那也会是无处不在的单元化。例如,未来也会出现异构网络下的通讯中间件等等。
那个时代,可能会重新定义分布式!
数字世界建模
我们在说物理化数字世界,loT的核心使命是把物理世界投影到数字世界,建立物理世界与数字时间的双向同步机制。如何在数字世界描述物理世界呢?这就是我们物的建模,这种建模充满着遐想。
通过对物理世界的数字化,我们就可以在数字世界重新认识物理世界,甚至可以四维导航,或是展现现在,或是导航到历史的截面,或是预测到模糊的未来。
如果建模的太通用,类似数据库的ER( EntityRelationship)模型,或者编程语言的OO( Object Oriented)模型,仿佛又回到过去,建模太定制,又难以有足够的表达力。
从OCF,OMA,W3C到我们发起的ICA,都在制定相应的物模型,如何让模型成为落地标准,成为构建数字世界的基石,成为数字世界被此感知以及互操作的基础,也是一件不容易的事情。
如何恰如其分的在数字世界去表达物联世界,然后驱动数字世界,改变物理世界,带给我们无尽的想象以及变革的机会。
部暑多样性
回到最现实的地方,IoT的PaaS会面临各种应用场景,衍生出各种部署场景,例如公有云,专有云,混合云,边缘云,网关等等,未来的百亿连接一定不会只在数个集群,面对如何繁多的环境,如何做到快速部署,便捷的运维,也是留给我们要去克服的课题。
对于部署,
先看架构问题,平台需要良好的伸缩性以及模块化,例如需要有云原生应用的特性。
再看依赖问题,依赖的各种中间件就很难带到各个环节中,我们需要SAL( Service Abstract Layer),需要具有不挑环境的中间件,需要保持系统的最小依赖...
再看发布问题,环境如何快速部署,如何确保及时更新,如何让集群快速复制?
再看运维问题,在异构的形态上构建统一的运维体系,还有众多细节问题需要去解決。
安全问题
引用 Thoughtworks 2018年技术雷达报告中对IoT的描述:物联网(IoT)生态系统持续稳步发展,关键成功因素包括安全和成熟的工程实践。
安全对于物联网至关重要,也是很多业务初期容易忽略的。在过往的几年,业内物联网的安全事故也是层出不穷。物联网赋予了设备以及业务更大的空间,同样不如果不守护好安全这扇门,帯来的灾难也是致命的,不仅仅是财务损失,甚至涉及到人身安全。
举些具体安全的例子:
・如何防范设备身份可能被盗取或者被破解?
・如何防范固件可能被截获,甚至是纂改?
・如何防范设备中间人攻击?
・如何防范云平台的DDOS攻击或进一步的CC攻击?
・如何防范设备的越权访问?
・如何防范设备数据被截取,被簒改?
・如何防护设备不会被非授权控制?
・如何防范平台数据不泄漏?
・如何包含个人信息安全?
・如何保障漏洞被及时修复?
・如何保障数据中心被非法闯入?
物联网的链路长,碎片化严重,合作方多,安全危害大,这些特点让安全问题变得特别的突出。
保障安全也是一项体系化的工作,不仅仅是技术层面的,还包括相关制度以及人员管理。
在技术层面,既有端的安全,网络安全,也有云平台的安全,除了系统本身的安全,也有业务层面的安全。相对其他系统,物联网有很多新的安全挑战。例如终端的身份发放以及保存,固件的保护,异构网络下传输安全,双向鉴权,传输加密套件的精细化选择问题,采集的信息脱敏处理等
结语
总结一下loT平台面临的工程技术挑战,也是我们正遇到的,以及正在努力解決的。实现一个平台的基本功能其实看似不难,但是真正保障高可用,高性能,高安全以及可伸缩性其突挑战是巨大的。