מה ההבדל בין מערכת מבוזרת למערכת מקבילית?
מה ההבדל בין מערכת מבוזרת למערכת מקבילית?
בפיתוח מערכות מודרניות נתקלים בשני מושגים דומים אבל לא זהים: מערכת מבוזרת ו-מערכת מקבילית. שניהם מתארים מצב שבו “כמה דברים עובדים בו-זמנית”, אבל הם עושים זאת מסיבות שונות, בדרכים שונות, וברמות שונות של מורכבות.
כדי להבין את ההבדל - מספיק להבין את המהות של כל אחת.
מערכת מקבילית - כמה משימות רצות ביחד על אותה מכונה
מערכת מקבילית (Parallel System) משתמשת בכמה ליבות או כמה תהליכונים (threads) באותו מחשב כדי לבצע משימות במקביל.
למשל:
- עיבוד תמונה על כמה ליבות
- הרצת אלגוריתם שמחלק עבודה בין כמה threads
- GPU שמבצע חישובים רבים במקביל
המאפיין המרכזי: הכול מתרחש על חומרה אחת, בזיכרון משותף.
למה זה טוב?
- הרצה מהירה יותר של חישובים כבדים
- ניצול משאבים של מכונה אחת
- תיאום פשוט יחסית (כי הכול על אותו מחשב)
משל
חשבו על טבח אחד במטבח - הוא יכול לבצע משימות שונות: לחתוך, לערבב ולהקפיץ במקביל. אבל הוא עדיין אדם אחד באותו מטבח.
מערכת מבוזרת - כמה רכיבים פועלים יחד במקומות שונים
במערכת מבוזרת (Distributed System), יש כמה מחשבים שונים, שלכל אחד זיכרון משלו, תקשורת משלו, תפקיד משלו - והם צריכים לתקשר כדי ליצור מערכת אחת שלמה.
למשל:
- שירות אינטרנט שמפוזר על כמה שרתים
- מערכת ענן
- בסיס נתונים מבוזר
- שרשרת שירותים שכל אחד רץ על מכונה אחרת
המאפיין המרכזי: הרכיבים לא יושבים יחד - הם חייבים לתקשר.
למה זה טוב?
- ניתן לגדול עשרות ומאות פעמים
- אין נקודת כשל יחידה
- אפשר לפזר עומסים
- מתאימים לשירותים עם מיליוני משתמשים
משל
חשבו על מסעדה ענקית עם הרבה עובדים שונים: טבח, מלצר, מארחת, משלוחים, ניהול… כל אחד עושה חלק אחר - וכולם יחד יוצרים מערכת אחת.
הטעות הנפוצה: “אם כמה דברים עובדים במקביל - זה מבוזר”
לא נכון.
הבדל מרכזי:
| מאפיין | מערכת מקבילית | מערכת מבוזרת |
|---|---|---|
| כמה מחשבים? | מחשב אחד | כמה מחשבים |
| זיכרון | משותף | מופרד |
| תקשורת | פנימית במהירות גבוהה | דרך רשת, איטית יחסית |
| קושי תכנוני | בינוני | גבוה (כישלונות, סדר הודעות, סנכרון, עקביות) |
| מטרה | האצה חישובית | גידול, אמינות, חלוקה לתפקידים |
בקיצור: מקבילית = ביצועים מבוזרת = אדריכלות
דוגמה שמסכמת הכול
נניח שיש לנו משימה כבדה: עיבוד של אלפי תמונות.
מערכת מקבילית: מחשב אחד, 8 ליבות. המשימה מחולקת בין הליבות - כל ליבה מעבדת חלק מהתמונות.
מערכת מבוזרת: 20 מחשבים שונים, כל אחד מעבד חלק מהתמונות. צריך:
- לשלוח אליהם את התמונות
- לקבל את התוצאות
- לטפל באי-סדר
- לעמוד בנפילות
- לאחד הכול בחזרה
מערכת מקבילית = חלוקה פנימית בתוך מחשב. מערכת מבוזרת = חלוקה חיצונית בין מחשבים שונים.
מתי משתמשים במה?
מערכת מקבילית - כשצריך “לעשות יותר מהר”
- עיבוד תמונה
- למידת מכונה
- סימולציות
- מתמטיקה כבדה
מערכת מבוזרת - כשצריך “לעבוד בגדול ולשרוד תקלות”
- ענן
- מערכות אינטרנט
- שירותים עם הרבה משתמשים
- בסיסי נתונים גדולים
- מערכות זמן-אמת
סיכום
שתי המערכות עוסקות ב”ריבוי” - אבל כל אחת פותרת בעיה אחרת:
- מערכת מקבילית פותרת בעיות של מהירות.
- מערכת מבוזרת פותרת בעיות של גודל, אמינות וארגון.
וכאשר בונים מערכת גדולה באמת - לעיתים משתמשים בשתיהן יחד:
- כל מחשב במערכת מבוזרת → עובד בצורה מקבילית
- והמון מחשבים עובדים יחד → מערכת מבוזרת