Table of Contents

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

מאמר זה חוקר את השיטות הטובות ביותר ליישום דפוסים יצירה - Singleton, Factory Method, מפעל אבסטרקטי, בונה ופרוטוטיפ - במיוחד בהקשר של ניטור בזמן אמת.We מעבר להגדרות לימוד כדי לבחון את ההפוגות בעולם האמיתי, דאגות בטיחות חוט, השפעות ביצועים ושילוב עם סגנונות אדריכליים מודרניים כמו מיקרו-שירותים מונעים אירועים.

מדוע דפוסים יצירתיים חשובים ב-Time-Time Monitoring

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

  • (FLT:0) צריכת משאבים מבוקרת: 1FLT:1 כל אובייקט חדש צורב זיכרון ומחזורי CPU. בשפות הכלולות כמו Java או Go, הקצאות מופרזות מעוררות הפסקות GC תכופות, פגיעה בערבויות בזמן אמת.
  • (FLT:0) מצב בלתי עקבי: FLT:1 יצירת בלתי-מתאמת של משאבים משותפים - כגון בריכות חיבור מסד נתונים, execuators חוט, או לקוחות חסימה - יכול להוביל למקרים כפולים, תנאי גזע או תשישות משאבים.
  • (FLT:0) הפיכה לחומרה או לפרוטוקולים:03FLT:1 כאשר לוגיקה יצירת אובייקטים מפוזרת בכל בסיס הקוד, החלפת סוג חיישן או פרוטוקול תקשורת הופכת למאמץ ממריץ.
  • (FLT:0) בדיקות מורכבות ולעג: ההרחבה הישירה של כיתות קונקרטיות בתוך לוגיקה עסקית מעכבת בדיקות יחידה והופכת אותה קשה להחליף תלות לסימולציה.

[ה]הדפוסים העולים על ידי הפרדה בין ה-FLT:0.10.10.10.10.10.10.10.10.10.10.10.10.10.13] ל[דרוש מקור]

Singleton: שמירה על משאבים משותפים תחת שליטה

דפוס ה- Singleton מגביל מעמד לדוגמה אחת ומספק נקודת גישה גלובלית אליו.ב ניטור בזמן אמת, Singletons הם הכרחיים עבור משאבים שיש להתאים את כל היישום, כגון מנהלי תצורה, רשם מדדים, או שירותי סינכרון זמן.

Best Practices for Singleton in Monitoring Systems

השתמש ב Singletons for Stateless or Immutable Shared Services

מועמדים אידיאליים הם שירותים שאינם שומרים על מדינה לוחמת - או אם הם עושים, המדינה הזו היא ראשונית פעם אחת ולא השתנתה.לדוגמה, FLT:0 אשר מבססת סף חיישן מקובץ בסטארט-אפ ומספקת גישה לקריאה בלבד מתאימה באופן מושלם.

2.הבטחו את העדיפות של סלק

במערכת ניטור רב-הנקראת - שהיא כמעט תמיד המקרה - הדמיון של Singleton חייב להיות אטומי.התבנית הכפולה-מוזנחת של הדפסה פועלת ב- Java ו- .NET, אך חלופות פשוטות יותר כמו שדה סטטי בעל קצבה ראשונית נלהבת או מפוזר של Singleton (ב- Java) הן לעתים קרובות גבוהות יותר משום שהן מסתמכות על סינכרונומיה של ה- ⁇ של ה- ⁇ של ה- ⁇ של ה- ⁇ של הכיתה, ב- ⁇ , בדרגה 3.

(ב) [17] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

להימנע מ Singletons עבור מדינת Mutable כי חייב להיות Per-Thread או Per-Request

לא כל משאב משותף צריך להיות יחידטון.לדוגמה, זרם טלמטרי שמחזיק buffer לכל חיבור צריך להיות מושווה לחיבור זה. Mising אובייקט לתפיסת עולם יכול להוביל לשחיתות בין-קול ונתונים. השתמש בקווי הזרקת התלות או המקומיות במקום.

שלב ראשון עם Lazy Firstization רק אם יש צורך

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

שיטת המפעל: יצירת אובייקטים גמישה המבוססת על קונטקסט

תבנית שיטת המפעל מגדירה ממשק ליצירת אובייקט, אך מאפשרת ל- subclasses לשנות את סוג האובייקטים שייצרו.ב ניטור, זהו כלי רב עוצמה לטיפול במקורות נתונים שונים, ממשקי חיישן, או עיבוד אלגוריתמים ללא שינוי קוד קיים (ראה:0refactoring Guru - FactoryFLT:1).

