13-12-2015, 12:24
|
|
|
|
חבר מתאריך: 25.04.11
הודעות: 9,931
|
|
תקשיב...
Shared Nothing זה מושג עתיק, מתחום מסדי הנתונים בכלל... הוא נולד עם שני מושגים משלימים: shared memory, shared storage :
- Shared memory (כארכיטקטורה למערכות מבוזרות) נפטר, ולאחרונה נולד מחדש.
- Shared storage זה בגדול מערכת שה nodes שלה תלויים ב DB משותף.
- Shared nothing זה מערכת שלא תלויה בשום דבר חיצוני. יכול להיות לה DB אבל הוא פרטי לכל Node .
רוב המערכות המבוזרות בימינו עושות משהו בין שתי ההגדרות האחרונות, ורוב המערכות הקטנות הן shared storage
מה שאתה מדבר עליו נקרא Stateless משהו, או Isolated request , או איזה שם אחר שאני לא זוכר... כשכל בקשה מטופלת כאילו היא היחידה ביקום. זה דיי הטרנד השולט בעולם היום, ומי שכותב מערכות Web או מערכות Buisness סטנדרטיות בצורה אחרת הוא דביל.
באופן טבעי הגישה הזאת היא בעייתית מבחינת ביצועים. אתה מוזמן לטעון אחרת, אבל זה לא יהיה שווה התייחסות.... הפתרון שבד"כ מסתמכים עליו בשביל להתמודד עם "קושיות" הביצועים הוא caching. שוב, לשני הכיוונים, גם כלפי ה DB ודברים שהאפליקציה תלויה בהם, וגם כלפי בקשות נכנסות. כלומר, כל בקשה עדיין מאמינה שהיא היחידה ביקום, ומה שמטפל בה מתנהג כאילו הוא הרגע עלה מאפס, אבל בתכלס חלק מהדברים שהבקשה צריכה טעונים כבר לזכרון (או memcached וכד'). וכמעט תמיד מגבילים את זה ל"משאבים" שצריך, ולא למודולים של לוגיקה, גם כי בד"כ הטעינה שלהם היא על גבול החינם.
נכון שגישה כזאת עלולה ליצור בעיות כמו: בעיות סנכרון, race conditions, corruption , אבל בד"כ הכל סבבה. אישית יצא לי לעבוד על הרבה מערכות שנבנו ככה. וגם לעבוד טיפה על מערכת PHP שעבדה ככה והשתמשה ב Memcached .
אגב, זכור לי באג ממש מגעיל שעשית במערכת הזאת, שהיה דופק בקשות אחרות, כי לצפות מ PHP למשהו כמו סדר פעולות חשבון זה כנראה מוגזם... או טיפול נורמאלי בשגיאות שיעצור אותי כשאני עושה שטויות, ולא יבלע טעויות וימשיך הלא בחדווה....
|