Table of Contents
Event-Driven Architecture (EDA) הפך לפרדיגמה עיצוב יסודית עבור בנייה מבוזרת, דרוגנית ומערכות רסן. במקום להסתמך על הפיכה הדוקה בין רכיבים באמצעות שיטות ישירות או מיזמים מרוחקים, EDA מעבירה תקשורת לייצור, זיהוי וצריכה של אירועים.אירוע הוא שינוי משמעותי במצב - משהו שקרה חלקים אחרים של המערכת עשויים לטפל זה, מאפשר לדרגת אבטחה עצמאית, כגון תבניות ליבה של מערכת (pcrecre) כדי להגיב שינויים משמעותיים של שינוי כגון שינוי אחריות מודרנית (p) או שינוי משמעותי במצב כזה, כלומר, כלומר, כלומר, כלומר, שינוי משמעותי של מערכת הפעלה עצמית, כלומר, שינוי משמעותי של מערכתית אבטחה, שינוי משמעותי, כלומר, כלומר, שינוי משמעותי של מערכתית אבטחה, כלומר, כלומר, שינוי משמעותי של שינוי משמעותי של מערכתית (pcrecrecrecouprecrecrecouprement) - שינוי משמעותי של מערכת (pvrements בפועל, כלומר, שינוי משמעותי של מערכתית (מערכת) - שינוי משמעותי של מערכתית אבטחה) - שינוי משמעותי של מערכתית אבטחה, כלומר, כלומר, שינוי משמעותי במצב זה יכול להגיב על ידי שינוי משמעותי במצב זה, שינוי משמעותי במצב זה, שינוי משמעותי במצב זה, שינוי משמעותי של מערכת (pSCOS
מהי אדריכלות Event-Driven?
[ב]העיקרון, א"א מתייחס לאירועים כאזרחים מהמדרגה הראשונה; אירוע הוא תיעוד בלתי-מוחלט של משהו שקרה בעבר - למשל, FLT:0.0;0; נספח 1, FLT:2userregisteredFLT 3:2, או FLT:4PayFlededFLT:5 Components ידוע כמו לייצר אירועים ספציפיים, כגון: AFP, כלומר, או אירועים של אמזון, אשר יהיו קיימים, או אירועים של אירועים מסוימים, אשר יהיו קיימים, אשר יהיו קיימים, אשר יהיו קיימים, בין היתר, בין היתר, בין היתר, בין היתר, בין היתר, בין היתר, בין היתר, לבין יצרנים, לבין סוכני היצרנים, אשר יהיו קיימים, אשר יהיו קיימים, בין היתר, בין היתר, לבין סוכני היצרנים, לבין סוכני החולקים על ידי היצרנים, בין היתר, לבין סוכני ה-APTD.
אדריכלות זו עומדת בניגוד למודלים של בקשה וסנכרוןית, שבו שירות קורא ישירות לשירות אחר ומחכה לתגובה. תקשורת סינכרונית יוצרת הפיכה הדוקה: אם השירות מטה הזרם איטי או לא זמין, המתקשר חסם.עם EDA, המפיקים אירועי אש ומיד ממשיך את פעולתם.
EDA הוא חזק במיוחד במערכות אקולוגיות מיקרו-שירות, סביבות פוליגלובט, וכל דומיין הדורש גבוה דרך, שקיפות נמוכה או זרימות עבודה מונעות אירועים כגון עיבוד סדר, אי-שיווי נתונים של IoT והונאה.
תבניות ליבה באדריכלות Event-Driven
Publish/Subscribe (Pub/Sub)
תבנית ה-Pub/Subscribe (Pub/Sub) היא תבנית EDA הפשוטה והאחרונה שאומצה. במודל זה, מוציאים לאור פולטים אירועים לנושא או לתקשור.com/מנויים רשומים עניין בנושאים אלה ומקבלים את כל האירועים שפורסמו להם.The Brokes fan-out, Deliveryערבויות, וסינון. Publishers ומנויים אינם יודעים אחד על השני - זו המהות של הפיכה רופפת.
לדוגמה, לשקול פלטפורמת מסחר אלקטרוני.כאשר לקוח מציב הזמנה, שירות ההזמנה מפרסם אירוע (FLT:0) הזמנה PlacedveFLT:1 אירוע בנושא "סדרים" מספר מנויים לאסוף את האירוע הזה:
- שירות המלאי מנקה את המניות.
- שירות חיובים הוא הלקוח.
- שירות ההודעות שולח אישור דואר אלקטרוני.
- שירות הניתוח מתעד את האירוע לדיווח.
כל מנוי מעבד את האירוע באופן עצמאי ובקצב שלו.אם שירות ההודעות איטי, הוא אינו משפיע על שירות ההזמנה או שירות המלאי.תבנית זו תומכת באופן טבעי בסקאלה; אתה יכול להוסיף מקרים נוספים של שירות המלאי כדי לטפל בעומס מוגבר ללא נגיעה לרכיבים אחרים.
(ב) כלים פופולריים ליישום פאב/Sub כוללים:0 (Apacheekárb) 1 (Apachecio Capárárátárbsp; 1:1), אשר מספק ציוד גבוה, קבוע, וחדשני אירועים; FLT:2 RabbitMQFLT 3, אשר מציע את דרישות הפחתת השימוש והנושא שלו, כגון: FLT4AWSBridgeF:5, אשר מציעות על בסיס קבוע, אשר מציע על ידי , ו-S.
אחריות על אחריות (CQRS)
Command Query אחריות Segregation (CQRS) הוא דפוס שמפריד בין פעולות לכתוב (commands) מקריאה פעולות (הדברים) למודלים שונים. במערכות CRUD מסורתיות, אותו מודל נתונים משמש הן לעדכונים והן קריאה, אשר יכול להוביל לבעיות ביצועים כאשר עומס העבודה אינו מאוזן - למשל, דרך כתיבה מורכבת כי צריך גם לשרת שאילתות קריאה אופטימיזציה עבור schema שונה.
במערכת מבוססת CQRS, פקודה כמו קונסול:0Place orderFreave 1LT (הופנה מהדף CQRS), מהווה מודל כתיבה המאמת את כללי העסקים ומייצר אירוע (למשל, FLT:2 הזמנתCreatedFLT:3) שבסופו של דבר מעדכנת את מסד הנתונים של אלסטי, באופן עקבי, מודל קריאה נפרד – לעתים קרובות מסולם, משועבד, להאזין למסד נתונים של שימוש עצמאי או לגרסאות חיפוש (reecte) או לגרסאות).
היתרונות של CQRS כוללים:
- (ב) ניתן להשתמש בעומסי עבודה ב-[[1924]], ללא תוכן.
- (ב) סודיות:0) , סעיף 1: אתה יכול לחשוף פקודות ושאילתות לקהלים שונים; לדוגמה, פקודה עשויה לדרוש אימות, ואילו שאילתת קהל היא לקריאה בלבד.
- (ב) ⁇ :0) ⁇ (ב) ,הקריאה וכתיבה צדים יכולים לעלות באופן עצמאי על חומרה או אשכולות שונים.
- (ב) ⁇ :0) ⁇ (ב) , אתה יכול לפתח את הschema הקריאה מבלי להשפיע על ההיגיון בצד הפיקוד.
עם זאת, CQRS מוסיף מורכבות כי זה מציג עקביות בסופו של דבר ולעתים קרובות דורש סינכרוניזציה מונחה אירוע בין שני הצדדים.זה זוגות באופן טבעי עם אירוע Sourcing, שבו הצד הכתוב מאחסן רצף של אירועים ולא תמונה ממשלתית נוכחית.
אירוע Sourcing
אירוע Sourcing הוא דפוס שבו שינויים המדינה מאוחסנים כרצף הכרונולוגי של אירועים, לא כתמונה של המדינה הנוכחית. במקום לכתוב תיעוד במסד נתונים, כל מוטציות יוצר אירוע חדש שהוקצב ל יומן אירוע.המצב הנוכחי יכול להיגזר על ידי חזרה של כל האירועים מההתחלה - או באמצעות צילומי וידאו במרווחים במהירות ההתאוששות.
אירוע Sourcing מספק מספר יתרונות חזקים:
- (ב) תועדו כל שינוי, מה שמאפשר לכם לראות את ההיסטוריה המלאה של ישות.
- (ב) ⁇ :0) ,התמדה וההתמדה: ⁇ 1) ניתן לשחזר אירועים בסביבה לפיתוח כדי לשחזר באגים או לבחון לוגיקה עסקית חדשה.
- (ב) שאילתות חוצות:0) , ניתן לשאול מה הייתה המדינה בכל עת.
- (FLT:0)Ease of Adopt CQRS:03F1) חנות האירועים משמשת כמודל הכתיבה, ומודלים לקריאה יכולים להירשם לאירועים לעדכונים בזמן אמת.
ה- Trading-off העיקרי הוא אחסון מוגבר ומורכבות.שאילתות בחנות האירוע ישירות הוא לעתים קרובות לא יעיל, כך שאתה בדרך כלל בונה מודלים לקריאה (פרויקטים) כי חישוב השקפות.אירוע Sourcing הוא נפוץ בתחומים כמו חשבונאות פיננסית, בנקאות ועריכה מסמך שיתופי שבו יש לרשום כל שינוי.
תגית:סטרימינג
הזרמת אירועים כזרם נתונים מתמשך, לא ממומש.תבנית זו משמשת לניתוח בזמן אמת, ניטור ושילוב נתונים בקנה מידה. in Eventסטרימינג, אירועים מוצצים מיצרנים מרובים ומעובדים כמעט בזמן אמת על ידי מעבדים של זרימה המסנן, מצטברים, והופכים את הנתונים.התוצאות המעובדות ניתן לאחסן, נשלחות לזרם אחר, או לשמש כדי לגרום לפעולות מטה.
Apache קפקא הוא תקן דה Facto עבור הזרמת האירוע.It מאחסן אירועים ב יומני unmutable על פני מחיצות על סובלנות לקויה ורמתיות אופקית.F עיבוד מסגרות עיבוד כגון: קפקא סטרי, Apache Flink, ו- Sparkסטרימינג מאפשר עיבוד אירועים מורכבים עם בדיוק על סימנסטיקה.לדוגמה, חברת שיתוף נסיעות עשויה לייעל את מיקומים GPS כדי לחשב תמחור, לזהות זמינות הנהג, ולעדכן ETA בזמן אמת - בכל הזמנים.
הזרמת אירועים היא גם בסיס עבור מרש נתונים ומיקרו-שירותים מונעים אירועים שבהם ברצונך למחוק יצרני נתונים מהצרכנים ברמת תשתיות הנתונים.
תבניות ותבניות חשובות אחרות בשילוב
תגית: Saga
בעסקאות מבוזרות, במיוחד בתוך מיקרו-שירותים, דפוס סאגה מנהל את זרימת העבודה רב-שלב.כל צעד בסאגה מפרסם אירוע או מבצע פעולה.אם צעד נכשל, הסאגה מנהלת אירועים כדי לגלגל בחזרה שלבים קודמים.סאגות ניתן לתזזזז (מתאם רכז מרכזי אינו מספר לכל שירות מה לעשות) או כוריאוגרפיה (כל שירות מקשיב לאירועים ומחלליט על שלו).
תכנות Reactive
בעוד לא רק דפוס אדריכלי, תכנות תגובתי הוא מודל תכנות היישר עם EDA. מסגרות כמו RxJS, Reactor, ו- Akka Streams לאפשר למפתחים להלחין לוגיקה מבוססת synchronous ואירוע באמצעות רצפים נצפים.זה שימושי במיוחד בלקוחות (למשל, עדכונים בזמן אמת UI) ובשרתים שבהם אתה צריך תהליך גבוה של אירועים אחוריים.
שיתוף פעולה
שיתוף פעולה אירועים הוא דפוס שבו שירותים חולקים מודל אירוע משותף ומתקשרים רק באמצעות אירועים.כל שירות שומר על לוגיקה ופרויקטים משלו לחנויות נתונים משלו.אין שיחות ישירות של ממשק שירות אל שירות API.תבנית זו ממקסימה את האוטונומיה ומשמשת לעתים קרובות בתכנון מונחי דומיין עם קונטקסטים כבולים.האתגר העיקרי הוא: כאשר האירוע משתנה, כל הצרכנים חייבים להיות מעודכנים או לסבול אבולוציה (Abto-apto-bsp).
בחירת התבנית הנכונה
בחירת תבנית EDA תלויה בדרישות הספציפיות שלך:
- (FLT:0) שיתוף ועצמאות: 10.10.10.03 אם אתה צריך טיהור גבוה וצרכנים רבים, פוב / סב הוא פשוט.אם אתה צריך לקרוא בנפרד ולכתוב מודלים, לשלב CQRS עם אירוע Sourcing.
- (FLT:0) דרישות עקביות:FLT:1ve לעקביות חזקה, להימנע מ- EDA; השתמש בעסקאות מבוזרות או מסד נתונים עם ACID קפדני. עבור עקביות, CQRS ואירוע עבודה כל כךurcing היטב.
- (FLT:0 Throughput and latency: FLT1 Eventסטרימינג (Kafka) נותן את הטוב ביותר באמצעות לוח, בעוד פאב/Sub עם מתווך כמו RabbitMQ מציע שקיפות נמוכה יותר עבור הודעות קטנות יותר.
- (ב) ⁇ :0) , ⁇ (ב) ,האירוע ה-II הוא אידיאלי עבור תעשיות ציות.
- (ה)התבגרות:0) ⁇ : 1FLT:1 CQRS ואירוע Sourcing גדל המורכבות.לוודא שהצוות שלך מבין עקביות סופית, אבולוציה של סכימה, ועוצמה.
היתרונות של אדריכלות Event-Driven
מעבר ליתרונות המיידיים של הפחתת היקף והיקף, EDA מספקת מספר יתרונות תפעוליים ועסקיים:
- (FLT:0) ,Scalability: 1:1 כל רכיב בקנה מידה עצמאי על בסיס עומס משלו. במהלך מכירה פלאש, אתה יכול להגדיל את שירות ההזמנה ואת המנויים שלו מבלי לגעת בשירותי חיוב או משלוח.
- (FLT:0) lexibility: הוספת לקוח חדש (למשל, צינור ניתוח חדש) לא דורש שינויים ביצרנים.
- (FLT:0) תגובה בזמן אמת: FLT:1 EDA באופן טבעי תומך חוויות משתמש בזמן אמת, כגון לוחות מחוונים חיים, הודעות ועדכונים מיידיים.
- (ב) אם הצרכן נכשל, האירועים נמשכים בברוקר ויכולים להיות משוחקים.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0) אינטגרציה נתונים: הטמעת 10:1 אירועים ניתן לייעל אגמים נתונים, מחסנים או צינורות למידת מכונה לניתוח, מה שהופך את המערכת למקור של אמת עבור הארגון כולו.
אתגרים ועיסוקים טובים
EDA הוא חזק אך לא ללא תקלות. אתגרים משותפים כוללים:
- (FLT:0) עקביות כללית: צרכנים 1FLT יכולים לראות נתונים מפוסקים.You חייב לתכנן תהליכים עסקיים שיש להם עיכובים וליישם מטפלות אידיאולוגיות.
- (FLT:0) מורכב:0 (Complexity:FLT:1 ), אירוע ניהול schemas, גרסאות, וזרמים מרובים של אירועים ניתן לרתיע. השתמש ברשומות סכימה ולפתח schemas קדימה-compatibly.
- (FLT:0) מחיקת ופיקוח: FLT:1 Distributed , הם קשים יותר לעקוב אחר כך. להשקיע בכלים של אובססיביות כמו הדבקה מבוזרת (ג'אגר, OpenTelemetry) ואגורגציה.
- (ב) ניתן לשכפל את הדברים:0) לשכפול נתונים: (ב) ניתן לשכפל אירועים; להפוך את הצרכנים שלך לרגישים כל כך לעיבוד אירוע פעמיים יש את אותה השפעה כמו עיבוד זה פעם אחת.
- (FLT:0) הזמנת: ⁇ 1 לא כל זרמי האירוע זקוקים לסידור קפדני, אבל כאשר הם עושים (למשל, מעברי מדינה של ישות יחידה), חלוקה על ידי מפתח (למשל, מזהה ישות) ולהבטיח שהברוקר משמר את הסדר בתוך חלוקה.
שיטות הטובות ביותר כוללות: להתחיל פשוט - השתמש ב-Pub הראשון ורק להוסיף CQRS או אירוע Sourcing כאשר מוצדק; להשקיע במרשם טוב של סכימה; לאכוף תורים מתים לאירועים כושלים; ולדמיין כישלונות באופן קבוע כדי להבטיח את הסאגה שלך מחלחלת עבודות לוגיקה.
מסקנה
תבניות ארכיטקטורות Event-Driven - מהבסיס P /Sub ועד יותר מיוחד CQRS, אירוע Sourcing וסטרימינג אירוע - מציעים ערכת כלים חזקה עבור מערכות בנייה כי הם רחבים, גמישים, ותגובה. על ידי decoupling יצרנים וצרכנים, EDA מאפשר לצוותים לבנות באופן עצמאי, להתמודד עם עומסים בלתי צפויים, ופותח יכולות בזמן אמת, הוא גם מציג מורכבות, כמו גם פיתוח ענן חיוני, עיצוב, לא יהיה מסוגלות, עיצוב יעיל יותר, עיצוב יעיל יותר, עיצוב שיטות ניהול יעיל יותר, עיצוב יעיל יותר, עיצוב יעיל יותר, עיצוב מערכות ניהול מערכות ניהול מערכות ניהול ליבה מודרני.