מה זה Broker - ולמה הוא אף פעם לא "רק צינור"
מה זה Broker - ולמה הוא אף פעם לא “רק צינור”
אחרי שהבנו מהו Event, ואיך הוא שונה מ-Polling, צריך לעצור על הרכיב שבדרך כלל מסתתר באמצע - אבל הוא זה שמחליט איך המערכת באמת מתנהגת.
זה ה-Broker.
מה זה בעצם Broker
Broker הוא רכיב תיווך: הוא מקבל אירועים ממי שיצר אותם, ומעביר אותם למי שאמור לקבל אותם.
לכאורה - תפקיד פשוט: לקבל → להעביר.
בפועל - זהו אחד הרכיבים הכי בעלי השפעה במערכת Event-driven.
למה בכלל צריך Broker
בלי Broker, יוצר האירוע צריך לדעת:
- מי הצרכנים
- איך להגיע אליהם
- מתי הם זמינים
זה יוצר תלות ישירה.
Broker נועד לשבור את התלות הזו:
- היוצר לא יודע מי יגיב
- הצרכן לא יודע מי יצר
- וכל אחד מהם מתקדם בקצב שלו
זה היתרון הגדול של Event-driven - אבל הוא לא חינמי.
Broker לא רק מעביר - הוא מחליט
ברגע שמכניסים Broker, הוא מתחיל לקבל החלטות:
- האם לשמור אירוע או לזרוק אותו
- האם להעביר מיד או להכניס לתור
- למי להעביר - ולאיזה סדר
- מה קורה כשצרכן איטי או נופל
כל החלטה כזו משפיעה על: Latency, עומס, יציבות, ואופי הכשל.
כלומר: Broker אינו צינור - הוא נקודת שליטה.
איפה ה-Latency “נכנס”
במערכת בלי Broker, הזמן עובר ישירות בין יוצר למבצע.
עם Broker, הזמן מתפצל:
- זמן הגעה ל-Broker
- זמן המתנה בתור
- זמן ניתוב
- זמן עד שצרכן פנוי
אף אחד מהזמנים האלה לא גדול לבדו - אבל יחד הם יוצרים Latency משמעותי, ובעיקר משתנה.
וזה חוזר למה שכבר ראינו: Event-driven לא מבטל זמן - הוא מזיז אותו לתווך.
למה Broker משנה את אופי הכשל
כשאין Broker: כשל הוא מיידי וברור. אם היעד לא זמין - הכול נעצר.
כשיש Broker: כשל יכול להיות שקט:
- תור מתארך
- אירועים מצטברים
- והתגובה מתעכבת בלי שאף אחד “נופל”
זה נראה כמו מערכת שעובדת - אבל בפועל היא מאבדת שליטה.
Broker טוב לא רק מעביר אירועים, אלא גם מגדיר איך נראית תקלה.
המשל
דמיינו מרכז דואר.
בלי מרכז: את מוסרת מכתב ישירות לנמען. אם הוא לא בבית - את יודעת מיד.
עם מרכז: המכתב מתקבל, ממויין, ממתין, ומועבר. את לא יודעת מתי הוא יגיע - וגם לא אם הוא נתקע בדרך.
המרכז לא רק מעביר דואר. הוא קובע את חוויית ההמתנה.
השורה התחתונה
Broker הוא לב המערכת ה-Event-driven. לא בגלל שהוא חכם, אלא בגלל שהוא בדרך של הכול.
הוא מאפשר ניתוק תלות וסקייל, אבל גם:
- מוסיף Latency
- משנה התנהגות עומס
- ומזיז כשלים למקומות שקשה לראות
ובגלל זה, אי אפשר לדבר על Event-driven בלי להבין שה-Broker הוא לא צינור - הוא החלטה תכנונית.