Arquitectura lógica

El SDV de AAOS proporciona una arquitectura orientada a servicios y centrada en los datos. Los usuarios interactúan con el sistema a través de la biblioteca cliente de middleware, con la ayuda del lenguaje de definición de la interfaz de servicios para vehículos (VSIDL). Esto oculta los detalles de la infraestructura de bajo nivel, lo que permite que los desarrolladores se enfoquen en las entidades de comunicación y de implementación de alto nivel.

Modelos de comunicación

La comunicación lógica en SDV se define por temas y canales.

Temas

Los temas se usan para la comunicación centrada en los datos (publicación y suscripción). En lugar de descubrir publicadores específicos, los usuarios interactúan con mensajes publicados en temas con nombre.

  • Identificador: Un tema se identifica con una cadena única.
  • Tipo de datos: Los mensajes publicados en un tema se definen con protobuf.
  • Desacoplamiento: A los suscriptores les importa el tipo de mensaje y el nombre del tema, no la identidad ni la ubicación del publicador. Varios publicadores pueden publicar en el mismo tema, lo que permite la comunicación de muchos a muchos.

Canales

Los canales se usan para la comunicación basada en llamadas de procedimiento remoto (RPC). Los usuarios llaman a los métodos de servicio en un canal específico sin necesidad de saber qué servidor controla la solicitud.

  • Identificador: Un canal se identifica por un nombre único (por ejemplo, main-control).
  • Tipo de servicio: Los servicios de RPC se identifican por su nombre de servicio de Protobuf completamente calificado.
  • Abstracción: El middleware se encarga de encontrar la instancia de servidor adecuada para un servicio y un canal determinados.

Implementación y ciclo de vida

Las entidades de esta sección definen cómo se empaqueta, autoriza y crea una instancia del software dentro del entorno de SDV.

Paquete de servicios

Un paquete de servicios es un grupo de lógica empresarial relacionada que cumple dos funciones principales:

  1. Unidad de implementación: Los paquetes de servicios se implementan como parte de un paquete de SDV, que es un archivo APEX y la unidad más pequeña de capacidad de actualización de software.
    • Cada paquete de servicio se asigna de forma única a un solo proceso de Linux en una VM de SDV en el tiempo de ejecución y se conoce como instancia de paquete de servicio.
    • Se hace referencia a los paquetes de servicios en el manifiesto del paquete de SDV, que contiene metadatos, incluidas las políticas de autorización y el nombre.
  2. Unidad de autorización: Los permisos se otorgan a todo el paquete de servicios. Un paquete de servicios está autorizado para realizar las siguientes acciones:
    • Publicar o suscribirse a temas específicos (para un tipo de mensaje determinado)
    • Publicar o llamar a canales específicos (para un tipo de servicio determinado)

Instancia del paquete de servicios

Una instancia de paquete de servicios es una instancia cargada en el tiempo de ejecución de un paquete de servicios.

  • El SDV Lifecycle Manager (LCM) hace un seguimiento de cada instancia del paquete de servicios y la identifica de forma individual.
  • El SDV Orchestrator activa los inicios de instancias de paquetes de servicios, y el SDV LCM los inicia y realiza un seguimiento de ellos.

Paquete de SDV

Un paquete de SDV es la unidad más pequeña de capacidad de actualización de software y cumple con las siguientes condiciones:

  • Es un archivo Android Pony EXpress (APEX).
  • Contiene uno o más paquetes de servicios.
  • Se actualiza todo a la vez, lo que significa que todos los paquetes de servicios de un paquete de SDV se actualizan al mismo tiempo.

Todo el código de un paquete de SDV proviene de la misma fuente de confianza (el mismo publicador de software).

Pueden existir diferentes versiones del mismo paquete de SDV en diferentes VMs de SDV.

Detalles de la implementación

En las siguientes secciones, se describen los detalles de implementación de la capa de transporte del SDV.

Antecedentes: Unidades de servicio

Si bien los desarrolladores interactúan principalmente con temas y canales, las unidades de servicio siguen siendo el mecanismo subyacente para el registro y el descubrimiento dentro de la pila de comunicaciones del SDV.

Una unidad de servicio representa un solo extremo, como un servidor RPC o un publicador. La biblioteca cliente de middleware (mw::clientlib) controla el registro y el descubrimiento de estas unidades de servicio de forma interna.