SOA架构是什么?

SOA(Service-Oriented Architecture) 面向服务的架构
SOA是一种软件架构,同时一种软件设计的思想,其实已经在IT领域有了很多年的发展和应用了。在SOA架构中,服务是最核心的抽象手段和系统最基础的单元。每个服务组件具备独立的功能;服务组件之间的接口遵循统一的标准,可互相访问,可组合扩展。业务过程则过程则是带有状态和服务调度策略的服务组件的组合和扩展,如下图所示。它具有,松耦合、可复用、高内聚的特点,请参考下图。
image.png

SOA场景举例

智能汽车中,大量的功能需要ECU间的协调功率来实现,当前ECU间基于信号的通讯会变得异常复杂,且不具备灵活性和扩展性,微小的功能改动都会引起整车通讯矩阵的改动,下图示例请参考。
SOA架构 - 图2
传统CAN通信
SOA引入到汽车软件设计中,车辆功能被以面向服务的设计理念架构设计成不同的服务组件,SOA中每个服务都具有唯一的身份标识,可以完成自身的发布,对其他服务的订阅,与其他服务的通讯。由此,SOA很好的解决了传统架构中因个别功能增加/变更而导致整个通讯矩阵,上下游模块都要跟随变更的问题,下图示例请参考。
SOA架构 - 图3
基于SOA通信

基于 总线 VS SOA

• 当前车企整车软件大多是基于AUTOSAR架构开发的,它是一种面向信号的架构,一个模块会不停的在总线上发送信息给另一个控制器。
• SOA是面向服务的架构,通过标准化的服务接口,松耦合的服务机制及可扩展性的服务特性,结合未来以高性能计算平台“域控制器”为核心的集中化电子电器架构,将成为未来汽车领域“软件定义汽车”,“科技驱动创新”“数据驱动服务”的技术基础,对比图如下。
image.png

SOA中的角色

服务(Service):提供某种功能的函数或方法,是一个离散的功能单元,可以远程访问并独立执行和更新。
服务接口(Service Interface):能够被外界模块调用的函数名称或一个封装AP。
服务提供者(Service Provider):实现服务功能(包含控制算法,功能逻辑等)的一方。
服务使用者(Service Consumer):使用服务接口,调用服务的一方。
关系图如下:
image.png
服务颗粒度如下图:
image.png

哪些传统架构中的服务和信号可以通过SOA来实现

理论上所以传统架构中的服务和信号都可以通过SOA来实现,但是目前传统的CAN,LIN等信号交互方式,网络传输稳定,问题和分析简单,工具链也更完善。因此一些跟驾驶安全相关的服务和信号还是建议使用传统的通信方式,也是目前已经规划SOA架构的车企没有完全用SOA取代传统架构的原因,下图请参考。
SOA架构 - 图7

随着SOA更多车企引入SOA的架构方案,相信未来SOA在整车电子电气架构上的开发和应用会越来越完善。