מבוא

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

הבנת ה-Constraints of Edge מכשירים

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

  • (FLT:0)Compute and Memory:FLT:1מובנים רבים יש כוח CPU מוגבל ו- RAM.מיקרו-שירות חייב להיות יעיל מאוד, באמצעות משאבים מינימליים לכל מקרה. Bloat ממסגרות כבדות או תלות מיותרת יכול במהירות לפסול את היכולת.
  • (FLT:0) צריכת חשמל: ⁇ FLT:1); מכשירים המופעלים על ידי סוללות לא יכולים לקיים עומסי עיבוד גבוהים קבועים. אדריכלות המונעת על ידי אירועים המאפשרים למדינות השחתות ופעולות של התעוררות על-אף כדי לשמר אנרגיה.
  • (FLT:0Network רוחב פס ואמינות: 1FLT) מכשירים לעתים קרובות לתקשר על פני נמוך פסד, עקשנות גבוהה, או חיבורים לסירוגין.פרוטוקולים חייבים להיות קלים וקלים לשיבושים ברשת.
  • (FLT:0)Storage:FLT:1 אחסון מקומי מוגבל ועשוי להשתמש בזיכרון פלאש עם מחזורי כתיבה סופיים.מיקרו-שירותים צריך להימנע מכתיבה של יומנים מיותרים או נתונים ממשלתיים לדיסק.
  • (FLT:0) סודיות: 1 , 1 יכולות הצפנה פיזיות והגנתיות דורשות בחירה זהירה של מנגנוני אימות והצפנה.

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

המקרה לאדריכלות Event-Driven

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

  • (FLT:0)Low latency:FLT:103) אירועים מעובדים ככל שהם מגיעים, ביטול ההמתנה לבדיקה תקופתית או מחזורי בקשה וסנכרון.
  • יעילות:0 (Energyיעילות): מכשירים 1FLT יכולים להישאר במצבי שינה נמוכים ותעורר רק כאשר אירוע מגיע, צמצום כוח.
  • (FLT:0) עמידות לכישלונות ברשת: FIRLT:1 אירועים ניתן להזיז באופן מקומי או מבוהל עד שקישוריות משוחזרת, למנוע אובדן הודעה.
  • (ב) ⁇ :0 ⁇ :0) להוסיף microservices חדשים להגיב לסוגי אירועים קיימים לא דורש שינויים ביצרנים.
  • (ב) פשטות קוד: 1 (FLT:1 ), כל מיקרו-שירות מתמקד באירוע אחד טיפול בלוגיקה, מה שהופך את בסיס הקוד לקל יותר לשמור ולבדיקה.

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

עקרונות עיצוב עבור Light Weight Microservices

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

מינימום משאבים

בחרו שפות מגובשות (Rust, C, Go) או סטיות מפוכחות מאוד (MicroPython, Node.js for Extended Devices) נמנעים ממסגרות כבדות. השתמש בסמלים סטטיים ופסים debug. Memory and CPU השימוש ברציפות. כל מיקרו-שירות צריך לעשות דבר אחד טוב יותר ולא יותר.

חוסר סובלנות

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

« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « פודקאסטים ורדלינג « « « « « « « « « « « « « « « « « « « « פודקאסטים « « « « « « « « פודינגפורפול « « פודינגפורפול פודינגפולטיביים ורדלינג פודינגפוללינג פודלינג פודינגפול פוד

מיקרו-שירותים לא צריך להיות תלוי ישירות ביישום של זה. השתמש ב-Schemas אירוע מוגדר היטב (למשל, Protobuf, FlatBuffers, או קומפקטי JSON) וסידורי אירוע תוכנה-מודעהת. להימנע ממאגרי נתונים משותפים; במקום זאת, לתת לכל שירות משלו נתונים וחשיפתו באמצעות אירועים.

תקשורת סינכרונית

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

טעות וגרייסנס

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

פרוטוקולי תקשורת: בחירת ה- Fit

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

MQTT (Mesage Queuing Telemetry Transport)

