پلتفرم شبیهسازی ابری تلهمتری خودرو مبتنی بر نرمافزار (SDV) یک زیرساخت مقیاسپذیر و بر اساس تقاضا برای اجرای شبیهسازیهای تلهمتری خودرو در فضای ابری گوگل فراهم میکند.
این سیستم به شما امکان میدهد کمپینهای تلهمتری را از یک محیط مجازی Android Automotive ( Cuttlefish ) بدون سختافزار فیزیکی شبیهسازی کنید. این سیستم چرخه حیات شبیهسازی را با دریافت درخواستها، ایجاد ماشینهای مجازی موقت Compute Engine (VMs)، اجرای شبیهسازیها در داخل کانتینرهای Docker، جمعآوری و آپلود نتایج در Cloud Storage و حذف منابع، هماهنگ میکند.
این رویکرد، بستری مقرونبهصرفه و بسیار مقیاسپذیر برای آزمایش خطوط لوله تلهمتری فراهم میکند، زیرا منابع فقط در حین اجرای شبیهسازی مصرف میشوند.
هدف و قابلیتها
این سیستم چرخه حیات شبیهسازی را هماهنگ میکند و مدیریت زیرساختهای زیربنایی را خلاصه میکند.
- مقیاسپذیری بر اساس تقاضا: سیستم منابع ( ماشینهای مجازی موتور محاسباتی ) را فقط برای مدت زمان شبیهسازی ایجاد میکند تا هزینه مبتنی بر استفاده را ارائه دهد.
- مدیریت همزمانی: سیستم محدودیت قابل تنظیمی را برای شبیهسازیهای موازی اعمال میکند (برای مثال، ۵ مورد به طور پیشفرض). درخواستهای اضافی را در صف قرار میدهد و به طور خودکار آنها را در صورت آزاد شدن اسلاتها زمانبندی میکند.
- معماری رویداد محور: این سیستم از توابع ابری و Pub/Sub برای تنظیم گردش کار مستقل و انعطافپذیر استفاده میکند که شامل مدیریت درخواست، زمانبندی، نهاییسازی و پاکسازی میشود.
- مدیریت یکپارچه وضعیت: این سیستم از یک پایگاه داده Firestore برای ردیابی وضعیت زنده و پیکربندی هر شبیهسازی (به عنوان مثال،
PENDING،RUNNING،COMPLETEDیاFAILED) استفاده میکند. - مدیریت مصنوعات: سیستم به طور خودکار دانلود فایلهای ورودی مورد نیاز و آپلود تمام خروجیهای شبیهسازی (به عنوان مثال، گزارشها، لاگها، گزارشهای اشکال و فایلهای Logcat) را در فضای ذخیرهسازی ابری مدیریت میکند.
- پاکسازی منابع: یک کار خودکار زمانبندی ابری با پاکسازی ماشینهای مجازی یا ورودیهای پایگاه دادهی بدون استفاده، از نشت منابع جلوگیری میکند.
معماری
این سیستم از معماری بدون سرور و رویدادمحور با چندین سرویس ابری گوگل استفاده میکند. میتوانید با استفاده از یک رابط کاربری وب یا یک REST API با سیستم تعامل داشته باشید.
- تعامل کاربر: میتوانید از نسخه آزمایشی وب ارائه شده، یک برنامه سفارشی یا تعامل مستقیم با نقاط پایانی API استفاده کنید.
- لایه ارکستراسیون:
-
read-simulation: این تابع به شما امکان میدهد شبیهسازیها، تعداد ماشینهای مجازی در حال اجرا و حداکثر تعداد پیکربندیشدهی ماشینهای مجازی در حال اجرای همزمان را جستجو کنید. -
receive-request: سیستم درخواستها را در برابر یک لیست مجاز دقیق از اثر انگشتهای تصویر اعتبارسنجی میکند و آنها را در Pub/Sub منتشر میکند. -
schedule-simulation: Eventarc این تابع را بر اساس پیامهای Pub/Sub یا تغییرات Firestore فعال میکند. این تابع محدودیت همزمانی و تخصیص ماشینهای مجازی را بررسی میکند. -
finish-simulation: عامل این تابع را در پایان اجرا فراخوانی میکند تا وضعیت را بهروزرسانی کرده و پاکسازی را آغاز کند. -
delete-simulation: این تابع لغو دستی و پاکسازی منابع را مدیریت میکند.
-
- مدیریت وضعیت (Firestore): یک پایگاه داده Firestore وضعیت (مثلاً
PENDING،RUNNING،COMPLETEDیاFAILED) و پیکربندی هر شبیهسازی را ردیابی میکند. این پایگاه داده تمام دادههای اجرای شبیهسازی را ذخیره میکند. - ذخیرهسازی دادهها (فضای ابری): سیستم تمام فایلهای مربوط به شبیهسازی را در یک فضای ذخیرهسازی ابری ذخیره میکند. این شامل فایلهای پیکربندی ورودی، گزارشهای خروجی، گزارشهای مربوط به دستگاه Cuttlefish ، گزارشهای اشکال و فایلهای Logcat میشود.
- لایه اجرا (موتور محاسباتی):
- تابع
schedule-simulationبرای هر شبیهسازی یک ماشین مجازی موتور محاسباتی ایجاد میکند. این ماشین مجازی، کانتینر داکرِsimulation-agentرا اجرا میکند. -
simulation-agentفایلهای ورودی را از فضای ذخیرهسازی ابری دریافت میکند، نمونه SDV را اجرا میکند و تعاملات با دستگاه مجازی Cuttlefish را مدیریت میکند تا شبیهساز تلهمتری را اجرا کرده و دادههای حاصل را بازیابی کند.
- تابع
- تعمیر و نگهداری (زمانبند ابری): یک کار زمانبندی شده به صورت دورهای اجرا میشود تا هرگونه منبع یتیم (به عنوان مثال، ماشینهای مجازی خراب یا ورودیهای پایگاه داده قدیمی) را پاکسازی کند تا از نشت منابع جلوگیری شود.
مراحل بعدی
برای شروع کار با شبیهسازی تلهمتری ابری، به راهنماهای زیر مراجعه کنید:
- راهنمای استقرار : یاد بگیرید چگونه زیرساخت را راهاندازی کنید و عامل شبیهسازی را بسازید.
- راهنمای کاربر : یاد بگیرید که چگونه شبیهسازیها را با استفاده از نسخه آزمایشی وب یا REST API اجرا کنید.