נתוני ליבהעבודת רקע

תורי משימות

תורי FIFO שלא מאבדים משימות כשעובד מת, כשיצרנים וצרכנים רצים במקביל.

LPUSH/s ב-pipeline, נמדד
31.6M
משימות שאבדו בקריסה
0
סקירות (polling)
0
צעד 1 מתוך 5
יצרנים דוחפים משימות

כל שירות מוסיף עבודה בלי להמתין לצרכנים.

סשן לדוגמהplaying
# יצרנים דוחפים משימות
hotkv> LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
(integer) 18

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

הבעיה

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

איך HotKV מטפל בזה

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

צעד אחר צעד

מה קורה, פקודה אחר פקודה

  1. 01

    יצרנים דוחפים משימות

    כל שירות מוסיף עבודה בלי להמתין לצרכנים.

    LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
  2. 02

    עובד תופס משימה בבטחה

    BLMOVE חוסם עד שיש משימה זמינה, ואז מעביר אותה לרשימת עיבוד בצעד אחד.

    BLMOVE queue:emails queue:emails:processing RIGHT LEFT 0
  3. 03

    מאשרים בסיום

    האימייל יצא. המשימה מוסרת מרשימת העיבוד.

    LREM queue:emails:processing 1 "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
  4. 04

    עובד קורס

    עובד 2 מת באמצע משימה. המשימה שלו עדיין ברשימת העיבוד, לא אבדה.

    LRANGE queue:emails:processing 0 -1
  5. 05

    מחזירים לתור וממשיכים

    מנטר מחזיר את המשימה שננטשה לתור ועובד אחר לוקח אותה.

    LMOVE queue:emails:processing queue:emails LEFT RIGHT
איפה זה מתאים

תרחישים מהעולם האמיתי

אימייל ו-SMS טרנזקציוניים

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

עיבוד מדיה

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

מסירת webhooks

webhooks יוצאים נכנסים לתור ומנוסים מחדש בלי לחסום את הבקשה שהפעילה אותם.

מובנה

מה מקבלים

FIFO עם קריאות חוסמות

LPUSH עם BRPOP, והעובדים ישנים עד שמגיעה עבודה.

LPUSHBRPOP

אין משימות אבודות

BLMOVE מעביר כל משימה לרשימת עיבוד באופן אטומי.

BLMOVELREM

יצרנים וצרכנים מקבילים

יצרנים וצרכנים מקבלים שירות מתהליכוני עבודה מקבילים.

צריכים עוד?

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

XADDXREADGROUP

שאלות נפוצות

מה קורה למשימה אם עובד קורס?

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

האם העובדים צריכים לבצע polling?

לא. BRPOP ו-BLMOVE חוסמים עד שמגיעה משימה, עם פסק זמן אופציונלי.

רשימות או זרמים?

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

שימושים קשורים

נסו על עומס העבודה שלכם

HotKV מדבר את פרוטוקול Redis, ולכן אפשר להפנות אליו לקוח קיים ולהריץ את אותן פקודות.