Table of Contents
ידע על Event Driven Architecture
Event Driven Architecture (EDA) הוא פרדיגמת עיצוב תוכנה מודרנית שבה רכיבי מערכת מתקשרים על ידי ייצור, גילוי ואכילה אירועים.אירוע מייצג שינוי משמעותי במדינה - כגון רישום משתמשים, הזמנה שהוצבה, או חיישן קורא מעבר סף.בניגוד לדפוסי בקשה מסורתיים, EDA decouples אירועים יצרנים מצרכנים, המאפשר תקשורת סינכרונית כי בקנה מידה אופקי ומגיבים בפלטפורמות ענן חזקות יותר, כמו Azure-Times ניהולית.
היתרונות המרכזיים של EDA כוללים הפיכה חופשית, שיפור סובלנות אשמה, ואת היכולת להגיב ברגעים עסקיים באופן מיידי. על ידי אימוץ גישה המונעת אירוע, ארגונים יכולים לבנות מערכות כי הם יותר גמישים, קל יותר להתפתח, וכדאי יותר ליישר עם הטבע הבלתי צפוי של עומסי עבודה מודרניים. מאמר זה חוקר כיצד למנף ו- Azure שירותים לעיצוב ולפרוס יישומים מונחי ייצור, כיסוי, שיטות שירות, יישום, שיטות בחירה תפעוליות הטובות ביותר.
יישום EDA על AWS
AWS מציעה חבילה מקיפה של שירותים מונעים אירועים המשלבים בצורה חלקה אחד עם השני ועם מערכות חיצוניות.אבני הבניין העיקריות הן אמזון EventBridge, AWS Lambda, Amazon SNS, אמזון SQS. הבנה כיצד שירותים אלה עובדים יחד חיונית לבניית ארכיטקטורות מדרגת, מחוספסת.
אמזון EventBridge: The Central Event Bus
אמזון EventBridge פועלת כמערכת העצבים של היישום שלך מונע אירועים מהיישומים שלך, ספקי SaaS צד שלישי ושירותי AWS אחרים, ואז מעבור אותם למטרות כגון Lambda פונקציות, תורים SQS, נושאים SNS, או אפילו נקודות קצה של שער API. , חוג תומך בשני אירועים מותאמים אישית (באמצעות אירוע מוגדר schema) ו-schema, אשר באופן אוטומטי גילויים יכולים להגדיר את המבנים של פילטרים הבאים.
דפוס נפוץ הוא להשתמש EventBridge כדי לרכז אירועים עסקיים ממספר מיקרו-שירותים.לדוגמה, פלטפורמת מסחר אלקטרוני עשויה פולטת:0 אירועים לאירועי רידג', אשר לאחר מכן מעורר עדכונים מלאי, הודעות משלוח צינורות ניתוח.זה decoupling מאפשר לכל תת-מערכת להתפתח באופן עצמאי ללא השפעה על אחרים.
AWS Lambda: Serverless Event Handlers
AWS Lambda היא המטרה המועדפת של זרימת עבודה מונעת אירוע.זה מבצע קוד בתגובה לאירועים מאירועי EventBridge, SNS, SQS, או מקורות רבים אחרים. Lambda פונקציות הן ללא תנאי ובאופן אוטומטי מאפס לאלפים של הוצאות להורג במקביל המבוססות על נפח האירוע.זה הופך אותם אידיאליים לעיבוד אירועים, כגון העלאת קבצים, שינויים מסד נתונים, או ניתוח בזמן אמת.
כאשר משלבים את Lambda עם EventBridge, אתה יכול להשתמש בטרנספורמציות קלט כדי לעצב את המטען האירוע לפני שהוא מגיע לתפקוד, צמצום ה-Verplate. עבור חוסן, להגדיר את Lambda עם תור מת (DLQ) כדי ללכוד אירועים נכשלים אחרי כל ניסיונות retry.בנוסף, יעדי Lambda יכולים לנתב בהצלחה או נכשלו בייעודים לאירוע עוקב אחר, המאפשר אירוע מונע.
אמזון SNS ו-SQS: Pub/Sub ו- Queueing
בעוד EventBridge מספק קבוצה עשירה יותר של יכולות קידוד וסינון, אמזון SNS (שירות זיהוי פשוט) ואמזון SQS (Simple Queue Service) נשאר בסיס עבור דפוסים מונעים אירועים רבים.SNS מיישמת מודל פרסום: מו"ל שולח הודעה לנושא ומעריצי הנושא זה החוצה לכל נקודות קצה המנוי (למשל, תורים של נספח, נספחים אמינים, תכונות של Microsoft).
שילוב SNS עם SQS הוא גישה קלאסית לרכיבים של דיסקופיל תוך הבטחת סובלנות לקויה.לדוגמה, שירות אינטרנט יכול לפרסם לנושא SNS, אשר לאחר מכן מספק הודעות למגוון רחב של תורים SQS עבור צרכנים שונים (למשל, שירות הודעות, שירות ביקורת, שירות ביקורתי). כל תור מספק buffer כך כי הצרכנים יכולים לעבד הודעות בקצב שלהם.אם הצרכן נכשל, נשאר בתור מוצלח עד עיבוד בסופו של דבר.
אדריכלות ב-AWS
נחשב מערכת זיהוי הונאה בזמן אמת.עסקאות לקוח מוקלטות בטבלה אמזון דינמודי. A DynamoDB Streams אירוע גורם לתפקוד Lambda המפרסמת אירוע 1FLT 1 לאירועי EventBridge. EventBridge מסנן עסקאות בעלות ערך גבוה ומסלול אותם לתפקוד הונאה ייעודי של Lambda, כמו גם תור SQS לניתוח הונאה.
יישום EDA ב- Azure
Azure מספקת מערך מקביל של שירותים עבור ארכיטקטורות מונעות אירועים: Azure Event Grid, Azure Service Bus ו- Azure Functions.עקרונות הבסיס הם אותו הדבר, אבל שמות המוסכמות והתבניות של Azure שונים במקצת.בחירה בין Azure ל-AWS מגיעה לעתים קרובות להשקעות הענן הקיימות ולדרישות הציות שלך.
Azure Event Grid: The Serverless Event Router
Azure Event Grid הוא שירות אירוע מנוהל במלואו שיושב בין יצרני אירועים לבין צרכנים.זה מקבל אירועים מ- Azure שירותים (למשל, Blob Storage, Resource Groups) ויישומים מותאמים אישית, ולאחר מכן מספק אותם למנויים כגון Azure Functions, Webhooks, תורי אוטובוסים שירות, או לוגיקה Apps. Event Grid תומך באירוע המסנן על סוגים, prefixes, תנאים מתקדמים ו-Regenting זה גם מציע אמינות (resarezza).
תכונה אחת של Event Grid היא שילוב מובנה עם Azure Health Data Services ו- Azure Maps, המאפשרת דפוסי אירועים ספציפיים דומיין. עבור תרחישים היברידיים, Event Grid יכול להתחבר לאירועים טרום-מדומים באמצעות Azure Arc.
Azure Functions: Event-Driven Compute
פונקציות Azure הן מציעות אנלוגיות ל-AWS Lambda. זה יכול להיות מופעל על ידי אירועים Event Grid, הודעות שירות אוטובוסים, שינויי קוסמוס DB, בקשות HTTP, או גורמים מותאמים אישית. Azure פונקציות תומך שפות מרובות (C#, JavaScript, Python, PowerPoint) ומספק מחייבות כי לפשט פעולות קלט / קידוד ללא קוד חיבור מפורש.
עבור תרחישים מונעים אירוע, השתמש באירוע גרייד מחייב כדי לדרג באופן אוטומטי את הפונקציות בהתבסס על מספר האירועים. עבור תרחישים עתירי ביצועים גבוהים, תוכנית פרימיום מספקת סטארט-אפ מהיר יותר וקיבולת שמורה. כמו Lambda, ליישם מטפלים idempotent ולהשתמש מת-lettering (באמצעות Event Grid Dead-letter Endpoints) כדי ללכוד אירועים כושלים.
Azure Service Bus: Reliable Messaging
Azure Service Bus הוא מתווך הודעה בוגר תומך בשני תורים (נקודת-נקודת לנקודה) ונושאים (pub/sub) הוא מציע תכונות כגון הפעלות הודעות, עסקאות, זיהוי כפול, ומשלוח מתוכנן.שירות אוטובוס הוא אידיאלי עבור תרחישים הדורשים משלוח הודעה מובטחת, הזמנת ותהליכי ריצה ארוכים.
במערכת מונחה אירוע, שירות אוטובוסים פועל לעתים קרובות כעמוד השדרה העמיד לאירועים דומיין.לדוגמה, שירות ניהול הזמנה מפרסם את ה-FLT:2 אירועים לנושא שירות אוטובוסים.מספר שירותים במורד הזרם - ניהול, משלוח, מלאי - בכפוף לנושא, כל עותק של שירות הדואר מבטיח שכל אחד מהם יחתום בדיוק פעם (או לפחות עם שכפול).
דוגמה לאדריכלות ב- Azure
דמיינו צינור עיבוד מסמך.כאשר משתמש מעלה PDF ל- Azure Blob Storage, אירוע שזוכה ל- Event Grid. Event Grid. Event Grid Path the Event to a Azure Function that Extracts metadata andאחסן אותו ב- Azure Cosmos DB. אותו אירוע גם גורם תור אוטובוס עבור שירותי מיצוי טקסט קוגניטיביים.
השוואת AWS ו- Azure עבור EDA
שתי הפלטפורמות מציעות שירותים מונעים על ידי אירועים בוגרים, אך יש הבדלים מרכזיים לשקול:
- (FLT:0) אפילו לא בגרות: FLT:1 [AWS] EventBridge מספק גילוי סכימה עשיר יותר, אירוע משחק מחדש, ושילוב עם צד שלישי מחוץ לקופסה. Azure Event Grid תומך בחשיפה דומה אבל לעתים קרובות דורש התאמה אישית יותר לדפוסים מתקדמים כמו מיקור אירועים.
- (FLT:0) אחריות אחריות:FLT:1; Azure Service Bus מצטיין במסר נעילה, מתפתל מת ברמת התור, ותמיכה ב-JMS. AWS SQS היא פשוטה יותר אך חסר מפגשים של הודעות בנויות; עם זאת, תורי SQS FIFO מציעים הסדר קפדני.
- (FLT:0) ללא תשלום: הפונקציה AzureServerless:FLT:1 הן AWS Lambda והן Azure Functions יש פרופילים דומים של כוכבים. Azure Functions יש יתרון קל בתמיכה שפה (למשל, PDF) וקווים משולבים, בעוד AWS Lambda מציעה הקצאת זיכרון גרפית יותר ואספקה של מטבע מבוזר.
- מודלים:0 (FLT:1Ab תביעות עבור אירועי EventBridge (per מיליון) ומודה מבקשות +duration. Azure תשלום עבור פעולות אירוע גרידות (per מיליון) ופונקציונליות הצריכה.
עבור סביבות היברידיות או מרובות עננים, לשקול שימוש בפורמטים סטנדרטיים של אירועים כמו Cloudevents כדי למנוע מנעול הספק - ב. ארגונים רבים סטנדרטיים על Cloudevents ולאחר מכן לתרגם לפורמטים ספציפיים פלטפורמה בקצה.
תבניות מתקדמות של Event-Driven
מעבר לאירוע הבסיסי, פלטפורמות ענן לתמוך בדפוסים שמטפלים בדרישות עסקיות מורכבות:
אירוע Sourcing
במקרה של מיקור, המדינה המלאה של יישום נגזר על ידי החלת רצף של אירועים מאוחסנים בחנות אירוע. AWS מציעה אמזון EventBridge עם משחק אירועים חוזר אירוע - אתה יכול לשחזר אירועים היסטוריים מארכיון. Azure Event Grid תומך באירוע רק עבור אירועים שפורסמו (עם חלון שימור) עבור מיקור אירועים אמיתי, קבוצות רבות משלבות את EventBridge/אפילו Grited עם DMO (AWS) או תיקון (ACC) באמצעות תיקון פעולה).
CQRS (Command Queryאחריות סגירה)
ספרדית קורא וכותב מודלים הופך טבעי במערכת מונחה אירוע.כתוב פקודות לייצר אירועים (למשל, באמצעות EventBridge או Event Grid), תוך קריאת מודלים לצרוך את האירועים האלה כדי לשמור על תחזיות.תבנית זו מאפשרת דרוג עצמאי של קריאה וכתיבה עומסי עבודה. על AWS, אתה יכול להשתמש ב-DymoDBs + Lambda כדי לשמור על נופים מסולקים.
צ'ורographed vs. Orchestrated Workflows
מערכות מונחות אירועים בדרך כלל משתמשות כוריאוגרפיה (כל שירות מקשיב לאירועים ומגיב באופן עצמאי), אבל לפעמים גידור נדרש עבור זרמי עבודה מורכבים.AWS Step Functions ו- Azure Logic Apps לשלב עם מקורות אירועים כדי לספק תזת מכונה המדינה.לדוגמה, הפונקציה שלב יכולה לחכות לאירועים מרובים (למשל, תשלום ושמור מלאי) לפני שתמשיך למשלוח.תבנית היברידית זו משלבת את הדה של Ecoupling של EDA עם בקרת העבודה.
תרגול הטוב ביותר
בניית מערכת אמינה, בטוחה, מונעת אירוע דורשת תשומת לב לכמה דאגות מבצעיות.
אי-יכולת ובדיוק-פעם עיבוד
שירותי אירוע ענן לעתים קרובות להבטיח משלוח של עד הסוף.להבטיח את המטפלים באירוע שלך הם idempotent: הם יכולים לעבד את אותו אירוע מספר פעמים ללא תופעות לוואי. השתמש בתעודות זהות אירועים או מפתחות idempotent (למשל, הזמנת מזהה) כדי לזהות העתקות. על AWS, אתה יכול למנף את ה-FLT:4 של למנדה; על Azure, להשתמש ב-ALTF:5 אירועים של Azure, או RedCID מעובד (Eclaste) ב-Af.
טעות ונפילה - Dead-Lettering
תמיד להגדיר יעדים מתים עבור תורים, מנויים אירועים, פונקציות ללא שרת. על AWS, לשייך תור מת-לטר (DLQ) עם הפונקציה Lambda שלך או תור SQS. על Azure, להגדיר נקודת קצה מת על מנויים Event Grid מנויים ו תורי אוטובוסים. Monitor DLQ עבור הודעות שלא ניתן לעבד, ולהגדיר התראות כדי לחקור כישלונות חוזרים.
מעקב ושקיפות
השתמש בכלים ניטור ענן כדי לעקוב אחר זרימת האירוע.AWS CloudWatch יכול ללכוד את Lambda invocations, EventBridge metrics (אפילוטס שנשלחו, נכשלו במטרות), ו-SQS תור מעמקים. Azure Monitor מספק מדדים דומים לפונקציות, Event Grid, ו- Service Bus. Enable מבוזר עם AWS X-Ray או Azure Insights כדי לחדד אירועים של אירועים של קידוד חזותי (J) כולל זיהוי ו-JSON).
אבטחה וביטוח
נתונים אירועים מכילים לעתים קרובות מידע רגיש.אירועים הצפנה במנוחה באמצעות AWS KMS או Azure Storage Service הצפנה. השתמש במדיניות מבוססת משאבים (מדיניות משאבים של אסטברידג', Azure Event Grid Manage Identity) כדי להגביל אילו שירותים יכולים לפרסם או לצרוך אירועים.לציות, לשמור על נתוני אירועים למטרות ביקורת - שימוש בארכיון EventBridge (AWS) או Event Grid Dissession Standence (e), עם הצפנה, לשקול להורדת תשלום להורדת תשלומים רגישים לפני מטענים.
מקרים אמיתיים לשימוש
אדריכלות מונחה אירועים מעצימה מערכות קריטיות בתעשיות.במסחר אלקטרוני, EDA מטפל עיבוד סדר, עדכוני מלאי והודעות הלקוח מסונכרנות.ב-IoT, נתוני חיישן זורם דרך AWS Core או Azure IoT Hub מעוררים ניתוחים ואזהרות מונעות אירועים.בשירות פיננסי, צינורות זיהוי נבונים צורכים אירועים של עסקאות וגורמים פעולות אוטומטיות בתוך מילימטרים רבים (כגון: , רצועת SaaS, , , , Slackh) כדי לשלב אירועים חיצוניים עם אירועים ברשת.
לדוגמה, חברה לוגיסטית משתמשת ב- Azure Event Grid כדי לקבל עדכונים מעקב משלוח מ- APIs, אשר לאחר מכן לעדכן מסד נתונים של קוסמוס DB ודוחפת הודעות למכשירים ניידים.על AWS, תהליכי חברה מדיה עולים דרך EventBridge: כאשר סרטון הועלה ל-S3, EventBridge מפעילה פונקציה Lambda כי מקודמת את הסרטון וטבלת DMD.
שיקולים
מערכות מונחות אירועים יכולות להיות יעילות כי אתה משלם רק כאשר אירועים מתרחשים.עם זאת, אירועים בעלי ערך גבוה יכולים להוסיף.AWS תשלום עבור מיליון אירועי EventBridge (הראשון 100M חינם, אז 1 $ 5.00M) בתוספת עלויות ל- Lambda invocation. Azure Event Gridהאשמות $ 060 מיליון פעולות (הראשון 100K חינם) SQS ואוטובוס שירות יש מחירים נפרדים.
עבור גבוה דרך חישוב, להשוות אפשרויות ללא שרת עם תשתיות ניתנות ל-AWS Kinesis Data Streams או Azure Event Hubs עשוי להיות זול יותר לעיבוד זר מתמשך (למשל, מיליוני אירועים לשנייה).
מסקנה
יישום אדריכלות Event Driven בפלטפורמות ענן כמו AWS ו- Azure מאפשר לארגונים לבנות מערכות שהן מתאחדות באופן רופף, מאוד מדרגי, ותגובה לאירועים עסקיים בזמן אמת, על ידי בחירת השירותים המתאימים - אפילוטברידג', Lambda, SNS/SQS ב-AWS; Event Grid, Functions, Service on Azure - ו-Rehering to התפעוליים הטובים ביותר עבור קיבולת, מעקב, תיקון, תיקון, תיקון של תבניות אבטחה מורכבות, ותיקון, אשר יכולות להמשיך את אותם שיטות אבטחה מתקדמות של פלטפורמת אבטחה, מערכת אבטחה, ו-CDR.
(ב) לקראת התעודה הרשמית על FLT:0 Amazon EventBiberée FLT:1 ו-FLT:2אזור אירוע גרידרל 3: TheFLT:4Cloudevents Specation (ראה פרק:5) מספק תקן מוכר-נמוך לתיאור נתוני אירועים.