SOA 软件中间件浅析

在现代分布式计算架构下,中间件在应用系统结构中居于各类应用与操作系统之间,是一种为分布式计算环境提供通信服务、交换服务、语义互操作服务等系统之间协同集成服务,解决系统之间互连互通问题,帮助用户灵活、高效地开发和集成应用软件的基础型软件。中间件可以分为消息中间件(解决多个子系统间的消息通信问题)、交易中间件(用于实现不同软件之间相互调用和交互操作)、应用服务器中间件(位于客户浏览器和数据库之间,为应用程序提供业务逻辑的代码)。

中间件产品是伴随分布式计算架构由两层结构向三层结构扩展而逐步演化而来的。随着计算机和网络技术的飞速发展,许多软件需要在不同厂家的硬件平台、网络协议异构环境下运行,应用的规模从局域网发展到广域网,传统的"客户端/服务器"的两层结构已无法适应需求,因此以中间件软件为基础框架的三层应用模式应运而生。在三层结构中,通过在中间层部署中间件,解决了二层结构下的诸多缺陷:1)共性凝练和复用,应对海量访问;2)屏蔽异构性,实现互操作;3)加密传输,提高系统安全性。

对于汽车工业领域而言,根据每一种操作系统会有不同的通信中间件适配,中间件组件是新一代分布式实时通信中间件协议,主要采用发布/订阅(CS)体系架构,强调以数据为中心,通过丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

本质上,中间件可以被认为是一种广义操作系统,不同于QNX、Linux、Vxworks这些底层OS内核,它是介于上层应用和底层系统之间的一套软件框架,是对软硬件资源进行管理、分配和调度的平台,充当着软件和硬件解耦的关键角色。同时,能为上层的应用软件提供开发和运行所需的环境,方便开发者快速、高效、灵活地开发和集成自动驾驶软件。因此,中间件是实现下一代面向服务SOA的重要单元。在一定程度上决定了未来自动驾驶系统能否实现最佳效能。

当前,很多公司所涉及的操作系统自研能力实际都是指的对操作系统内核做补充开发中间件或裁减应用软件。而主机厂与Tier1在开发能力上的差异性往往体现在其所开发底层操作系统研发的整体框架上,而框架又取决于OS的中间件组合。比如基于QNX内核做开发时,由于底层OS内核不可被更改,主机厂或tier1只能通过叠加自己定制的上层算法来完成中间件的设计。而基于Linux内核开发时,则是先参照自身需求对底层OS内核做软件裁减配置,再上层适配不同的中间层算法,显然Linux难度要大得多。

借助于中间件平台,插拔式设计可以将主机厂的不同硬件配置进行统一定制化开发,整个自动驾驶系统方案,在开发时可以根据需求进行不同拓展,而这里的不同拓展,既可以体现为适配不同的传感器、芯片、车辆平台等硬件,也体现为选配不同的软件算法模块,实现不同级别的自动驾驶功能。同时,中间件的应用也能确保开发后可以快速高效地进行软件迭代。

对于中间件的开发而言,需要在底层系统层面,打通OSI(开放式系统互联)接口,对不同系统的接口进行封装。具体将以自下而上的自动驾驶系统算法处理模式来说明整个中间件的开发过程。

1、感知数据前端处理

自动驾驶的感知数据前端处理包括对世界模型的相关数据结构进行定义和描述,中间件将传感器数据解析成世界模型中的数据表示,分离传感器数据接入方式和数据解析。

2、数据采集

这里需要在基础平台库中,开发和配置自动驾驶系统应用的基础组件,包括日志、配置、通讯、资源隔离、线程池、内存池、无损队列,以上功能的开发可以实现传感器数据抽取、同步等操作。

3、系统功能模块

中间件需要提供了关于数据整合的执行管理、状态管理、时间同步、通讯、诊断、监控以及一些其他的模块。从而确保平台系统、应用功能、系统资源按照正确的配置运行,并且状态得到高效管理,模块间可以实现及时有效的通讯,出现问题时可以实现随时诊断。

相关推荐
阿里云大数据AI技术1 小时前
DataWorks on EMR StarRocks,打造标准湖仓新范式
大数据·olap·emr·dataworks·湖仓一体
遥遥晚风点点1 小时前
spark 设置hive.exec.max.dynamic.partition不生效
大数据·hive·spark
喵叔哟2 小时前
【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--访问权限中间件
微服务·中间件·.net
huaqianzkh2 小时前
了解Hadoop:大数据处理的核心框架
大数据·hadoop·分布式
青锐CC2 小时前
webman使用中间件验证指定的控制器及方法[青锐CC]
中间件·前端框架·php
Kika写代码2 小时前
【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验
大数据·hadoop·hdfs
iiiiiankor3 小时前
C/C++内存管理 | new的机制 | 重载自己的operator new
java·c语言·c++
小辛学西嘎嘎3 小时前
C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
c语言·开发语言·c++
无敌最俊朗@3 小时前
stm32学习之路——八种GPIO口工作模式
c语言·stm32·单片机·学习
2301_799084674 小时前
超全排序C语言实现
c语言·数据结构·算法·排序算法