מערכת מבוזרת בהגדרתה הפשוטה היא קבוצה של מחשבים הפועלים יחד ונראים כאחד למשתמש הקצה. מכונות חולקות מצב משותף, פועלות במקביל ויכולות לפעול באופן עצמאי מבלי להשפיע על זמן הפעולה של המערכת כולה. האמת היא שניהול מערכות כאלה הוא נושא מורכב מלא במלכודות.
סקירה כללית של המערכת
המערכת המבוזרת מאפשרת שיתוף של משאבים (כולל תוכנה) המחוברים לרשת בו-זמנית.
דוגמאות להפצת מערכת:
- מחסנית מסורתית. מסדי נתונים אלה מאוחסנים במערכת הקבצים של מחשב אחד. בכל פעם שהמשתמש רוצה לקבל מידע, הוא מתקשר ישירות עם המכונה הזו. כדי להפיץ מערכת מסד נתונים זו, עליך להפעיל אותה על מספר מחשבים בו-זמנית.
- ארכיטקטורה מבוזרת.
מערכת מבוזרתמאפשר לך לבצע קנה מידה אופקית ואנכית. לדוגמה, הדרך היחידה להתמודד עם יותר תעבורה תהיה לשדרג את החומרה שמפעילה את מסד הנתונים. זה נקרא קנה מידה אנכי. קנה מידה אנכי טוב עד גבול מסוים, שלאחריו אפילו הציוד הטוב ביותר לא יכול להתמודד עם אספקת התעבורה הנדרשת.
שינוי קנה מידה אופקי פירושו הוספת מחשבים נוספים, לא שדרוג החומרה באחד. קנה מידה אנכי מגדיל את הביצועים ליכולות החומרה העדכניות ביותר במערכות מבוזרות. הזדמנויות אלו אינן מספיקות לחברות טכנולוגיה עם עומסי עבודה בינוניים עד כבדים. הדבר הטוב ביותר בקנה מידה אופקי הוא שאין מגבלות גודל. כאשר הביצועים יורדים, פשוט מוסיפים עוד מכונה, שבאופן עקרוני, ניתן לעשות זאת ללא הגבלת זמן.
ברמת הארגון, מערכת בקרה מבוזרת כוללת לעתים קרובות שלבים שונים. בתהליכים עסקיים במקומות היעילים ביותר של רשת המחשבים הארגונית. לדוגמה, בהפצה טיפוסית באמצעות מודל מערכת מבוזרת תלת-שכבתית, עיבוד הנתונים נעשה על גבי מחשב אישי במקום המשתמש, עיבוד עסקי מתבצע על מחשב מרוחק, וגישה לבסיס הנתונים ועיבוד הנתונים מתבצעים על מחשב אחר לגמרי. המספק גישה מרכזית לעסקים רבים. בדרך כלל, סוג זה של מחשוב מבוזרמשתמש במודל האינטראקציה של לקוח-שרת.
משימות עיקריות
המשימות העיקריות של מערכת בקרה מבוזרת כוללות:
- שקיפות - השג תמונת מערכת אחת מבלי להסתיר מיקום, גישה, העברה, במקביל, כשל, העברה, התמדה ופרטי משאבים למשתמשים.
- פתיחות - מפשטת את הגדרת הרשת ושינויים.
- מהימנות - בהשוואה למערכת בקרה אחת, היא צריכה להיות אמינה, עקבית ובעלת סבירות גבוהה לטעויות מיסוך.
- ביצועים - בהשוואה לדגמים אחרים, דגמים מבוזרים מספקים שיפור ביצועים.
- ניתן להרחבה - מערכות הבקרה המבוזרות הללו חייבות להיות ניתנות להרחבה במונחים של טריטוריה, ניהול או גודל.
משימות מערכות ההפצה כוללות:
- אבטחה היא בעיה גדולה בסביבה מבוזרת, במיוחד בעת שימוש ברשתות ציבוריות.
- סבילות לתקלות - יכול להיות קשה כאשר הדגם בנוי עם רכיבים לא אמינים.
- תיאום והפצה של משאבים - יכול להיות קשה אם אין פרוטוקולים מתאימים או מדיניות נדרשת.
סביבת מחשוב מבוזרת
(DCE) הוא תקן תעשייתי בשימוש נרחב התומך במחשוב מבוזר כזה. באינטרנט, ספקי צד שלישי מציעים כמה שירותים גנריים,שמתאימים למודל הזה.
מחשוב רשת הוא מודל מחשוב עם ארכיטקטורה מבוזרת של מספר רב של מחשבים הקשורים לפתרון בעיה מורכבת. במודל מחשוב הרשת, שרתים או מחשבים אישיים מבצעים משימות עצמאיות ומחוברים זה לזה באופן רופף באמצעות האינטרנט או רשתות מהירות נמוכה.
פרויקט מחשוב הרשת הגדול ביותר הוא SETI@home, שבו בעלי מחשבים בודדים מתנדבים לבצע חלק ממחזורי עיבוד ריבוי המשימות שלהם באמצעות המחשב שלהם עבור פרויקט Search for Extraterrestrial Intelligence (SETI). בעיית מחשב זו משתמשת באלפי מחשבים כדי להוריד ולחפש נתונים של רדיו טלסקופ.
אחד השימושים הראשונים של מחשוב רשת היה לשבור קוד קריפטוגרפי על ידי קבוצה הידועה כיום בשם distributed.net. קבוצה זו מתארת גם את המודל שלהם כמחשוב מבוזר.
התרחבות מסד נתונים
הפצת מידע חדש מאדון לעבד לא מתרחשת באופן מיידי. למעשה, ישנו חלון זמן בו ניתן לקבל מידע מיושן. אם זה לא היה המקרה, ביצועי הכתיבה ייפגעו, שכן מערכות מבוזרות יצטרכו לחכות באופן סינכרוני עד שהנתונים יתפשטו. הם באים עם כמה פשרות.
באמצעות גישת מסד נתונים עבדים, ניתן להרחיק את תעבורת הקריאה במידה מסוימת. יש כאן הרבה אפשרויות. אבל אתה רק צריך לחלק את תעבורת הכתיבה לכמהשרתים כי הוא לא יכול להתמודד עם זה. אחת הדרכים היא להשתמש באסטרטגיית שכפול רב מאסטר. שם, במקום עבדים, יש כמה צמתים עיקריים התומכים בקריאה ובכתיבה.
שיטה נוספת נקראת ריסוק. בעזרתו, השרת מחולק למספר שרתים קטנים יותר, הנקראים רסיסים. לרסיסים הללו יש ערכים שונים, נוצרים כללים לגבי אילו ערכים נכנסים לאיזה רסיס. חשוב מאוד ליצור כלל כזה שהנתונים יתפזרו באופן שווה. גישה אפשרית לכך היא להגדיר טווחים לפי מידע רשומה כלשהו.
מפתח הרסיס הזה צריך להיבחר בקפידה רבה, מכיוון שהעומס לא תמיד שווה לבסיסים של עמודות שרירותיות. הרסיס היחיד שמקבל יותר בקשות מהאחרים נקרא נקודה חמה, והם מנסים למנוע את היווצרותו. לאחר הפיצול, נתוני הכיול מחדש הופכים יקרים להפליא ועלולים לגרום לזמן השבתה משמעותי.
אלגוריתמי קונצנזוס של מסד נתונים
DBs קשים ליישום במערכות אבטחה מבוזרות מכיוון שהם דורשים מכל צומת לנהל משא ומתן על פעולת ההפרעה או הביצוע הנכונה. איכות זו ידועה כקונצנזוס ומהווה בעיה מהותית בבניית מערכת הפצה. השגת סוג ההסכם הדרוש לבעיית "התחייבות" היא פשוטה אם התהליכים המעורבים והרשת אמינים לחלוטין. עם זאת, מערכות אמיתיות כפופות למספרכשלים אפשריים של תהליכי רשת, הודעות אבודות, פגומות או משוכפלות.
זה מעורר בעיה ולא ניתן להבטיח שהקונצנזוס הנכון יושג בתוך פרק זמן מוגבל ברשת לא אמינה. בפועל, ישנם אלגוריתמים שמגיעים לקונצנזוס די מהר ברשת לא אמינה. קסנדרה למעשה מספקת עסקאות קלות משקל באמצעות שימוש באלגוריתם Paxos עבור קונצנזוס מבוזר.
מחשוב מבוזר הוא המפתח לזרימה של עיבוד ביג דאטה שנעשה בו שימוש בשנים האחרונות. זוהי שיטה לפירוק משימה ענקית, כמו 100 מיליארד רשומות מצטברות, שאף מחשב אחד לא מסוגל לעשות כמעט כל דבר בעצמו, להרבה משימות קטנות יותר שיכולות להתאים למכונה אחת. המפתח מפרק את המשימה העצומה שלו להרבה יותר קטנות, מבצע אותן במכונות רבות במקביל, אוסף את הנתונים כראוי, ואז הבעיה המקורית תיפתר.
גישה זו מאפשרת לך לשנות קנה מידה אופקית - כאשר יש משימה גדולה, פשוט הוסף צמתים נוספים לחישוב. משימות אלו בוצעו במשך שנים רבות על ידי מודל התכנות MapReduce המשויך ליישום עבור עיבוד מקביל ויצירת ערכות נתונים גדולים באמצעות אלגוריתם מבוזר על אשכול.
כרגע, MapReduce מיושן במקצת ומביא כמה בעיות. צצו ארכיטקטורות אחרות שמטפלות בבעיות אלו. כלומר, למבדה ארכיטקטורה להפצהמערכות עיבוד זרימה. ההתקדמות בתחום הזה הביאה כלים חדשים: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
מערכות אחסון ושכפול של קבצים
ניתן לחשוב על מערכות קבצים מבוזרות כעל מאגרי מידע מבוזרים. זה זהה לקונספט - אחסון וגישה לכמות גדולה של נתונים על פני אשכול של מכונות שהן ישות אחת. הם בדרך כלל הולכים יד ביד עם מחשוב מבוזר.
לדוגמה, יאהו ידועה כמי שמריצה HDFS על למעלה מ-42,000 צמתים לאחסון של 600 פטה-בייט של נתונים מאז 2011. ויקיפדיה מגדירה את ההבדל בכך שמערכות קבצים מבוזרות מאפשרות גישה לקבצים תוך שימוש באותם ממשקים וסמנטיקה כמו קבצים מקומיים, ולא דרך ממשק API מותאם אישית כגון Cassandra Query Language (CQL).
Hadoop Distributed File System (HDFS) היא מערכת המשמשת למחשוב על גבי תשתית Hadoop. נפוץ, הוא משמש לאחסון ושכפול קבצים גדולים (בגודל GB או TB) במכונות רבות. הארכיטקטורה שלו מורכבת בעיקר מ-NameNodes ו-DataNodes.
NameNodes אחראי לאחסון מטא נתונים על האשכול, כגון איזה צומת מכיל בלוקים של קבצים. הם פועלים כרכזי רשת, מבינים היכן הכי טוב לאחסן ולהעתיק קבצים, ועוקבים אחר תקינות המערכת. DataNodes פשוט מאחסנים קבצים ומבצעים פקודות כגון שכפול קבצים, כתיבה חדשה ואחרים.
באופן לא מפתיע, HDFS משמש בצורה הטובה ביותר עם Hadoop למחשוב, מכיוון שהוא מספק מודעות למידע על משימות. העבודות שצוינו מופעלות לאחר מכן בצמתים המאחסנים את הנתונים. זה מאפשר לך להשתמש במיקום הנתונים - מייעל חישובים ומפחית את כמות התעבורה ברשת.
מערכת הקבצים הבין-כוכבית (IPFS) היא פרוטוקול/רשת עמית-לעמית חדשה ומלהיבה עבור מערכת קבצים מבוזרת. באמצעות טכנולוגיית Blockchain, הוא מתגאה בארכיטקטורה מבוזרת לחלוטין ללא בעלים או נקודת כשל בודדת.
IPFS מציעה מערכת שמות (בדומה ל-DNS) הנקראת IPNS ומאפשרת למשתמשים לאחזר מידע בקלות. הוא מאחסן את הקובץ באמצעות גירסאות היסטוריות, בדומה ל-Git. זה מאפשר גישה לכל המצבים הקודמים של הקובץ. הוא עדיין עובר פיתוח כבד (v0.4 בזמן כתיבת שורות אלו) אבל כבר ראה פרויקטים שמעוניינים לבנות אותו (FileCoin).
מערכת הודעות
מערכות הודעות מספקות מיקום מרכזי לאחסון והפצת הודעות בתוך מערכת משותפת. הם מאפשרים לך להפריד את היגיון היישום מתקשורת ישירה עם מערכות אחרות.
קנה מידה ידוע - אשכול קפקא של לינקדאין עיבד טריליון הודעות ביום עם שיא של 4.5 מיליון הודעות בשנייה.
במונחים פשוטים, פלטפורמת ההודעות פועלת כך:
- הודעהמועבר מהאפליקציה שעלולה ליצור אותה, הנקראת מפיק, נכנסת לפלטפורמה, ונקראת מאפליקציות מרובות, הנקראות צרכנים.
- אם אתה צריך לאחסן אירוע מסוים במספר מקומות, כגון יצירת משתמש עבור מסד נתונים, אחסון, שירות שליחת דוא"ל, אז פלטפורמת ההודעות היא הדרך הנקייה ביותר להפיץ את ההודעה הזו.
ישנן מספר פלטפורמות פופולריות להעברת הודעות מהשורה הראשונה.
RabbitMQ הוא מתווך הודעות המאפשר לך לכוונן יותר את השליטה במסלולים שלהם באמצעות כללי ניתוב ופרמטרים אחרים הניתנים להגדרה בקלות. אפשר לקרוא לו מתווך "חכם" כי יש לו הרבה היגיון ועוקב מקרוב אחר המסרים שעוברים דרכו. מספק אפשרויות עבור APs ו-CPs מ-CAP.
Kafka הוא מתווך הודעות שהוא קצת פחות פונקציונלי מכיוון שהוא לא עוקב אחר ההודעות שנקראו ואינו מאפשר לוגיקת ניתוב מורכבת. זה עוזר להשיג ביצועים מדהימים ומייצג את ההבטחה הגדולה ביותר בתחום זה עם פיתוח אקטיבי של מערכות מבוזרות על ידי קהילת הקוד הפתוח ותמיכה של צוות Confluent. קפקא הוא הפופולרי ביותר בקרב חברות הייטק.
יישומי אינטראקציה עם מכונה
מערכת הפצה זו היא קבוצה של מחשבים הפועלים יחד כדי להופיע כמחשב נפרד למשתמש הקצה. מכונות אלו במצב כללי, עובדותבו זמנית ויכול לעבוד באופן עצמאי מבלי להשפיע על זמן הפעולה של המערכת כולה.
אם אתה מחשיב את מסד הנתונים כמבוזר, רק אם הצמתים מקיימים אינטראקציה זה עם זה כדי לתאם את הפעולות שלהם. זה במקרה זה משהו כמו אפליקציה שמריצה את הקוד הפנימי שלה ברשת עמית לעמית ומסווגת כאפליקציה מבוזרת.
דוגמאות ליישומים כאלה:
- קנה מידה ידוע - BitTorrent נחיל 193,000 צמתים לפרק של משחקי הכס.
- טכנולוגיית רישום בסיסית של מערכות בלוקצ'יין מבוזרות.
ניתן לחשוב על ספרי חשבונות מבוזרים כעל מסד נתונים בלתי ניתן לשינוי, ליישום בלבד, המשוכפל, מסונכרן ומשותף בכל הצמתים ברשת ההפצה.
לסקאלה הידועה - רשת Ethereum - היו 4.3 מיליון עסקאות ביום ב-4 בינואר 2018. הם משתמשים בדפוס המקור לאירועים, המאפשר לך לשחזר את מצב מסד הנתונים בכל עת.
Blockchain היא הטכנולוגיה הבסיסית הנוכחית המשמשת עבור ספרי חשבונות מבוזרים ולמעשה סימנה את תחילתם. החידוש החדש והגדול ביותר בתחום המבוזר יצר את פרוטוקול התשלום המבוזר הראשון, bitcoin.
Blockchain הוא ספר חשבונות מבוזר עם רשימה מסודרת של כל העסקאות שאי פעם התרחשו ברשת שלו. העסקאות מקובצות ומאוחסנות בבלוקים. הבלוקצ'יין כולו הוא בעצם רשימה מקושרת של בלוקים. בלוקים שצוינוהם יקרים ליצירה והם מחוברים הדוק זה לזה באמצעות קריפטוגרפיה. במילים פשוטות, כל בלוק מכיל גיבוב מיוחד (שמתחיל במספר X של אפסים) של התוכן של הבלוק הנוכחי (בצורת עץ מרקל) בתוספת ה-hash של הבלוק הקודם. Hash זה דורש הרבה כוח מעבד.
דוגמאות למערכות הפעלה מבוזרות
סוגי מערכות מופיעים למשתמש מכיוון שהם מערכות למשתמש יחיד. הם חולקים את הזיכרון, הדיסק שלהם, והמשתמש אינו מתקשה לנווט בין הנתונים. המשתמש מאחסן משהו במחשב האישי שלו והקובץ מאוחסן במספר מיקומים, כלומר מחשבים מחוברים כך שניתן לשחזר בקלות נתונים שאבדו.
דוגמאות למערכות הפעלה מבוזרות:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (שרת אפאצ'י).
אם מחשב כלשהו מאתחל גבוה יותר, כלומר, אם בקשות רבות מוחלפות בין מחשבים אישיים בודדים, כך מתרחש איזון עומסים. במקרה זה, הבקשות מופצות למחשב השכן. אם הרשת נעשית עמוסה יותר, ניתן להרחיב אותה על ידי הוספת מערכות נוספות לרשת. קובץ הרשת והתיקיות מסונכרנים ונעשה שימוש במוסכמות השמות כך שלא יתרחשו שגיאות בעת אחזור הנתונים.
Caching משמש גם בעת מניפולציה של נתונים. כל המחשבים משתמשים באותו מרחב שמות כדי לתת שם לקבצים. אבלמערכת הקבצים תקפה לכל מחשב. אם יש עדכונים לקובץ, הוא נכתב למחשב אחד והשינויים מופצים לכל המחשבים, כך שהקובץ נראה אותו הדבר.
קבצים נעולים במהלך תהליך הקריאה/כתיבה, כך שאין מבוי סתום בין מחשבים שונים. מתרחשות גם הפעלות, כמו קריאה, כתיבת קבצים בהפעלה אחת וסגירת הפגישה, ואז משתמש אחר יכול לעשות את אותו הדבר וכן הלאה.
היתרונות בשימוש
מערכת הפעלה שנועדה להקל על חיי היומיום של אנשים. ליתרונות ולצרכים של המשתמש, מערכת ההפעלה יכולה להיות משתמש יחיד או מבוזרת. במערכת משאבים מבוזרת, מחשבים רבים מחוברים זה לזה וחולקים את המשאבים שלהם.
היתרונות של ביצוע פעולה זו:
- אם מחשב אחד במערכת כזו פגום או פגום, אז צומת או מחשב אחר יטפלו בזה.
- ניתן להוסיף משאבים נוספים בקלות.
- משאבים כגון מדפסות יכולים לשרת מספר מחשבים.
זהו קצר על מערכת ההפצה, מדוע משתמשים בה. כמה דברים שחשוב לזכור: הם מורכבים ונבחרים לפי קנה מידה ומחיר וקשה יותר לעבוד איתם. מערכות אלו מופצות במספר קטגוריות אחסון: מחשוב, מערכות קבצים והודעות, אוגרים, אפליקציות. וכל זה רק שטחי מאוד לגבי מערכת מידע מורכבת.