AUTOSAR Automotive API Gateway 详解
目录
1. 概述
1.1 AUTOSAR Automotive API Gateway简介
AUTOSAR Automotive API Gateway(简称AAG)是AUTOSAR自适应平台的一个关键组件,用于实现车辆内部数据与车辆信号规范(VSS)之间的桥接。它定义了一个标准化的方法,使外部客户端可以通过Vehicle Information Service Specification(VISS)协议访问车辆内部数据。
API网关的主要职责是将VSS数据模型映射到AUTOSAR服务接口,处理数据类型和单位的转换,并提供订阅和过滤机制,以满足不同的数据访问需求。此外,它还负责防止过载、处理错误以及监控数据新鲜度等任务。
1.2 文档目标与范围
本文档基于AUTOSAR R24-11规范中的"Requirements on Automotive API Gateway",详细分析了API网关的架构设计、工作流程和功能需求。文档的主要范围包括:
- API网关的整体架构与组件结构
- VSS数据到AUTOSAR服务接口的映射机制
- VISS协议支持的特性与限制
- 数据访问、订阅和过滤处理流程
- 网关状态转换与错误处理机制
2. 架构设计
2.1 整体架构
下图展示了AUTOSAR Automotive API Gateway的整体架构,包括与外部客户端和内部车辆接口的交互方式:
上图展示了API网关的分层架构和主要组件,可以分为三个主要层次:
-
车辆数据访问接口层(顶部):
- 提供VISS v2协议接口,使外部客户端能够通过标准化协议访问车辆数据
- 包含API网关的核心功能组件,如VISS服务器、数据映射管理、类型转换器等
-
AUTOSAR车辆内部接口层(中部):
- 提供
ara::com
接口,用于与车辆内部服务通信 - 包含多个服务接口实例,代表不同的车辆功能和数据源
- 提供
-
AUTOSAR Classic平台(底部):
- 提供信号到服务转换功能,连接传统的AUTOSAR Classic平台信号
- 通过信号接口提供对基础车辆功能的访问
API网关内部组件各自承担不同的功能职责:
- VISS服务器:处理客户端请求,实现VISS协议
- 数据映射管理:维护VSS数据模型与服务接口之间的映射关系
- 类型转换器:负责不同数据类型间的转换
- 请求限流器:防止过度请求导致系统过载
- 订阅管理器:管理客户端数据订阅
- 过滤器处理:实现变更过滤、时间过滤等机制
- 信号新鲜度监控:追踪数据的时效性
- 错误映射:统一处理各类错误情况
这种分层架构设计使API网关能够有效地连接外部协议和内部车辆系统,同时提供必要的数据转换、安全保障和性能优化。
2.2 组件结构
API网关的组件结构设计遵循了模块化原则,每个组件负责特定的功能,且组件之间通过明确定义的接口进行交互。这种设计使得网关具有良好的可维护性和可扩展性。
核心组件详解:
-
VISS服务器组件
- 实现VISSv2协议标准(
[AP_RS_AAG_00040]
) - 处理HTTP和WebSocket请求
- 支持
GET
(读取)、SET
(设置)和SUBSCRIBE
(订阅)操作 - 负责请求路由和响应格式化
- 实现VISSv2协议标准(
-
数据映射管理组件
- 维护VSS数据模型与车辆服务接口的映射关系
- 支持多种映射类型:字段映射、事件映射、方法映射和结构化数据类型映射
- 允许不完全映射(
[AP_RS_AAG_00030]
),支持增量开发
-
类型转换器组件
- 实现VSS数据类型到AUTOSAR数据类型的转换(
[AP_RS_AAG_00010]
) - 处理单位转换(
[AP_RS_AAG_00011]
),确保数据一致性 - 执行数据类型约束检查(
[AP_RS_AAG_00001]
)
- 实现VSS数据类型到AUTOSAR数据类型的转换(
-
订阅管理器组件
- 创建和维护客户端订阅(
[AP_RS_AAG_00051]
) - 监控数据变化并通知客户端
- 处理订阅过期和取消
- 创建和维护客户端订阅(
-
过滤器处理组件
- 实现变更过滤器(
[AP_RS_AAG_00060]
) - 实现基于时间的过滤器(
[AP_RS_AAG_00061]
) - 支持动态元数据过滤器(
[AP_RS_AAG_00062]
)
- 实现变更过滤器(
-
请求限流器组件
- 实现可配置的请求限制(
[AP_RS_AAG_00080]
) - 防止过度负载(
[AP_RS_AAG_00070]
) - 优化资源使用
- 实现可配置的请求限制(
-
信号新鲜度监控组件
- 跟踪数据的时效性(
[AP_RS_AAG_00063]
) - 提供数据新鲜度信息给客户端
- 跟踪数据的时效性(
-
错误映射组件
- 将内部错误映射到VISS错误(
[AP_RS_AAG_00034]
) - 提供统一的错误处理机制
- 将内部错误映射到VISS错误(
2.3 数据映射模型
以下类图详细展示了VSS数据模型到AUTOSAR服务接口的映射机制:
数据映射模型是API网关的核心,它定义了如何将VSS数据结构转换为AUTOSAR服务接口。类图展示了三个主要部分:
-
VSS数据模型(左侧):
- VSS树:代表整个VSS数据模型的结构
- VSS叶子节点:包含具体数据的终端节点
- VSS数据类型:支持的数据类型,如
string
、int8
、boolean
等 - VSS单位:数据的测量单位定义
-
API网关映射组件(中间):
- 数据映射管理器:核心类,协调整个映射过程
- 映射配置:定义具体的映射规则
- 映射类型:支持的映射方式,包括字段映射、事件映射、方法映射等
- 数据类型转换:处理数据类型兼容性
- 单位转换:处理不同测量单位间的转换
- VISS请求处理器:处理VISS协议的请求
-
AUTOSAR服务接口(右侧):
- 服务接口实例:具体的服务实例
- 服务接口类型:服务接口的定义
- 字段、方法、事件:服务接口的不同组件
- ARA数据类型:AUTOSAR环境中的数据类型
- ARA单位:AUTOSAR环境中的测量单位
映射配置是连接VSS数据模型和AUTOSAR服务接口的关键。它定义了:
- 源VSS路径与目标服务接口的对应关系
- 使用的映射类型(字段、事件、方法等)
- 必要的数据类型和单位转换
- 结构化数据类型的映射规则
这种灵活的映射机制使得API网关能够处理各种复杂的数据转换场景,同时保持数据的一致性和完整性。
3. 工作流程
3.1 请求处理流程
下图展示了API网关处理客户端请求的典型流程,包括数据读取、订阅和多值读取场景:
序列图展示了三种主要的请求处理场景:
-
数据读取场景:
- 客户端发送VISS读取请求,如
GET vehicle/speed
- 请求处理器查找相应的数据映射
- 如果存在映射,则通过服务接口代理获取数据
- 数据映射管理器执行必要的数据类型和单位转换
- 格式化响应并返回给客户端
- 如果不存在映射,则返回404错误
- 客户端发送VISS读取请求,如
-
数据订阅场景:
- 客户端发送带有过滤器的VISS订阅请求
- 创建过滤器实例(如变更过滤器)
- 通过订阅管理器创建订阅并返回订阅ID
- 当车辆服务接口数据变化时,执行以下步骤:
- 应用数据转换
- 应用过滤器规则
- 如果通过过滤,则向客户端发送更新通知
- 否则,丢弃更新
-
多值读取场景:
- 客户端发送包含多个路径的VISS读取请求
- 请求处理器拆分请求并为每个路径执行单独的映射查找和数据获取
- 合并多个结果并返回格式化的VISS响应
这些处理流程体现了API网关的核心功能:
- 灵活处理不同类型的VISS请求
- 执行数据映射和转换
- 支持实时数据订阅和更新
- 应用过滤器减少不必要的数据传输
- 统一处理错误情况
3.2 状态转换机制
下图展示了API网关的状态转换机制,描述了网关从启动到关闭的完整生命周期:
状态图展示了API网关的完整生命周期和工作状态:
-
初始化状态:
- 加载映射配置:读取VSS到服务接口的映射定义
- 初始化组件:配置并启动各功能组件
- 注册服务接口:连接到车辆内部服务接口
-
运行中状态:网关的主要工作状态,包含多个子状态:
- 空闲:等待请求的默认状态
- 处理请求:解析请求、查找映射、执行服务调用、数据转换和构建响应
- 管理订阅:创建订阅、监听数据变化、触发更新和清理过期订阅
- 限流保护:检查请求频率,决定接受或拒绝请求
-
错误处理状态:
- 记录错误:记录错误信息供诊断使用
- 通知客户端:返回适当的错误响应
- 恢复服务或进入降级模式:根据错误严重性决定后续行动
-
降级模式状态:
- 限制服务:保留核心功能,暂停非关键功能
- 尝试恢复:定期尝试恢复完整功能
- 成功恢复或继续降级:根据恢复结果决定下一步
-
关闭状态:
- 停止接受请求:不再接受新请求
- 完成处理中请求:完成已接受的请求
- 清理资源和注销服务:有序释放资源
这种状态管理机制确保了API网关能够:
- 有序启动和初始化
- 高效处理正常工作负载
- 妥善处理错误情况
- 在必要时进入降级模式以维持核心功能
- 安全有序地关闭
4. 功能需求
4.1 数据类型映射
API网关负责处理VSS数据类型与AUTOSAR环境中数据类型之间的映射和转换。这包括几个关键要求:
-
数据类型约束强制执行 (
[AP_RS_AAG_00001]
)- 网关必须强制执行VSS数据类型的限制,确保数据符合规范
- 这保证了数据的一致性和有效性
-
数据类型映射支持 (
[AP_RS_AAG_00010]
)- 支持将VSS叶子节点的数据类型映射到车辆内部的兼容数据类型
- 处理不同数据类型之间的转换,如
int8
到Integer
等
-
单位映射支持 (
[AP_RS_AAG_00011]
)- 允许VSS叶子节点的单位与车辆内部使用的单位进行映射
- 例如,将公里/小时映射到英里/小时
-
结构化数据类型支持 (
[AP_RS_AAG_00023]
)- 支持将VSS叶子节点映射到结构化数据类型的一部分
- 允许更复杂的数据结构映射
-
结构化数据类型原子操作 (
[AP_RS_AAG_00024]
)- 对于
struct
类型的VSS叶子节点,确保原子读写操作 - 保证数据完整性和一致性
- 对于
4.2 服务接口映射
API网关提供了将VSS数据模型映射到不同类型的AUTOSAR服务接口的功能:
-
字段映射 (
[AP_RS_AAG_00020]
)- 支持将VSS叶子节点映射到
ServiceInterface
字段 - 适用于简单的数据访问场景
- 支持将VSS叶子节点映射到
-
事件映射 (
[AP_RS_AAG_00021]
)- 支持将VSS叶子节点映射到
ServiceInterface
事件 - 适用于需要通知的数据变更场景
- 支持将VSS叶子节点映射到
-
方法映射 (
[AP_RS_AAG_00022]
)- 支持将VSS叶子节点映射到具有
getter
或setter
语义的ServiceInterface
方法 - 提供函数式访问方式
- 支持将VSS叶子节点映射到具有
-
灵活映射目标 (
[AP_RS_AAG_00031]
)- 每个VSS叶子节点可以映射到字段、事件、方法,或者完全不映射
- 提供灵活的集成选项
-
服务实例关联 (
[AP_RS_AAG_00032]
)- 将VSS叶子节点映射到服务接口的具体实例
- 确保访问正确的服务实例
-
功能映射 (
[AP_RS_AAG_00033]
)- 将VISS请求映射到相应的AUTOSAR接口活动
- 处理请求与内部功能之间的转换
-
信号到服务转换 (
[AP_RS_AAG_00081]
)- 支持信号到服务的转换功能
- 允许直接与AUTOSAR Classic信号交互
4.3 VISS协议支持
API网关实现了Vehicle Information Service Specification (VISS) 协议的核心功能:
-
VISS服务提供 (
[AP_RS_AAG_00040]
)- 按照VISSv2规范提供服务
- 作为访问车辆数据的标准化协议
-
多叶子节点读取 (
[AP_RS_AAG_00050]
)- 支持在单个请求中读取多个VSS叶子节点
- 提高数据访问效率
-
订阅支持 (
[AP_RS_AAG_00051]
)- 支持VISS订阅功能
- 允许客户端接收数据更新通知
-
VSS聚合忽略 (
[AP_RS_AAG_00052]
)- 忽略VSS聚合,简化实现
- 可以使用结构化数据类型替代聚合功能
-
信号新鲜度 (
[AP_RS_AAG_00063]
)- 使客户端能够测量接收信号的新鲜度
- 帮助评估数据的时效性和可用性
4.4 过滤器支持
API网关实现了多种过滤器,以优化数据传输和提高效率:
-
变更过滤器 (
[AP_RS_AAG_00060]
)- 仅在数据变化时通知客户端
- 减少不必要的数据传输
-
基于时间的过滤器 (
[AP_RS_AAG_00061]
)- 按指定的时间间隔通知客户端
- 适用于需要定期更新的场景
-
服务器能力过滤器 (
[AP_RS_AAG_00062]
)- 支持带有
server_capabilities
参数的动态元数据过滤器 - 允许客户端了解服务器提供的功能
- 支持带有
4.5 错误处理
API网关提供了全面的错误处理机制:
-
错误映射 (
[AP_RS_AAG_00034]
)- 将服务接口错误映射到VISS错误
- 提供统一的错误响应格式
-
过载保护 (
[AP_RS_AAG_00070]
)- 实现保护机制防止过载
- 保障系统稳定性
-
请求速率限制 (
[AP_RS_AAG_00080]
)- 支持配置AUTOSAR接口的请求速率限制
- 防止过度请求对服务提供者造成压力
5. 应用场景
AUTOSAR Automotive API Gateway适用于多种应用场景,主要包括:
-
车辆数据访问场景
- 外部应用通过标准化接口访问车辆数据
- 车载诊断系统获取车辆状态信息
- 远程监控系统收集车辆遥测数据
-
数据发布场景
- 车辆通过标准化方式发布传感器数据
- 车辆状态变化通知(如低油量警告、安全系统触发)
- 车辆功能状态更新(如驾驶模式变更)
-
车辆功能集成场景
- 第三方应用与车辆系统集成
- 不同供应商组件之间的标准化通信
- 跨平台互操作性(如Adaptive平台与Classic平台互操作)
-
服务演化场景
- 在保持外部接口稳定的同时更新内部实现
- 渐进式添加新的车辆功能和数据点
- 系统升级时维持向后兼容性
6. 总结
AUTOSAR Automotive API Gateway作为AUTOSAR自适应平台的关键组件,提供了连接车辆内部系统与外部应用的标准化桥梁。通过本文档的分析,我们可以得出以下关键结论:
-
架构优势
- 分层设计提供了良好的模块化和可扩展性
- 组件化结构使得功能可以独立开发和测试
- 明确的接口定义促进了不同供应商组件的集成
-
功能特点
- 灵活的数据映射机制支持多种类型转换
- 全面的VISS协议实现提供标准化访问方式
- 高效的订阅和过滤机制优化了数据通信
- 完善的错误处理和保护措施增强了系统稳定性
-
实现价值
- 降低了车辆数据访问的复杂性
- 提高了第三方应用与车辆系统集成的效率
- 支持增量开发和系统演化
- 促进了车联网生态系统的发展
-
未来方向
- 进一步扩展对更多VSS数据类型和结构的支持
- 增强安全性和隐私保护机制
- 优化性能以支持更高吞吐量和更低延迟的应用场景
- 与其他标准(如W3C车辆信息服务)的协同和互操作
AUTOSAR Automotive API Gateway通过标准化和简化车辆数据访问,为开发更丰富的车载应用和服务奠定了基础,是构建现代互联汽车生态系统的关键技术组件。