端、管、云,物联网系统的三个主要构成元素,各自技术在高速发展的同时也在不断的影响着现代物联网系统的设计。
传统端与云在软件设计方面有不同的专注点,端软件设计的重点在于思考在受限的内存和算力下如何优化单机程序;云软件设计的重点是在于如何设计可扩展的分布式计算使用多机来处理大规模的服务请求。
物联网系统里数据的产生者是各式各样的传感器,包含音频,摄像头视频,加速度传感器,温湿度传感器等。这些每时每刻都在自动产生的传感器数据,相对于移动互联网应用中用户在APP上手动交互而产生的数据会大上几个数量级。庞大的传感器数据量使得将所有原始数据传回云端处理非常困难,对终端算力和通讯管道的提速提出了要求。
近几年来终端算力的提升,使得我们可以把更多的计算放在终端设备,只与云端交换处理后的中间或结果数据,减少与云端原始数据交换。一方面减少了服务响应延时,另一方面也可以规避一些隐私数据的传输。终端算力的提升,越来越多的云端技术可以被引入到终端中。现代汽车电子中,整车电子系统发展趋向于由娱乐域和驾驶域等若干高性能计算机构成,高性能计算机之间通过以太网通讯形成了一个车载的分布式系统,一些原来在云端被验证的分布式技术开始被应用到车内。
另一方面,通讯管道的发展,4G网络的普及和即将到来的超10Gbps的理论传输速度的5G网络使得端与云的分工也在不断发生着变化。管道的提速,端与云之间可以有更高频的近实时数据交互。
端云融合在车联网的场景下, 车作为一个高复杂度的终端,与云之间也有着不断融合的趋势。车载以太网主干和5G的发展促使车与云融合的过程中会产生了一些新的设计思路,这里讨论一种车联网的整车软件架构,我们称之为C/S/ES(Client-Server-EmbeddedServer)架构,如下图。
C/S/ES架构在传统的C/S(客户端/服务器)架构中在逻辑上引入了车内嵌入式服务器ES(Embedded Server)的模块,将车内的计算与人机交互界面分离,把原来一部分在车载客户端的计算逻辑移到了ES模块中。实际部署中客户端软件和ES可以是运行在同一个硬件模块上也可以是运行在不同的硬件模块上,e.g., 通过虚拟化技术来运行多个操作系统。
类似云服务的架构,ES在车内可以采用面向服务或者微服务的架构进行设计。ES中运行的服务动态注册到车内配置中心可以被依赖的服务和客户端发现。类似的,我们可以有一个代理程序将云端提供给车的服务注册到车内配置中心。
ES中支持的服务可以为车载客户端程序提供部分与云端一样的接口。另外,ES中的软件也可以被OTA更新。Android的Background Service一定程度上可以实现部分ES类似的概念,基于独立Linux系统的ES可以为车内多个域同时提供服务而不强耦合于娱乐域,另一方面也可以使用更多跟云服务器相似的一些基于Linux的技术。
这种C/S/ES的架构带来了几个好处:
C/S/ES架构并不适用于所有类型的客户端应用,比较适用于分离到ES的服务有以下几类:
事实上,设备本地实现嵌入式服务器的设计在互联网中非常常见——现在每家每户都有的无线路由器管理界面便是以嵌入式Web Server的方式为设备功能管理提供接口。
过去几年,嵌入式服务器软件的开发也在逐步增加。对于运算能力和内存相对较强的平台,选择运行在linux上的golang或者python语言来开发ES服务是个不错的选择。对于资源比较受限的SoC和MCU,Cesanta公司的Mongoose套件提供了一个嵌入式Web Server的C语言开源实现(商业协议或GPL v.2协议),事实上它提供了HTTP/WebSocket/MQTT/CoAP/DNS等在嵌入式环境下多网络协议的支持,支持Linux/QNX/Android/FreeRTOS等多个不同的嵌入式系统,开发者仅需要集成两个源代码文件即可使用。Mongoose也提供了一个裁剪的javascript引擎mJS以支持javascript脚本的一个特性子集。
CivetWeb从Mongoose早期使用MIT协议的版本fork出来发展而成,基于MIT开源协议,提供与Mongoose类似的网络协议支持。CivetWeb集成了Lua脚本引擎以支持服务端动态页面的开发,支持服务端javascript(基于Duktape库,一个嵌入式javascript引擎),以及CGI+SQLite数据库。
RealTimeLogic的Barracuda Application Server是另一个使能IOT设备开放web访问接口的产品。开发者可以基于Barracuda开发CSP(C Server Page)和LSP(Lua Server Page)。
随着车载SoC芯片的算力的不断提升和车载以太网技术的普及,未来车型的整车电子在逐步形成车内服务器的架构形态。在这个过程中会涌现大量的,针对车载嵌入式环境设计的分布式系统软件,类似于云计算技术的发展,这些系统软件更多属于平台性质的软件,并不局限于服务某一家整车厂的特定需求,更多的会在Tier 1/Tier 2供应商中产生。
End
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有