שיטות העבודה הטובות ביותר עבור שיטת המפעל ב- Real-Time Monitoring

השתמש בשיטת המפעל כאשר סוג האובייקט תלוי בתנאי ריצה

בהתחשב במערכת ניטור שיש לעבד נתונים מחיישנים טמפרטורה וחיישנים לחץ.במקום להמלט הקוד עם ההרחבה 5 (FLT:5) או FLT 6 הצהרות, ליצור אינטגרטיבית 7 ומפעל מחזיר את המעבד הנכון המבוסס על סוג חיישן.

שמור על שיטות המפעל פשוט ומהיר

שיטות המפעל מופעלות לעתים קרובות, לפעמים כל מילימטר השניות להימנע לוגיקה מורכבת או I / O בתוך המפעל; מטפלים טרום-register ב-FLT:8 במהלך ההפעלה, ולאחר מכן לבצע בדיקה קבועה בזמן ריצה.

שיטת המפעל Integrate Factory with תלות בנזין

במערכות באמצעות Spring, Guice, או מסגרות DI דומות, המכולה עצמה פועלת כמפעל כללי.You יכול, עם זאת, עדיין ליישם שיטות במפעל מותאם אישית המנצלות את המכולה כדי לפתור את התלויות תוך כדי הסתרת מורכבות הבריאה.

4.העד את הקיבולת של המפעל

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

מפעל אבסטרקטי: יצירת משפחות של אובייקטים בלתי-מובנים

כאשר מערכת ניטור חייבת לתמוך בפלטפורמות חומרה מרובות או בפרוטוקולים תקשורתיים - לדוגמה, גם Modbus ו-OPC UA, או הן PLCs והן שערות קצה קצה - תבנית המפעל הפשטה מאירה.זה מספק ממשק ליצירת משפחות של אובייקטים קשורים (רגישים, ⁇ s, מחברים) ללא הפיכה ליישום קונקרטי (Fve:0GoF Designs - FactoryFaltureFLT).

Best Practices for Pink Factory in Monitoring

1.1 ממשקי מגן לכל חבר

עבור היפותטי (FLT:12), המוצרים עשויים להיות יציבים וגנרית מספיק כדי להכיל את כל הפלטפורמות.

2. השתמש במפעל מופשט כדי לכפות יציבות

יתרון גדול הוא להבטיח כי אובייקטים מאותה משפחה תואמת.לדוגמה, לקוח חיישן Modbus מצפה ממסגרות Modbus ולא יכול לעבוד עם OPC UA ⁇ . על ידי שימוש יחיד FLT:16 שיוצר את כל אובייקטים הקשורים ל Modbus, אתה מונע רכיבים לא מתאימים בעת יצירת (או לפחות בזמן תצורה).

3.חשבו על המשמעויות של ביצועי

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

שלב עם בחירה של קונריגטורציה-Driven

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

בונה: בניית אובייקטים מורכבים צעד אחר צעד

מערכות ניטור בזמן אמת כרוכות לעתים קרובות אובייקטים מורכבים של תצורה: חוקי התראה עם תנאים מרובים, ערוצי התראה, וכו 'תבנית הנייה מפרידה את בניית אובייקט מורכב מייצוגו, ומאפשרת לאותו תהליך בנייה ליצור ייצוגים שונים (FLT:0 Martin Fowler - בונה דפוס FLT:1).

Best Practices for Builder in Monitoring

השתמש ביוצר כאשר אובייקט דורש הרבה פרדוקסים אופטיים או נדרשים

אם יש בכיתה כמו FLT:19 יש 10 + פרמטרים - חלקם נדרשים, חלק אופציונלי, חלקם עם תלות זה - בונה משפר את יכולת הקריאה ומבטיח מדינה בתוקף לפני הקמת האובייקט.זה מועיל במיוחד עבור אובייקטים בלתי-מחושים, אשר בטוחים יותר בסביבות מרובות קרא.

2.התמדה בתוך בניית שיטות

כל סטטר בבנו יכול לאמת את הטיעון שלו באופן מיידי, למנוע שילובים לא חוקיים מוקדם.לדוגמה, אם כלל דורש גם סף וגם משך, הבונים יכול לבדוק כי FLT:20 נקבע לפני הגדרתו של [21] שיטת ה-FLT 22 הסופית מבצעת אימות סופי ומחזירה את האובייקט שנבנה או זורקת יוצא מן הכלל משמעותי.

