Architettura logica

AAOS SDV fornisce un'architettura orientata ai servizi e incentrata sui dati. Gli utenti interagiscono con il sistema tramite la libreria client middleware, con l'assistenza del linguaggio di definizione dell'interfaccia dei servizi dei veicoli (VSIDL). In questo modo, i dettagli dell'infrastruttura di basso livello vengono nascosti, consentendo agli sviluppatori di concentrarsi sulle entità di comunicazione e deployment di alto livello.

Modelli di comunicazione

La comunicazione logica in SDV è definita da argomenti e canali.

Argomenti

Gli argomenti vengono utilizzati per la comunicazione incentrata sui dati (pubblicazione/sottoscrizione). Anziché scoprire publisher specifici, gli utenti interagiscono con i messaggi pubblicati su argomenti denominati.

  • Identificatore: un argomento è identificato da una stringa univoca.
  • Tipo di dati: i messaggi pubblicati su un argomento sono definiti utilizzando protobuf.
  • Disaccoppiamento: i sottoscrittori si preoccupano del tipo di messaggio e del nome dell'argomento, non dell'identità o della posizione del publisher. Più publisher possono pubblicare nello stesso argomento, consentendo la comunicazione many-to-many.

Canali

I canali vengono utilizzati per la comunicazione basata su chiamate di procedura remota (RPC). Gli utenti chiamano i metodi di servizio su un canale specifico senza dover sapere quale server gestisce la richiesta.

  • Identificatore: un canale è identificato da un nome univoco (ad esempio, main-control).
  • Tipo di servizio: i servizi RPC sono identificati dal nome del servizio protobuf completo.
  • Astrazione: il middleware gestisce la ricerca dell'istanza del server appropriata per un determinato servizio e canale.

Deployment e ciclo di vita

Le entità in questa sezione definiscono come il software viene pacchettizzato, autorizzato e istanziato nell'ambiente SDV.

Pacchetto di servizi

Un pacchetto di servizi è un gruppo di logica di business correlata che svolge due ruoli principali:

  1. Unità di deployment: i pacchetti di servizi vengono sottoposti a deployment come parte di un pacchetto SDV, ovvero un file APEX e la più piccola unità di aggiornabilità del software.
    • Ogni pacchetto di servizi esegue il mapping in modo univoco a un singolo processo Linux su una VM SDV in fase di runtime e viene chiamato istanza del pacchetto di servizi.
    • Viene fatto riferimento ai pacchetti di servizi nel manifest del pacchetto SDV, che contiene metadati, inclusi nome e criteri di autorizzazione.
  2. Unità di autorizzazione: le autorizzazioni vengono concesse all'intero pacchetto di servizi. Un pacchetto di servizi è autorizzato a:
    • Pubblicare o sottoscrivere argomenti specifici (per un determinato tipo di messaggio).
    • Gestire o chiamare canali specifici (per un determinato tipo di servizio).

Istanza del pacchetto di servizi

Un'istanza del pacchetto di servizi è un'istanza caricata in fase di runtime di un pacchetto di servizi.

  • Ogni istanza del pacchetto di servizi viene monitorata e identificata individualmente da SDV Lifecycle Manager (LCM).
  • Gli avvii dell'istanza del pacchetto di servizi vengono attivati da SDV Orchestrator e avviati e monitorati da SDV LCM.

Pacchetto SDV

Un pacchetto SDV è la più piccola unità di aggiornabilità del software e:

  • Un file Android Pony EXpress (APEX).
  • Contiene uno o più pacchetti di servizi.
  • Viene aggiornato tutto in una volta, il che significa che tutti i pacchetti di servizi in un pacchetto SDV vengono aggiornati tutti in una volta.

Tutto il codice in un pacchetto SDV proviene dalla stessa origine di attendibilità (lo stesso publisher di software).

Possono esistere versioni diverse dello stesso pacchetto SDV in VM SDV diverse.

Dettagli di implementazione

Le sezioni seguenti descrivono i dettagli di implementazione del livello di trasporto SDV.

Informazioni di base: unità di servizio

Sebbene gli sviluppatori interagiscano principalmente con argomenti e canali, le unità di servizio rimangono il meccanismo sottostante per la registrazione e il rilevamento all'interno dello stack di comunicazione SDV.

Un'unità di servizio rappresenta un singolo endpoint, ad esempio un server RPC o un publisher. La libreria client middleware (mw::clientlib) gestisce la registrazione e il rilevamento di queste unità di servizio in background.