(MQTT הוא פרוטוקול פרסום / ספירה קל המיועד למכשירים מוגבלים.It משתמשת בפורמט חפיסת בינארי, מינימלי מעל (2-byte Header מינימום), ותומכת בשלושה רמות איכות של שירותים (QoS) למשלוח אמין.מ"מ מ"קTT יכול לרוץ על חומרה קטנה (למשל, Mosquitto על גבי Raspberry Pi).זה אידיאלי עבור אירוע הפצה רב-to-to-to-to-to-to-man, חיישנים, חיישנים, נתונים ספציפיים, ו-FLTQ.

פרוטוקול יישום (Consated Application Protocol)

CoAP הוא פרוטוקול REST-like שפועל על UDP, מה שהופך אותו מאוד קל משקל מתאים למכשירים בעלי כוח נמוך.הוא תומך ב- Multicast, תצפית (pub/sub), וגילוי משאבים. CoAP משמש לעתים קרובות ברשתות חיישן IoT שבו מכשירים ישנים רוב הזמן.

gRPC ו-HTTP/2

עבור מכשירים עם משאבים בינוניים (למשל, שערי), gRPC מציע סידוריזציה בינארית יעילה (Protobuf) וזרמה דו-כי-כי-פי, אשר שימושי עבור זרמי אירועים בזמן אמת. HTTP/2 מספק חיבורים מרובים ודוח השרתים.עם זאת, אלה הם כבדים יותר מ MQTT / CoAP ועלולים לרוץ על מיקרו-בקרים מאוד לא מוגבל.

הודעות מקומיות ואוטובוסים

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

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

יישום תקשורת Event-Driven

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

פרסום/Subscribe

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

אירוע Sourcing

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

שליטה ובקרה

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

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

אבטחה ב- Edge

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

  • (FLT:0) קידוד:0 (Encryption:FLT:1) השתמש ב-TLS לפרוטוקולים מבוססי TCP ו- DTLS עבור UDP. for מאוד מבוזרים, שקול את המפתחות לפני שיתוף (PSK) או ספריות קריפטוגרפיים קלות משקל כמו Mbed TLS או WolfSSL. להימנע מגלגל את ההצפנה שלך.
  • (FLT:0) Authentication and Authorization: MQTTEL 1 , כל מיקרו-שירות או מכשיר צריך להיות זהות ייחודית (למשל, X.509 תעודה) תומך בתעודות הלקוח ושם משתמש/Word. השתמש ברשימות בקרת גישה מוטבעות היטב (ACLs) עבור נושאים.
  • (FLT:0) סודיות שלחול ושורש חומרה של אמון: ההרחבה 1 (חנות מפתחות פרטיים במודולים של אבטחה חומרה (HSMs) או מודולי פלטפורמה מאובטחים (TPMs) אם זמין.
  • (ב) ,0) , טוהר מידע: ⁇ (ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0) הגבלת הגבלת הודעה ואימות הודעה: קיד 1 (FLT:1) למנוע התקפות הכחשה על ידי הגבלת שיעורי האירוע ואימות גודלי שכר ו-Schemas ברמת הברוקר.

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

אסטרטגיות של הפצה: Containerization and Orchestration

Containers מספקים בידוד, התחדשות ועדכונים קלים עבור microservices. עבור מכשירים קצה, לוחות קלות מיכל קל משקל הם חיוניים:

  • (FLT:0)DockerveFLT:1) עובד היטב על שערות קצה מבוסס לינוקס עם משאבים בשפע (למשל, ARM Cortex-A מכשירים).
  • (ב) ,0) ,BalenaFLT:1 מציע פלטפורמה לניהול צי שנבנה על Docker, עם עדכונים אוויריים, עדכוני דלתא ו ניטור המכשיר.זה מיועד למכשירים קצה:2 למד יותר בלנדר 3.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) ,4 ,4 ,2 (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

(הופנה מהדף Lightweight Kubernetes Distributions כגון FLT:0K3sssveFLT 1 או FLT:2MicroK8ssFLT 3) יכול לרוץ על שערים קצה, אבל הם עדיין משאבים-intensive עבור מתקנים פשוטים יותר, להשתמש במנהל שירות כמו FLT:4PalratedF:5 כדי להתחיל עם מהדורות של Azure-Agate, כדי לספק מהדורות של ניהול ענן-Agate (Agratin).

אסטרטגיות עדכון

Over-the-air (טא) עדכונים הם קריטיים. השתמש בעדכונים אטומיים (למשל, A/B מחיצות) כדי לאפשר לגלגל על רשם המכילות עם תגים לפשט את ה-Switch.עבור מערכות מונחות אירועים, ניתן להפעיל עדכון על ידי אירוע עצמו, ולהבטיח מינימום ירידה.

מעקב ושקיפות ל- Edge Microservices

ניטור מכשירים מוגבלים משאבים דורש גישה קלה:

  • (FLT:0)Metrics:FLT:1 , Exse נגד אירועים מעובדים, שגיאות, זיכרון ו- CPU באמצעות נקודת קצה HTTP מקומית (למשל, פורמט Prometheus) , מדדי אגגורט בשער וקדימה למערכת ניטור מרכזית (למשל, Grafana Cloud) נמנעים מאוסף כבד על המכשיר עצמו.
  • (FLT:0) אופטימיזציה: ⁇ FLT:1 שימוש מובנה, יומני מינימלי לכתוב גרף טבעת ב- RAM ורק שגיאות קריטיות מתמשך. ⁇ Forward באמצעות ערוץ אירוע נפרד (למשל, נושא MQTT) למגרש ענן.
  • (FLT:0) בדיקות בריאות: המחשה: 1:1 כל מיקרו-שירות צריך לחשוף חיות / ייעוד ריקנות פשוטה.תהליך מפקח יכול לחדש שירותים לא בריאים.
  • (FLT:0)Distributed tracing: ההרחבה 1 (עבור זרימת אירועים מורכבים, להפיץ תעודות מעקב מזהה אצל ראשי אירועים. השתמש בספריית מעקב קלה (למשל, OpenTelemetry עם דגימה) כדי למזער מעל פני השטח.

עקוב אחר מתווך ההודעות גם: עומק תור, הודעות אבודות, ספירת חיבור.קבע התראות עבור אנומליות.

מחקרים מעשיים

ייצור חכם

מפעל פורץ שערות ליד קווי הייצור.כל שער פועל microservices מונע אירוע: אחד ingests רטט נתונים מחיישנים באמצעות MQTT, מעבד אחר את הנתונים כדי לזהות אנומליות, ושלישי מפרסם התראות למקלט.העיצוב מונחה אירוע מאפשר שירות זיהוי אנומלי להיות מעודכן ללא הפסקת נתונים במיכלי משקל (Alpine +) פועל על פי Python על שער אחד מבוסס GB עם שער אחד.

רכב אוטונומי

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

רחוב חכם

בקרי אור רחוב משתמשים ב-CoAP עבור רשתות חיישן מקומיות ו- MQTT כדי לאסוף נתונים בשער. Microservices על שער להתמודד עם לוחות זמנים דימומים, זיהוי תקלות ודיווח אנרגיה.המערכות לרוץ על מכשירים ESP32 מגובה סוללות.אירועים גורמים מחזורי שינה / וויקה, המשתרעים על חיי סוללה לכמה שנים.

מסקנה

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