control-systems-and-automation
בניית ארכיטקטורה מבוססת אירועים עם Azure Event Hub ו- Functions
Table of Contents
אדריכלות מונחה אירועים (EDA) התפתחה כתבנית יסוד לבניית מערכות מודרניות, רספוטיביות, ופותחותפות באופן חופשי. Azure מספקת חבילה חזקה של שירותים ליישום EDA, עם Azure Event Hub המשמש כשכבת צבירת אירוע בדחיסה ו- Azure IoT פונקציות המספקות מענה ללא שרתי למקרים אלה במשרה אמיתית.
אדריכלות: Event-Driven Architecture
בליבה, ארכיטקטורה מונחת אירוע בנויה סביב הייצור, זיהוי, צריכת ותגובה לאירועים.אירוע הוא שינוי משמעותי במדינה - למשל, קריאה חיישן, עסקה בתשלום, או עדכון פרופיל משתמש. ב- EDA, רכיבים מתקשרים באמצעות אירועים ולא שיחות סינכרוניות ישירות, אשר מפחיתה הפיכה ומאפשרת סקאלה עצמאית של יצרנים וצרכנים.
מושגים מרכזיים
- מפיק:0 (FLT:0) מפיק: 1 כל רכיב הנפלט אירועים לאוטובוס האירוע.דוגמאות כוללות מכשירי IoT, מיקרו-שירותים, או מערכות מורשת הנפלטות שינויים בלכידת נתונים (CDC) אירועים.
- (FLT:0) אוטובוס / זרם:FLT:1 צינור עמיד, מדרגי כי ingests וקיים אירועים. Azure Event Hub מתאים את התפקיד הזה באופן מושלם, מציע זרמי אירועים מופץ, הורה.
- (FLT:0) אפילו צרכני: רכיב 1 (FLT) אשר נרשם לאירועים ולמעבד אותם. Azure Functions יכול לפעול כצרכן, מופעל באופן אוטומטי כאשר אירועים חדשים מגיעים.
- (FLT:0) אפילו Sourcing ו- CQRS:03:S:FLT) 1 יישוםים רבים משלבים את EDA עם מיקור אירועים (הציג את האירוע כמקור האמת) והפרדה באחריות לשאילתת אחריות (CQRS) כדי להפריד בין לקרוא ולכתוב מודלים.
הפירוק שהוצג על ידי EDA מאפשר לצוותים לפתח, לפרוס ולדרג שירותים באופן עצמאי.זה גם מאפשר ניתוח בזמן אמת, שבילי ביקורת, ואת היכולת לשחזר אירועים היסטוריים עבור debugging או עיבוד מחדש.
Azure Event Hub: The Ingestion Layer
Azure Event Hub הוא פלטפורמה מתקדמת של נתונים בזמן אמת שיכולה להדהים מיליוני אירועים בשנייה.אדריכלות שלה מיועדת לעומס גבוה, לעוצמה נמוכה ולעמידות. Event Hub לוכדת אירועים למחיצות, כל אחד מהם הוא רצף מסודר של אירועים.צרכנים יכולים לקרוא ממחסום כדי לחדש את העיבוד.
תכונות עיקריות Event Hub
- (FLT:0 חלקיות: 1) אירועים מחולקים על פני מחיצות לעיבוד מקביל.כל חלוקה היא עצמאית וניתן לצרוך אותה במקרה נפרד של הפונקציה Azure.
- (FLT:0)Capture:IRFLT:1 , באופן אוטומטי נמשך אירוע זרמי Azure Blob Storage או Azure Data Lake Storage for Archival and אצווה analytics.
- (FLT:0Geo-disaster Recovery:FIRLT:1) זוג אופטימלי של מקומות שמות באזורים מבטיחים זמינות גבוהה.
- (FLT:0)AMQP, HTTPS ופרוטוקול קפקא:03:03:1 תומך בפרוטוקולים מרובים, ומאפשר ליצרנים להשתמש בלקוחות אפאצ'י קפקא לשלוח אירועים ישירות.
- (FLT:0 Throughput Units (TUs) או יחידות עיבוד (PUs): TERRELT:1 Determine ingress and egressקיבולת. for the Serverless tier (Basic and Standard), TUs משמשים; עבור Premium ו- ייעודי, PUs לספק ביצועים צפויים יותר.
המונחים:
- (FLT:0) למקם את שם התמחור של Event Hubs Namespace:BuildFLT:1 ב- Azure Portal, ליצור שם חדש של Event Hubs. בחר את שכבת המחירים (Standard מומלץ עבור רוב עומסי העבודה של ההפקה).
- (FLT:0) לתקן אירוע ה- Hub Instance:cioFLT:1 בתוך שם החלל, ליצור מרכז אירוע. ציין את מספר החלוקה - כלל משותף של אצבע הוא 432 מחיצות עבור רוב המקרים השימוש.חלוקות לא ניתן לשנות מאוחר יותר מבלי לתקן את המרכז, כך לבחור בהתבסס על מצופה באמצעות חישוב.
- (FLT:0) קביעת מדיניות גישה משותפת: FLT:1eur יוצר מדיניות עבור יצרנים (למשל, "Send Only") ואחד לצרכנים (למשל, "שמע רק") כדי לעקוב אחר העיקרון של פריבילגיה מינימלית.
- (FLT:0) לכידת (Optional): ההרחבה 1 (אם אתה צריך לאחסן את כל האירועים הגלומה עבור שימור לטווח ארוך, לאפשר לכידת ונקודת אחסון של Azure Blob או אחסון נתונים.
לדוגמה, בפרשת יד:0 מהדורות של [[1924]]
Azure Functions: The Compute Trigger
פונקציות Azure מספקות סביבה מותאמת השרת שבו אתה כותב קוד שמגיב לאירועים.הגורם ל- Event Hub מאפשר להפעלה אוטומטית כאשר אירועים חדשים פורסמו למרכז אירועים.פונקציות יכולות להקדים באופן אוטומטי, עם כל פונקציה לדוגמה עיבוד אירועים מחלוקה אחת או יותר.
התנהגות טריגר
- (FLT:0) צ'ק פוינטינג: 1FLT: הפונקציה Runtime מנהלת את המחסומים כדי לעקוב אחר האירוע המעובד בהצלחה האחרונה להתפלגות.זה מבטיח שאם הפונקציה תיפתח מחדש, היא חוזרת מהעמדה הנכונה.
- עיבוד:0 (בקיצור:0) עיבוד: FLT:1 כברירת מחדל, הגורם מספק מספר אירועים.You יכול לשלוט בגודל אצווה וספירת טרום-אפילקט לביצועים.
- (FLT:0)Parallelism:FLT:1, מספר מקרי הפונקציה שווה את מספר המחיצות עם אירועים לא מעובדים.כדי להגדיל את המקבילות, להגדיל את ספירת החלוקה (עם מגבלות) עבור הגבוה ביותר באמצעות חישוב, להשתמש ב- Premium או תוכנית אירוח ייעודית במקום תוכנית הנחתית, במיוחד אם זמן העיבוד של הפונקציה הוא יותר מאשר כמה שניות.
יצירת פונקציית Azure עם Event Hub Trigger
- צור אפליקציה פונקציונלית ב- Azure Portal או באמצעות Azure CLI. בחר את ערימה הזמן (למשל, .NET, Node.js, Python).
- הוסף אירוע ה- Hub להגשת מועמדות, החתימה של הפונקציה כוללת פרמטר עבור נתוני האירוע (למשל: 0 או FLT:1).
- הגדר את הגדרות מחרוזת חיבור Event Hub (מהגדרות היישום) ואת שם מרכז האירוע.
- לכתוב לוגיקה בעיבוד בתוך הפונקציה.משימות נפוצות: deserialize JSON, לעדכן מסד נתונים, התקשר ל- API, או לשלוח את האירוע לשירות אחר כמו SignalR עבור לוחות נתונים בזמן אמת.
- תפוקה של קונדס מחייבת במידת הצורך - לדוגמה, תפוקה של קוסמוס DB המחייבת לאחסן נתונים מעובדים.
ה-FLT:0Zonee Functions Event Hub מעורר תיעוד של ההרחבה 1 (בשיתוף פעולה) מספק דגימות קוד מפורטות לכל שפה.
עיצוב אדריכלות סוף-סוף
(ב) אנו משלבים את החלקים: (הזרם הטיפוסי) הוא: FLT:0;0) מתכנתים (ב) 1 (FLT:2,2, אפילוt HubárFLT 3: 4; פונקציונליות אזור:5;5 (FLT 6Downstream ServicesFLT 7), בואו נלך דרך מודל ייצור: מערכת ניהול צי מקבל GPS מאלפי כלי רכב.
שלב 1: Define the Event Schema
עקביות היא חיונית. השתמש במרשם סכימה (כמו Azure Schema Registry in Event Hubs) או פשוט לאכוף את schema JSON. Aדוגמא אירוע תשלום:
{
"vehicleId": "VH-12345",
"latitude": 37.7749,
"longitude": -122.4194,
"speed": 65.2,
"timestamp": "2025-03-21T10:30:00Z"
}
השימוש באברו או Protobuf יכול להפחית את גודל המטען ולספק יכולות schema, אבל JSON נשאר הפשוט ביותר ל debug.
שלב 2: מפיקי משנה
יצרנים יכולים להיות מכשירי IoT באמצעות Azure IoT Hub או יישומים מותאמים אישית באמצעות Event Hubs SDK. עבור תרחישים בעלי שם גבוה, אירועים אצווה יחד (למשל, לשלוח 100 אירועים לכל בקשה) כדי למקסם את השימוש.
שלב 3: הגדר את מפתח החלוקה
אירועים של Event Hub מאגדים על בסיס מפתח חלוקה, אם אתה צריך עיבוד מסודר לכל רכב, השתמש ב-FLT:3 כמפתח החלוקה.זה מבטיח את כל האירועים מאותה ארץ רכב באותה חלוקה מעובדת באופן שווה על ידי צרכן יחיד.
שלב 4: בניית פונקציית Azure
הפונקציה מקבלת אצילות של אירועים, תהליכים בכל סדר, ולאחר מכן יכול לכתוב את המיקום האחרון למטמון (למשל, Azure Redis Cache) עבור שאילתות בזמן אמת.זה יכול גם אירועי גאופיות - כאשר רכב נכנס לאזור מסוים, הפונקציה יכולה לשלוח התראה באמצעות Azure Logic Apps או Twilio.
שלב 5: כישלונות ומכשולים
אם העיבוד נכשל עבור אצווה, אירוע ה- Hub ינסה על פי מדיניות ההחזר של הפונקציה (default הוא החזר כספי עד 5 פעמים) עבור אירועי רעל (למשל, JSON ממותג), צמיד אותם ל תור מת (אזור אחסון קואוו או רכז אירוע ייעודי). הפונקציה צריכה לתפוס חריגים ספציפיים ולהעביר אירועים בעייתיים של עיבוד רגיל.
שלב 6: מעקב ומדפן
- השתמש ב- Azure Monitor כדי לעקוב אחר מדדי Event Hub: הודעות נכנסות, בקשות מחוסמות, גודל backlog (הבדל בין ההתחלה האחרונה לבין המחסומים האחרונים).
- עבור דרוג פונקציות Azure, תוכנית הצריכה תהיה בקנה מידה אוטומטי, אבל ייתכן שיש עיכובים קלים.תוכנית Premium מציעה למשל לפני המלחמה ושילוב רשת וירטואלית.
- הגדר ערנות לגיבוי גבוה, אשר מצביע על הפונקציה אינה יכולה לעמוד - לשקול הגדלת מחיצות או שדרוג תוכנית האירוח.
שיטות מתקדמות ועיסוקים טובים
אירוע Replay and Catch-up
יתרון משמעותי אחד של Event Hub הוא כי אירועים נשמרים לתקופה מוגדרת (עד 90 ימים על תקן) זה מאפשר לצרכנים לשחזר אירועים מנקודת מבט מסוימת בזמן - שימושי עבור backfiling מסד נתונים חדש או עיבוד מחדש לאחר תיקון באג. כדי לאפשר הפעלה מחדש, אתה יכול ליצור קבוצת צרכנים חדשה ולהתחיל את הפונקציה מהתאמה אישית.
קבוצות צרכנים מרובות
Event Hub תומך עד 20 קבוצות צרכנים למרכז אירועים. השתמש בקבוצות צרכנים נפרדות עבור צינורות עיבוד שונים: אחד עבור ניתוח בזמן אמת, אחר עבור ארכיביאל, ושלישי עבור מודלים של למידת מכונות אימון.כל קבוצה צרכנית מקבל את החנות שלה, המאפשר התקדמות עצמאית.
עיבוד בלתי אפשרי
מאחר שאירועים עשויים להיות מועברים לפחות פעם אחת, הפונקציה צריכה להיות מונעת.לדוגמה, בעת הוספת מסד נתונים, להשתמש בפעולות upsert במקום להוסיף.או לבדוק אם מזהה אירוע כבר קיים בחנות deduplication (למשל, Redis עם TTL).זה מונע עיבוד כפול מגורם לעקביות נתונים.
שילוב עם Azure Function Output Bindings
במקום לכתוב קוד ידני לשלוח נתונים במקום אחר, השתמש בקידודים.השולחן הבא מסכם את החייבות הנפוצות לתרחישים המונעים על ידי אירועים:
- (ב) ⁇ :0) ⁇ ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- שירות השידור:0 (SignalR Service:FLT:1 Broadcast Events מעובדת אירועים ללקוחות מחוברים (למשל, לוח זמנים אמיתי).
- (ב) ,0) ,Blob Storage: FLT:1 כתוב פלטות אצווה מעת לעת (ללא כתיבה ל-event כדי להפחית את העלויות).
- (ב) ,0) ,Ut Hubs (Output): שלח אירועים ל-II Event Hub לשרשרת אירוע אחר.
שיקולים ביטחוניים
- השתמש זהות מנוהלת עבור Azure function כדי להתחבר לאירוע Hub במקום אחסון מיתרי חיבור בטקסט פשוט.
- ניתן לפיירוול ושילוב רשת וירטואלי עבור אזור שם Event Hub כדי להגביל את הגישה לרשת.
- השתמש ב- Azure Key Vault כדי לאחסן סודות כגון מחרוזת חיבור של Event Hub ומפתחי גישה.
- אירועים מוצפנים במנוחה ובמעבר (אפילוט הובר משתמש ב-TLS כברירת מחדל).
שימוש במקרים ו- Real-World Scenarios
עיבוד IoT
כפי שתואר קודם לכן, תרחיש ניהול צי הוא התאמה קלאסית. Azure IoT Hub יכול להזיז הודעות המכשיר ביותר ולסלול אותם ל Event Hub לעיבוד במורד הזרם. Azure Functions יכול אז לחדד את המהירות הממוצעת לכל מסלול, לזהות אנומליות, או לעורר התראות תחזוקה.
לחץ על Analytics
אתרי מסחר אלקטרוני מייצרים נתונים מסיביים של Clickstream. Event Hub יכול לאסוף תצוגות דף, פעולות עגלת קניות וחיפושים.פונקציות יכולות להעשיר את האירועים עם נתוני פרופיל משתמשים, לעדכן את הדלפקות הפגישה, ולדחוף את Azure Data Explorer עבור לוחות נתונים בזמן אמת קרוב.
שינוי לכידת נתונים (CDC)
כאשר אתה צריך לסנכרן נתונים ממסד נתונים יחסי לאינדקס חיפוש או מטמון, CDC באמצעות Event Hub היא גישה נפוצה.לדוגמה, באמצעות Debezium (Kafka Connect) כדי לייעל שינויים מסד נתונים לתוך Event Hub, אז פונקציות Azure הופכת וכותבת ל-Alivis.תבנית זו שומרת את מדד החיפוש תמיד מעודכן ללא לוגיקה מתאימה.
עיבוד פיננסי
במימון, אדריכלות מונחה אירוע מאפשרת זיהוי הונאה, בזמן אמת סיכון ניקוד, וסחר בהתנחלות.הההשפל של Event Hub ועומס גבוה להפוך אותו מתאים לטיפול באלפי עסקאות לשנייה. Azure Functions יכול להפעיל מודלים של זיהוי הונאה, עסקאות חשודות דגל ולשלוח התראות תוך שמירה על שבילי ביקורת.
אופטימיזציה ובדיקה
בעוד השרתים ללא תשלום עלויות של idle, אתה עדיין צריך לפקח על השימוש.נהגי עלות המפתח הם:
- (FLT:0) אפילו ה- Hub Throughput Units:FIRLT:1) כל TU מאפשר 1 MB/s ingress ו 2 MB/s egress (או 1000 אירועים לשנייה) עבור עומסי עבודה בלתי צפויים, מאפשר לנפח אוטומטי.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- [01:0 Zonee Functiontion Time: FLT: 1] תוכנית הצריכה תואמת את השני של ביצוע.להבטיח שהתפקוד שלך יעיל - להימנע מחסימת שיחות ולהשתמש ב- ASnc I/O.
- (FLT:0) הפעלת לכידת ונקודות תצפית: מעלה של 1 Blob אחסון היא מינימלית אך נחשבת למדיניות שימור.
הגדר התראות תקציב ב- Azure Cost Management. השתמש ב-Insights כדי לעקוב אחר זמני ביצוע ושיחות תלותיות. [The FLT:0 Zonee Event-oriented architecture Patterns: FLT:1] דף כולל הדרכה על ניטור.
השוואה עם טכנולוגיות חלופיות
- (FLT:0Zonee Service Buseur: Better for Command-oriented workloads הדורש הסדר קפדני, עיבוד עסקאות, ו- Dead-lettering. Event Hub הוא אופטימיזציה עבור הזרמת אירוע גבוה, לא עבור הודעות נקודה לנקודה.
- (FLT:0)Apache קפקא על HDInsight או Confluent:FLT:1 יותר שליטה על תצורה, אך דורש תפעולי Overhead. Event Hub מספק תאימות פרוטוקול קפקא עם שירות מנוהל.
- (FLT:0) אפילו גריד'ר: 1FLT מתאים לתכנות תגובתית ולאירועי פענוח בין שירותי Azure.It אינו מיועד לזרמת חתומה גבוהה - Event Hub מטפל במיליוני אירועים בשנייה.
- (FLT:0Zonee Stream Analyticsmia:FLT:1 A המנוהל על ידי SQL-like עיבוד מנוע עבור ניתוח של זמן-סדרה.זה יכול לרוץ על Top of Event Hub, אבל עבור לוגיקה עסקית מורכבת, פונקציות Azure מציע גמישות רבה יותר.
תוצאות חיפוש
- זמן השמירה על אירועים (default 1 Day, מקסימום 7 ימים בסטנדרט).
- הגדר תובנות יישום עבור Azure Function כדי להתאים את ספירת האירוע המעובד ואת שגיאות.
- ניתן ל- Azure Monitor ל- Event Hub throtling (בדיקה עבור מדד ה-FLT:4).
- השתמש במדיניות Azure כדי לאכוף את גרסת ה- TLS ואת סוג האימות.
- תרחישי כשל מבחן: לעצור את הפונקציה, לאפשר לאירועים לצבור, ולאחר מכן מחדש כדי לאמת התאוששות במחסום.
- לבצע בדיקות עומס עם מפיק מדמה כדי להבטיח את האדריכלות להתמודד עם נפח שיא.
מסקנה
בניית ארכיטקטורה מונחה אירוע עם Azure Event Hub ו- Azure Functions מציידת ארגונים עם מערכת סטנדרטית, יעילה ובעלת ערך לעיבוד נתונים בזמן אמת.שילוב של הזרמת אירועים עמידים ו- Serverless compute מאפשר למפתחים להתמקד בלוגיקה עסקית בעוד Azure מטפלת באימוץ, דרוג וניהול נתונים מודרני.על ידי ביצוע עקרונות התכנון ושיטות הטובות ביותר כאן - בחירת ספירות מתאימות, יישום ספירות חסימת ענן, מעקב אחר תבניות הפעלה מתקדמות של שירותי ענן, תוכל להמשיך עיבוד ענן, כגון תבניות מודרניות של שירותי עיבוד ענן.