前言:
随着汽车朝着“新四化”的趋势发展,客户对车辆功能的心里预期也悄然发生着改变。汽车在迈向更高等级自动驾驶的同时,也更加注重提升用户体验,例如快速的功能更新和软件迭代升级,提供个性化、人性化、差异化的功能与服务等,而这一切都是传统汽车电子架构所不能实现的。
面向服务的软件架构SOA以其标准化的服务接口、松耦合的服务机制以及可组合扩展的服务特性,为实现“软件定义汽车”夯实了框架基础。
01
SOA是什么?
在IT行业,如果要建立一个中文社区平台,这个社区平台既有PC网页版,也有Android或者IOS版,获取热榜列表,那么程序员绝不会为这三个平台分别写三种Api,而是以服务的形式,用同样一个接口为三个平台提供同样的内容,至于以什么样的UI展示,是各自平台要考虑的事情。这就是SOA架构思想的一种应用。
SOA:Service Oriented Architecture面向服务的架构,是1996年Gartner提出SOA概念,SOA被提出来以后,迅速成为IT行业的一种软件开发方法论。
许多组织从不同角度对SOA进行了描述:
Gartner对SOA的定义:SOA是一种C/S架构的软件设计方法,应用由服务和服务使用者组成,SOA与大多数通用的C/S架构模型不同之处在于它着重强调家构建的松散耦合,并使用独立的标准接口;
W3C对SOA的定义:SOA是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程;
Wikipedia对SOA的定义:SOA是一种软件的设计风格,应用程序组件通过网络通信协议,将服务提供给其他组件;SOA的基本原则是独立于供应商,产品和技术;
由上可以看出,SOA并没有一个大家公认的定义!但是SOA的目标及其特性却是清晰明了的。SOA的目的是一种以构建灵活可变的平台系统,SOA具有服务间 松耦合,无状态、无依赖;服务内 高内聚且完整,可复用、可灵活重组;服务通信标准化等特点。
SOA里面涉及服务,接口、相关角色等概念。 服务指的是实现某种功能的函数或方法,是一个可远程访问并独立执行和更新的离散功能单元;
接口:能够被其他模块调用的函数名称或一个封装的API;
在SOA中分为服务提供者(实现服务功能(包含控制算法、功能逻辑)的那一方)、服务消费者(使用服务接口,调用服务的那一方)、服务注册方/代理方(实现服务的注册/订阅/发布等)三种不同的角色。
在SOA实际应用中,首先会将业务拆分成不同的业务模块,每个模块可以理解成一个服务,服务之间通过标准的接口交互,通过服务和服务接口,简化了对系统的描述,降低复杂性,若服务接口不变,一个服务发生变化,不影响其他服务,若服务接口变化,可以通过版本管理向后兼容,提高软件的重用性和扩展性;
02
整车SOA的优势
2.1 为什么要在汽车上实施SOA架构?
车辆内部控制器通过传统总线连接,从而实现通信交互,但是信号的收发关系和路由信息通常是静态的、不可再更改的,如果后期突然新增节点,这个新“朋友”怎样从其他节点获得所需信息呢?
OTA是目前解决车辆在线升级,持续提高用户用车体验的好方法,但OTA仅仅是途径,车辆的电子电气架构和软件设计架构能否支持得起功能更新呢?
如果一个新增功能的实现,与车辆原有的系统架构、驱动方式甚至通信方式不匹配,甚至相冲突,那么应该怎样解决呢?
汽车在不久的将来会在互联网、物联网、能源物联网中都占有重要的地位,那么汽车必须具备开放性、网联性甚至自主性和自进化性,自动驾驶、V2X、边缘计算都是目之可见的应用场景,电子电气架构和软件平台架构在面对这样需求的时候,应如何处理?
为了解决上面的问题,我们需要一个功能可扩展性强,软硬件松散耦合,标准化接口,支持异构系统集成的电子架构,SOA正好符合上面的要求!
2.2 如何实现整车SOA
汽车EEA的发展使SOA具备了初步的应用条件。所谓分布式EEA,可以理解为汽车电气系统的软硬件资源和能力是分散的,分散在不同的供应商手中。ECU的软硬件开发全部由供应商完成,整车厂主要负责提出设计需求和测试验证。分布式EEA导致的ECU软硬件资源和能力的浪费是显而易见的。
不同的供应商负责不同的ECU开发,整车数十个ECU分别负责实现特定的软硬件功能,然后通过硬线信号或者网络信号进行交互,这种信息交互方式也被称为面向信号的通信。集中式EEA引入域控制器DCU概念,其芯片算力、操作系统以及软件架构可以满足业务需求与硬件资源解耦的需求,即有能力通过一套基础软件框架去实现SOA的设计思想,从而将底层的硬件资源具备的能力抽象为一种服务供外部使用,并能够支持一系列的服务管理功能(服务定位、服务发现,服务调用等)。
2.3 整车SOA优势
应用服务化:各个域将自己所能的提供服务公开化后,才能实现不同域之间的开发与融合,使智能汽车成为可能;
服务部署灵活:SOA的一个基础,就是“服务发现”机制,即给每个服务分配一个“全局名称”,通过这个名称就可以直接找到对应的服务,就好比我们上网时用的“网址” 。
基于这个特性,在整车生命周期内,不同的车型配置可做不同的服务部署,对代码几乎可以不用改动;
软件更新灵活:SOA的松耦合特性,可以将功能更新与变更限制在更小的范围内。当硬件架构需要调整,减少复杂功能涉及的ECU数量,当软件架构需要更新,一个功能改变只需要更新/升级部分软件;
通信带宽优势明显:SOA基于以太网通讯,在传输速度上相对CAN等传统网络占据绝对优势;
信息更安全:CAN采用MAC和SecOC等明文传输,加密等级不高,而SOA通信可以借助强大的以太网加密方案,还可以不断迭代扩展的;
与现有的互联网生态融合更方便:SOA的发布-订阅机制以及服务功能独立不重叠,是和互联网SOA及微服务高度契合的,为后续开发更多运用提供无限可能。
03
SOA对E/E挑战
3.1从功能定义到服务的拆分
相对于功能分解采用的面向过程开发方法,SOA软件架构开发使用“用例驱动的开发方法”和“面向服务的分析方法”。用例驱动的开发方法是指从用户的角度而非开发人员的角度考虑功能需求和系统实现,由用例的开发活动,可以建立需求和系统功能之间清晰的追溯关系,更好的应对快速迭代更新。
面向服务的分析方法则是以业务为中心,在由用例分析得到的系统功能需求的基础之上,对于业务逻辑进行抽象和封装,从业务角度寻找候选服务(Service Candidate),从架构角度强调服务的重用性(Resuable)、自主性(Autonomous)以及组合扩展性(Composable)特点,充分发挥SOA设计理念的优势。
3.2从面向信号设计到面向服务设计
面向信号的设计主要关注点为通信矩阵(包含信号、报文、节点等信息),主要目的是将某节点的某信息通过总线传输给需要改信息的其他节点,信息主要为一些物理状态值及一些控制指令,触发方式分为周期、事件或混合式。面向信号的设计在系统设计阶段就预先定义好交互行为。SOA的中间件负责控制提供者和消费者之间的通信。
中间件分离了应用层与底层通信协议,支持请求/响应模式,有需求才有通信,有效提高带宽利用率。支持在服务接口中定义复杂的数据类型。
3.3从CAN通讯到ETHERNET通讯
传统的E/E架构是基于CAN通讯,CAN是一种CSMA/CD的现场总线,而SOA架构的主流中间件例如,SOME/IP等都是基于IP协议通信的。
Ethernet具有更高的通信速率、更开放的协议、更好的支持功能增加,所以其更适应下一代网络架构。
04
整车SOA发展现状
大众在MEB架构上率先采用面向服务的架构,主要由独立域操作系统,编程语言和软件框架组成,将软件划分为单独的软件组件,用以最小化组件之间的功能依赖性,提高软件的可扩展性和可重用性。
大众使用CP和AP服务中间件来实现SOA通信,其中CP连接传感器、执行器和嵌入式ECU,收集信号,通过服务或者信号发给AP,AP封装服务和云端后台或者其他AP节点进行服务交互。
丰田提出了中央集中+区域控制器(Central&Zone)架构方案,此方案中按照区域分配区域控制器,区域控制器将本区域内的传感器信号发送给中央集中控制器,中央集中控制器将控制指令再返回区域控制器,区域控制器收到指令后驱动执行器动作。这种架构方案较域控制器具有空间布置合理、扩展性强等特点。
在现代的通信架构设计中,CAN等其他网络和以太网共存相当长一段时间,但SOA并不直接和这些网络通信,而是采用了SOA Adaptor模块来转换其他网络的功能和信息,在车内系统中,同时设计了SOA Gateway节点用于升级安全等级,使用SD Proxy处理服务相关信息、更新和新增服务、通过Service Router来访问安全或者强相关的服务。
国内现状:上汽零束已经与首批开发者一起,开发了几十个智能车专属应用场景,几百个用户“千人千面”模式,以及部分典型的汽车智能化应用,目前平台的软件将搭载在上汽旗下R汽车和智己汽车上。
相关文章