3.הבטיחו את בטיחותם של שיטות בנייה

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

4.שלב עם ממשק Fluent Interface for Readability

בנין (דברים חוזרים ל-FLT:23) הופכים את קוד הבנייה ל-Prose.דוגמה: FLT:24 .תבנית זו פועלת היטב עבור תיקונים ועומסי תצורה.

Prototype: Cloning Objects for Performance

דפוס הפרוטוטיפ יוצר אובייקטים חדשים על ידי העתקה של מקרה קיים (הטיפוס) ב ניטור בזמן אמת, זה יכול להפחית באופן דרסטי את העלות של יצירת אובייקטים מורכבים שאחרת ידרוש אופטימיזציה יקר - כגון חיבורי רשת או תבניות גדולות של נתונים (ראה:0DoFactory - Prototype PatternFLT:1).

שיטות טובות ביותר עבור Prototype ב Monitoring

השתמש Prototype עבור אובייקטים עם בנייה איטית או זיכרון גבוה Overhead

אם LT:25 דורש פיצוי על סכימה, טעינה ברירת מחדל, ואת הקצאת buffers מקושר, שיבוט אבטיפוס מראש מוגדר יכול להיות הרבה יותר מהר מאשר לבנות מאפס.

המונחים: Deep Cloning Cautily

במערכות זמן רבות בזמן אמת, אובייקטים פנימיים של אב הטיפוס (למשל, בייטבנדר) צריכים להיות רדודים-מיושבים אם הם לא ניתנים להחלפה או לא משותפים.ד ⁇ עמוק כל חפץ מקונן יכול להיות יקר. במקום זאת, עיצוב אב-טיפוס עם שיבוט בראש; שימוש בהעתק-על-קול, או לספק שיטה שיוצרת מקרה חדש עם אזכורים משותפים (אם בטוח).

3.המשך Prototype Registries Light Weight

שמור על רישום של אבטיפוס נפוץ (למשל, חבילת ריק ברירת מחדל, מעטפה כוננות סטנדרטית) להשתמש במבנה נתונים מאובטח חוט (למשל, FLT:26) לאחסון אבטיפוס, ולאחזר אותם בזמן קבוע.

4.היית מלחמה של הומונד פרוטוטיפים

אם אב הטיפוס יכול להשתנות לאחר הרישום, השיבוטים ישקף את השינויים האלה.או שיבוט לפני מוטציות (אשר להביס את המטרה) או להשתמש אבטיפוסים לא-מעובדים, אבטיפוס הם הטובים ביותר עבור אובייקטים שאינם מתואמים או נועדו להיות תבניות עם תצורה קבועה.

טיפים נוספים ל-Integrating Creational Patterns in Real-Time Systems

המונחים: environmental over the Board

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

פיזור טוהר כמכשיר משלים

מסגרות הזרקת התלות לעתים קרובות לתפוס את התפקיד של מפעלים. במערכת ניטור, אתה יכול להגדיר את מיכל DI כדי לפתור את היישום הנכון על בסיס ההקשר של זמן ריצה.עם זאת, עבור אובייקטים שנוצרו per-request או per-mesage, מפעל מותאם אישית כי הצירים למכל יכולים להיות מפורשים יותר ומבחן.

שילוב עם Observer ו- Strategy Patterns

דפוסים הבריאה פועלים בצורה הטובה ביותר כאשר הם מחוברים לדפוסי התנהגות.לדוגמה, AFPLT:27 יכול להחזיר אובייקט (FLT:28), שהוא גם צופה של נושא תצורה - ברגע שהחיישנים נוצרים, הוא מנוי לעדכונים תצורה.הרכב זה מקטין את לוח הרתיחה וממשיך ליצור לוגיקה מחוסמת מהתנהגות מריצה.

מסמך יצירת אובייקטים Lifecycles

במערכת ניטור גדולה, יצירת אובייקטים יכולה להפוך לציור עץ או דיאגרמה המציגה דפוס חל על איזה סוג. לתעד את הערבויות הבטוחות של כל מפעל. השתמש במושגים או שמות (למשל, FLT:29, FLT:30) כדי לרמוז על התבנית בשימוש.

מדד ביצועים ופרופ'

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

מסקנה

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

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

אימוץ דפוסים אלה הוא השקעה בתחזוקה כי משלם כמו מערכת ניטור שלך גדל מהוכחה של תפיסה לפלטפורמה קריטית של המשימה טיפול אלפי נקודות נתונים לשנייה.