לדלג לתוכן

פרויקט גמר: שירות משימות עמיד ומוגבל

נחבר את מנוע האחסון מפרק 6 ואת שירות הרשת מפרקים 9 ו־10 למערכת שמחזיקה הבטחה אחת מקצה לקצה: בקשה שקיבלה אישור עמיד אינה מבוצעת שוב כתוצאה מ־retry עם אותו מזהה, וניתן למצוא את תוצאתה אחרי restart. הבסיס המודרך יעבד payload קטן לחישוב סכום; ההרחבה תשתמש בעובדים מבודדים לעיבוד קבצים ובתת־המערכת שבחרתם בפרק 13.

השירות יחשוף פרוטוקול מקומי ופרוטוקול רשת בעלי אותה סמנטיקה. כל בקשה מכילה גרסה, סוג פעולה, מזהה ואורך מוגבל. הפעולות הן submit ו־lookup; אותו מזהה עם תוכן אחר מחזיר conflict. האישור נשלח רק אחרי commit, וניתוק לקוח אינו מבטל commit שכבר עבר לאחריות רכיב האחסון. ה־deduplication נשמר ביומן, ולא רק בזיכרון של תהליך אחד.

דרשו גבול של 16 בקשות פעילות, payload של לכל היותר 4 KiB ומספר תוצאות מוגבל. תור, פעולה חוסמת וכתיבת תשובה צריכים לשמור את אותו permit לפי תקופת החיות שלהם. השירות יתמוך ב־SIGINT וב־SIGTERM, יעצור admission, ימתין להחזרת כל ההיתרים ויפעיל recovery לפני פתיחת המאזינים בהפעלה הבאה.

בשלב ההרחבה הוסיפו קבלת קובץ חתום דרך SCM_RIGHTS מן המימוש בפרק 9, worker נפרד עם גבולות ההרשאה מפרק 10, ותוצאת משימה שאפשר לשחזר גם אם worker קרס. הוסיפו התמחות אחת מן הפרק הקודם עם צורך מוצר ברור, למשל מקור אירועים של הקרנל, FUSE לקריאת תוצאות או עיבוד מדיה. אין להוסיף דרייבר רק כדי לסמן שימוש ב־kernel; כל רכיב חייב לשרת דרישה ולהציג חוזה ובדיקות.

הגישו חבילת התקנה, unit, מקור משוחזר, lockfile, מסמך פרוטוקול, תרשים בעלות, דוח unsafe, בדיקות קריסה וביטול, דוח עומס ו־runbook. ההגירה תשתמש בדורות או בפרוטוקול אחר שמוכיח התאוששות מכל נקודת עצירה. מפעיל אחר יבצע התקנה, שדרוג ושחזור לפי התיעוד בלבד.

מבחני הקבלה כוללים retry אחרי אובדן reply, conflict אחרי restart, גוף חלקי, בקשה גדולה מדי, לקוח איטי, דיסק מלא, כשל sync, SIGTERM במהלך commit, כשל worker, חריגה מתקציב ורכיב לא מורשה שמנסה גישה אסורה. נדרש להראות מה ידוע ללקוח בכל תוצאה, כולל מצב שבו לא ניתן לדעת אם commit הפך עמיד.

הניקוד הוא נכונות 20%, בעלות ומקביליות 25%, התאוששות 15%, הבנת OS 15%, ביצועים 10%, בנייה ותפעול 10% והרחבה עצמאית 5%. מעבר דורש 80 נקודות וכל שערי התקינות: אין כשל בטיחות זיכרון ידוע, data race או deadlock במסלולי הקבלה, אין הבטחת durability שהבדיקות סותרות ואין עקיפה של גבול ההרשאה שהוגדר. ההגנה כוללת תקלה חדשה ודרישה קטנה שלא מומשה מראש בקורס.