AAOS SDV menyediakan arsitektur berorientasi layanan dan berpusat pada data. Pengguna berinteraksi dengan sistem melalui library klien middleware, yang dibantu oleh Vehicle Services Interface Definition Language (VSIDL). Hal ini menyembunyikan detail infrastruktur tingkat rendah, sehingga developer dapat berfokus pada entity deployment dan komunikasi tingkat tinggi.
Model komunikasi
Komunikasi logis di SDV ditentukan oleh topik dan saluran.
Topik
Topik digunakan untuk komunikasi yang berpusat pada data (Publikasikan/Berlangganan). Daripada menemukan penerbit tertentu, pengguna berinteraksi dengan pesan yang dipublikasikan di topik bernama.
- ID: Topik diidentifikasi oleh string unik.
- Jenis data: Pesan yang dipublikasikan di topik ditentukan menggunakan protobuf.
- Pemisahan: Pelanggan memperhatikan jenis pesan dan nama topik, bukan identitas atau lokasi penerbit. Beberapa penerbit dapat memublikasikan ke topik yang sama, sehingga memungkinkan komunikasi many-to-many.
Saluran
Saluran digunakan untuk komunikasi berdasarkan remote procedure call (RPC). Pengguna memanggil metode layanan di saluran tertentu tanpa perlu mengetahui server mana yang menangani permintaan.
- ID: Saluran diidentifikasi dengan nama unik (misalnya,
main-control). - Jenis layanan: Layanan RPC diidentifikasi berdasarkan nama layanan protobuf yang sepenuhnya memenuhi syarat.
- Abstraksi: Middleware menangani pencarian instance server yang sesuai untuk layanan dan saluran tertentu.
Deployment dan siklus proses
Entity di bagian ini menentukan cara software dikemas, diotorisasi, dan dibuat instance-nya dalam lingkungan SDV.
Paket layanan
Paket layanan adalah grup logika bisnis terkait yang memiliki dua peran utama:
- Unit deployment: Paket layanan di-deploy sebagai bagian dari
paket SDV, yang merupakan file APEX dan unit terkecil
dari kemampuan update software.
- Setiap paket layanan dipetakan secara unik ke satu proses Linux di VM SDV saat runtime dan disebut sebagai instance paket layanan.
- Paket layanan direferensikan dalam manifes paket SDV, yang berisi metadata termasuk nama dan kebijakan otorisasi.
- Unit otorisasi: Izin diberikan ke seluruh paket layanan. Paket layanan diotorisasi untuk:
- Memublikasikan atau berlangganan topik tertentu (untuk jenis pesan tertentu).
- Menayangkan atau memanggil saluran tertentu (untuk jenis layanan tertentu).
Instance paket layanan
Instance paket layanan adalah instance paket layanan yang dimuat saat runtime.
- Setiap instance paket layanan dilacak dan diidentifikasi secara individual oleh SDV Lifecycle Manager (LCM).
- Mulai instance paket layanan dipicu oleh SDV Orchestrator dan dimulai serta dilacak oleh SDV LCM.
Paket SDV
Paket SDV adalah unit terkecil dari kemampuan update software dan:
- File Android Pony EXpress (APEX).
- Berisi satu atau beberapa paket layanan.
- Diperbarui sekaligus, yang berarti semua paket layanan dalam paket SDV diperbarui sekaligus.
Semua kode dalam Paket SDV berasal dari sumber kepercayaan yang sama (penerbit software yang sama).
Versi paket SDV yang berbeda dapat ada di VM SDV yang berbeda.
Detail implementasi
Bagian berikut menjelaskan detail implementasi lapisan transportasi SDV.
Latar belakang: Unit layanan
Meskipun developer terutama berinteraksi dengan topik dan saluran, unit layanan tetap menjadi mekanisme dasar untuk pendaftaran dan penemuan dalam tumpukan komunikasi SDV.
Unit layanan mewakili satu endpoint, seperti server RPC atau penerbit. Library klien middleware (mw::clientlib) menangani pendaftaran dan penemuan unit layanan ini di balik layar.