מה ההבדל בין מערכת מבוזרת למערכת מקבילית?

תוכן עניינים

מה ההבדל בין מערכת מבוזרת למערכת מקבילית?

בפיתוח מערכות מודרניות נתקלים בשני מושגים דומים אבל לא זהים: מערכת מבוזרת ו-מערכת מקבילית. שניהם מתארים מצב שבו “כמה דברים עובדים בו-זמנית”, אבל הם עושים זאת מסיבות שונות, בדרכים שונות, וברמות שונות של מורכבות.

כדי להבין את ההבדל - מספיק להבין את המהות של כל אחת.

מערכת מקבילית - כמה משימות רצות ביחד על אותה מכונה

מערכת מקבילית (Parallel System) משתמשת בכמה ליבות או כמה תהליכונים (threads) באותו מחשב כדי לבצע משימות במקביל.

למשל:

  • עיבוד תמונה על כמה ליבות
  • הרצת אלגוריתם שמחלק עבודה בין כמה threads
  • GPU שמבצע חישובים רבים במקביל

המאפיין המרכזי: הכול מתרחש על חומרה אחת, בזיכרון משותף.

למה זה טוב?

  • הרצה מהירה יותר של חישובים כבדים
  • ניצול משאבים של מכונה אחת
  • תיאום פשוט יחסית (כי הכול על אותו מחשב)

משל

חשבו על טבח אחד במטבח - הוא יכול לבצע משימות שונות: לחתוך, לערבב ולהקפיץ במקביל. אבל הוא עדיין אדם אחד באותו מטבח.

מערכת מבוזרת - כמה רכיבים פועלים יחד במקומות שונים

במערכת מבוזרת (Distributed System), יש כמה מחשבים שונים, שלכל אחד זיכרון משלו, תקשורת משלו, תפקיד משלו - והם צריכים לתקשר כדי ליצור מערכת אחת שלמה.

למשל:

  • שירות אינטרנט שמפוזר על כמה שרתים
  • מערכת ענן
  • בסיס נתונים מבוזר
  • שרשרת שירותים שכל אחד רץ על מכונה אחרת

המאפיין המרכזי: הרכיבים לא יושבים יחד - הם חייבים לתקשר.

למה זה טוב?

  • ניתן לגדול עשרות ומאות פעמים
  • אין נקודת כשל יחידה
  • אפשר לפזר עומסים
  • מתאימים לשירותים עם מיליוני משתמשים

משל

חשבו על מסעדה ענקית עם הרבה עובדים שונים: טבח, מלצר, מארחת, משלוחים, ניהול… כל אחד עושה חלק אחר - וכולם יחד יוצרים מערכת אחת.

הטעות הנפוצה: “אם כמה דברים עובדים במקביל - זה מבוזר”

לא נכון.

הבדל מרכזי:

מאפייןמערכת מקביליתמערכת מבוזרת
כמה מחשבים?מחשב אחדכמה מחשבים
זיכרוןמשותףמופרד
תקשורתפנימית במהירות גבוההדרך רשת, איטית יחסית
קושי תכנוניבינוניגבוה (כישלונות, סדר הודעות, סנכרון, עקביות)
מטרההאצה חישוביתגידול, אמינות, חלוקה לתפקידים

בקיצור: מקבילית = ביצועים מבוזרת = אדריכלות

דוגמה שמסכמת הכול

נניח שיש לנו משימה כבדה: עיבוד של אלפי תמונות.

מערכת מקבילית: מחשב אחד, 8 ליבות. המשימה מחולקת בין הליבות - כל ליבה מעבדת חלק מהתמונות.

מערכת מבוזרת: 20 מחשבים שונים, כל אחד מעבד חלק מהתמונות. צריך:

  • לשלוח אליהם את התמונות
  • לקבל את התוצאות
  • לטפל באי-סדר
  • לעמוד בנפילות
  • לאחד הכול בחזרה

מערכת מקבילית = חלוקה פנימית בתוך מחשב. מערכת מבוזרת = חלוקה חיצונית בין מחשבים שונים.

מתי משתמשים במה?

מערכת מקבילית - כשצריך “לעשות יותר מהר”

  • עיבוד תמונה
  • למידת מכונה
  • סימולציות
  • מתמטיקה כבדה

מערכת מבוזרת - כשצריך “לעבוד בגדול ולשרוד תקלות”

  • ענן
  • מערכות אינטרנט
  • שירותים עם הרבה משתמשים
  • בסיסי נתונים גדולים
  • מערכות זמן-אמת

סיכום

שתי המערכות עוסקות ב”ריבוי” - אבל כל אחת פותרת בעיה אחרת:

  • מערכת מקבילית פותרת בעיות של מהירות.
  • מערכת מבוזרת פותרת בעיות של גודל, אמינות וארגון.

וכאשר בונים מערכת גדולה באמת - לעיתים משתמשים בשתיהן יחד:

  • כל מחשב במערכת מבוזרת → עובד בצורה מקבילית
  • והמון מחשבים עובדים יחד → מערכת מבוזרת

תגובות