AUTOSAR图解==>AUTOSAR_AP_RS_AutomotiveAPIGateway

AUTOSAR Automotive API Gateway 详解

基于AUTOSAR R24-11规范的API网关架构与功能分析

目录


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网关的分层架构和主要组件,可以分为三个主要层次:

  1. 车辆数据访问接口层(顶部)

    • 提供VISS v2协议接口,使外部客户端能够通过标准化协议访问车辆数据
    • 包含API网关的核心功能组件,如VISS服务器、数据映射管理、类型转换器等
  2. AUTOSAR车辆内部接口层(中部)

    • 提供ara::com接口,用于与车辆内部服务通信
    • 包含多个服务接口实例,代表不同的车辆功能和数据源
  3. AUTOSAR Classic平台(底部)

    • 提供信号到服务转换功能,连接传统的AUTOSAR Classic平台信号
    • 通过信号接口提供对基础车辆功能的访问

API网关内部组件各自承担不同的功能职责:

  • VISS服务器:处理客户端请求,实现VISS协议
  • 数据映射管理:维护VSS数据模型与服务接口之间的映射关系
  • 类型转换器:负责不同数据类型间的转换
  • 请求限流器:防止过度请求导致系统过载
  • 订阅管理器:管理客户端数据订阅
  • 过滤器处理:实现变更过滤、时间过滤等机制
  • 信号新鲜度监控:追踪数据的时效性
  • 错误映射:统一处理各类错误情况

这种分层架构设计使API网关能够有效地连接外部协议和内部车辆系统,同时提供必要的数据转换、安全保障和性能优化。

2.2 组件结构

API网关的组件结构设计遵循了模块化原则,每个组件负责特定的功能,且组件之间通过明确定义的接口进行交互。这种设计使得网关具有良好的可维护性和可扩展性。

核心组件详解

  1. VISS服务器组件

    • 实现VISSv2协议标准([AP_RS_AAG_00040]
    • 处理HTTP和WebSocket请求
    • 支持GET(读取)、SET(设置)和SUBSCRIBE(订阅)操作
    • 负责请求路由和响应格式化
  2. 数据映射管理组件

    • 维护VSS数据模型与车辆服务接口的映射关系
    • 支持多种映射类型:字段映射、事件映射、方法映射和结构化数据类型映射
    • 允许不完全映射([AP_RS_AAG_00030]),支持增量开发
  3. 类型转换器组件

    • 实现VSS数据类型到AUTOSAR数据类型的转换([AP_RS_AAG_00010]
    • 处理单位转换([AP_RS_AAG_00011]),确保数据一致性
    • 执行数据类型约束检查([AP_RS_AAG_00001]
  4. 订阅管理器组件

    • 创建和维护客户端订阅([AP_RS_AAG_00051]
    • 监控数据变化并通知客户端
    • 处理订阅过期和取消
  5. 过滤器处理组件

    • 实现变更过滤器([AP_RS_AAG_00060]
    • 实现基于时间的过滤器([AP_RS_AAG_00061]
    • 支持动态元数据过滤器([AP_RS_AAG_00062]
  6. 请求限流器组件

    • 实现可配置的请求限制([AP_RS_AAG_00080]
    • 防止过度负载([AP_RS_AAG_00070]
    • 优化资源使用
  7. 信号新鲜度监控组件

    • 跟踪数据的时效性([AP_RS_AAG_00063]
    • 提供数据新鲜度信息给客户端
  8. 错误映射组件

    • 将内部错误映射到VISS错误([AP_RS_AAG_00034]
    • 提供统一的错误处理机制

2.3 数据映射模型

以下类图详细展示了VSS数据模型到AUTOSAR服务接口的映射机制:

数据映射模型是API网关的核心,它定义了如何将VSS数据结构转换为AUTOSAR服务接口。类图展示了三个主要部分:

  1. VSS数据模型(左侧)

    • VSS树:代表整个VSS数据模型的结构
    • VSS叶子节点:包含具体数据的终端节点
    • VSS数据类型:支持的数据类型,如stringint8boolean
    • VSS单位:数据的测量单位定义
  2. API网关映射组件(中间)

    • 数据映射管理器:核心类,协调整个映射过程
    • 映射配置:定义具体的映射规则
    • 映射类型:支持的映射方式,包括字段映射、事件映射、方法映射等
    • 数据类型转换:处理数据类型兼容性
    • 单位转换:处理不同测量单位间的转换
    • VISS请求处理器:处理VISS协议的请求
  3. AUTOSAR服务接口(右侧)

    • 服务接口实例:具体的服务实例
    • 服务接口类型:服务接口的定义
    • 字段、方法、事件:服务接口的不同组件
    • ARA数据类型:AUTOSAR环境中的数据类型
    • ARA单位:AUTOSAR环境中的测量单位

映射配置是连接VSS数据模型和AUTOSAR服务接口的关键。它定义了:

  • 源VSS路径与目标服务接口的对应关系
  • 使用的映射类型(字段、事件、方法等)
  • 必要的数据类型和单位转换
  • 结构化数据类型的映射规则

这种灵活的映射机制使得API网关能够处理各种复杂的数据转换场景,同时保持数据的一致性和完整性。


3. 工作流程

3.1 请求处理流程

下图展示了API网关处理客户端请求的典型流程,包括数据读取、订阅和多值读取场景:

在这里插入图片描述

序列图展示了三种主要的请求处理场景:

  1. 数据读取场景

    • 客户端发送VISS读取请求,如GET vehicle/speed
    • 请求处理器查找相应的数据映射
    • 如果存在映射,则通过服务接口代理获取数据
    • 数据映射管理器执行必要的数据类型和单位转换
    • 格式化响应并返回给客户端
    • 如果不存在映射,则返回404错误
  2. 数据订阅场景

    • 客户端发送带有过滤器的VISS订阅请求
    • 创建过滤器实例(如变更过滤器)
    • 通过订阅管理器创建订阅并返回订阅ID
    • 当车辆服务接口数据变化时,执行以下步骤:
      • 应用数据转换
      • 应用过滤器规则
      • 如果通过过滤,则向客户端发送更新通知
      • 否则,丢弃更新
  3. 多值读取场景

    • 客户端发送包含多个路径的VISS读取请求
    • 请求处理器拆分请求并为每个路径执行单独的映射查找和数据获取
    • 合并多个结果并返回格式化的VISS响应

这些处理流程体现了API网关的核心功能:

  • 灵活处理不同类型的VISS请求
  • 执行数据映射和转换
  • 支持实时数据订阅和更新
  • 应用过滤器减少不必要的数据传输
  • 统一处理错误情况

3.2 状态转换机制

下图展示了API网关的状态转换机制,描述了网关从启动到关闭的完整生命周期:

在这里插入图片描述

状态图展示了API网关的完整生命周期和工作状态:

  1. 初始化状态

    • 加载映射配置:读取VSS到服务接口的映射定义
    • 初始化组件:配置并启动各功能组件
    • 注册服务接口:连接到车辆内部服务接口
  2. 运行中状态:网关的主要工作状态,包含多个子状态:

    • 空闲:等待请求的默认状态
    • 处理请求:解析请求、查找映射、执行服务调用、数据转换和构建响应
    • 管理订阅:创建订阅、监听数据变化、触发更新和清理过期订阅
    • 限流保护:检查请求频率,决定接受或拒绝请求
  3. 错误处理状态

    • 记录错误:记录错误信息供诊断使用
    • 通知客户端:返回适当的错误响应
    • 恢复服务或进入降级模式:根据错误严重性决定后续行动
  4. 降级模式状态

    • 限制服务:保留核心功能,暂停非关键功能
    • 尝试恢复:定期尝试恢复完整功能
    • 成功恢复或继续降级:根据恢复结果决定下一步
  5. 关闭状态

    • 停止接受请求:不再接受新请求
    • 完成处理中请求:完成已接受的请求
    • 清理资源和注销服务:有序释放资源

这种状态管理机制确保了API网关能够:

  • 有序启动和初始化
  • 高效处理正常工作负载
  • 妥善处理错误情况
  • 在必要时进入降级模式以维持核心功能
  • 安全有序地关闭

4. 功能需求

4.1 数据类型映射

API网关负责处理VSS数据类型与AUTOSAR环境中数据类型之间的映射和转换。这包括几个关键要求:

  1. 数据类型约束强制执行 ([AP_RS_AAG_00001])

    • 网关必须强制执行VSS数据类型的限制,确保数据符合规范
    • 这保证了数据的一致性和有效性
  2. 数据类型映射支持 ([AP_RS_AAG_00010])

    • 支持将VSS叶子节点的数据类型映射到车辆内部的兼容数据类型
    • 处理不同数据类型之间的转换,如int8Integer
  3. 单位映射支持 ([AP_RS_AAG_00011])

    • 允许VSS叶子节点的单位与车辆内部使用的单位进行映射
    • 例如,将公里/小时映射到英里/小时
  4. 结构化数据类型支持 ([AP_RS_AAG_00023])

    • 支持将VSS叶子节点映射到结构化数据类型的一部分
    • 允许更复杂的数据结构映射
  5. 结构化数据类型原子操作 ([AP_RS_AAG_00024])

    • 对于struct类型的VSS叶子节点,确保原子读写操作
    • 保证数据完整性和一致性

4.2 服务接口映射

API网关提供了将VSS数据模型映射到不同类型的AUTOSAR服务接口的功能:

  1. 字段映射 ([AP_RS_AAG_00020])

    • 支持将VSS叶子节点映射到ServiceInterface字段
    • 适用于简单的数据访问场景
  2. 事件映射 ([AP_RS_AAG_00021])

    • 支持将VSS叶子节点映射到ServiceInterface事件
    • 适用于需要通知的数据变更场景
  3. 方法映射 ([AP_RS_AAG_00022])

    • 支持将VSS叶子节点映射到具有gettersetter语义的ServiceInterface方法
    • 提供函数式访问方式
  4. 灵活映射目标 ([AP_RS_AAG_00031])

    • 每个VSS叶子节点可以映射到字段、事件、方法,或者完全不映射
    • 提供灵活的集成选项
  5. 服务实例关联 ([AP_RS_AAG_00032])

    • 将VSS叶子节点映射到服务接口的具体实例
    • 确保访问正确的服务实例
  6. 功能映射 ([AP_RS_AAG_00033])

    • 将VISS请求映射到相应的AUTOSAR接口活动
    • 处理请求与内部功能之间的转换
  7. 信号到服务转换 ([AP_RS_AAG_00081])

    • 支持信号到服务的转换功能
    • 允许直接与AUTOSAR Classic信号交互

4.3 VISS协议支持

API网关实现了Vehicle Information Service Specification (VISS) 协议的核心功能:

  1. VISS服务提供 ([AP_RS_AAG_00040])

    • 按照VISSv2规范提供服务
    • 作为访问车辆数据的标准化协议
  2. 多叶子节点读取 ([AP_RS_AAG_00050])

    • 支持在单个请求中读取多个VSS叶子节点
    • 提高数据访问效率
  3. 订阅支持 ([AP_RS_AAG_00051])

    • 支持VISS订阅功能
    • 允许客户端接收数据更新通知
  4. VSS聚合忽略 ([AP_RS_AAG_00052])

    • 忽略VSS聚合,简化实现
    • 可以使用结构化数据类型替代聚合功能
  5. 信号新鲜度 ([AP_RS_AAG_00063])

    • 使客户端能够测量接收信号的新鲜度
    • 帮助评估数据的时效性和可用性

4.4 过滤器支持

API网关实现了多种过滤器,以优化数据传输和提高效率:

  1. 变更过滤器 ([AP_RS_AAG_00060])

    • 仅在数据变化时通知客户端
    • 减少不必要的数据传输
  2. 基于时间的过滤器 ([AP_RS_AAG_00061])

    • 按指定的时间间隔通知客户端
    • 适用于需要定期更新的场景
  3. 服务器能力过滤器 ([AP_RS_AAG_00062])

    • 支持带有server_capabilities参数的动态元数据过滤器
    • 允许客户端了解服务器提供的功能

4.5 错误处理

API网关提供了全面的错误处理机制:

  1. 错误映射 ([AP_RS_AAG_00034])

    • 将服务接口错误映射到VISS错误
    • 提供统一的错误响应格式
  2. 过载保护 ([AP_RS_AAG_00070])

    • 实现保护机制防止过载
    • 保障系统稳定性
  3. 请求速率限制 ([AP_RS_AAG_00080])

    • 支持配置AUTOSAR接口的请求速率限制
    • 防止过度请求对服务提供者造成压力

5. 应用场景

AUTOSAR Automotive API Gateway适用于多种应用场景,主要包括:

  1. 车辆数据访问场景

    • 外部应用通过标准化接口访问车辆数据
    • 车载诊断系统获取车辆状态信息
    • 远程监控系统收集车辆遥测数据
  2. 数据发布场景

    • 车辆通过标准化方式发布传感器数据
    • 车辆状态变化通知(如低油量警告、安全系统触发)
    • 车辆功能状态更新(如驾驶模式变更)
  3. 车辆功能集成场景

    • 第三方应用与车辆系统集成
    • 不同供应商组件之间的标准化通信
    • 跨平台互操作性(如Adaptive平台与Classic平台互操作)
  4. 服务演化场景

    • 在保持外部接口稳定的同时更新内部实现
    • 渐进式添加新的车辆功能和数据点
    • 系统升级时维持向后兼容性

6. 总结

AUTOSAR Automotive API Gateway作为AUTOSAR自适应平台的关键组件,提供了连接车辆内部系统与外部应用的标准化桥梁。通过本文档的分析,我们可以得出以下关键结论:

  1. 架构优势

    • 分层设计提供了良好的模块化和可扩展性
    • 组件化结构使得功能可以独立开发和测试
    • 明确的接口定义促进了不同供应商组件的集成
  2. 功能特点

    • 灵活的数据映射机制支持多种类型转换
    • 全面的VISS协议实现提供标准化访问方式
    • 高效的订阅和过滤机制优化了数据通信
    • 完善的错误处理和保护措施增强了系统稳定性
  3. 实现价值

    • 降低了车辆数据访问的复杂性
    • 提高了第三方应用与车辆系统集成的效率
    • 支持增量开发和系统演化
    • 促进了车联网生态系统的发展
  4. 未来方向

    • 进一步扩展对更多VSS数据类型和结构的支持
    • 增强安全性和隐私保护机制
    • 优化性能以支持更高吞吐量和更低延迟的应用场景
    • 与其他标准(如W3C车辆信息服务)的协同和互操作

AUTOSAR Automotive API Gateway通过标准化和简化车辆数据访问,为开发更丰富的车载应用和服务奠定了基础,是构建现代互联汽车生态系统的关键技术组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值