תבנית Pub/Sub ל-Redis

התבנית Pub/Sub to Redis היא צינור סטרימינג שקורא הודעות ממינוי ל-Pub/Sub וכותב את מטען ההודעה ל-Redis. התרחיש הנפוץ ביותר לשימוש בתבנית הזו הוא ייצוא יומנים אל Redis Enterprise לניתוח מתקדם של יומנים בזמן אמת על סמך חיפוש.

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

הדרישות לגבי צינורות עיבוד נתונים

  • מינוי Pub/Sub של המקור צריך להתקיים לפני שמריצים את צינור הנתונים.
  • נקודת הקצה של מסד הנתונים של Redis צריכה להיות נגישה מרשת המשנה של העובדים ב-Dataflow.

פרמטרים של תבניות

פרמטרים נדרשים

  • inputSubscription: מינוי Pub/Sub שממנו יתבצע קריאת הקלט. לדוגמה, projects/<PROJECT_ID>/subscriptions/<SUBSCRIPTION_ID>.
  • redisHost: המארח של מסד הנתונים של Redis. לדוגמה, your.cloud.db.redislabs.com. ברירת המחדל היא: 127.0.0.1.
  • redisPort: היציאה של מסד הנתונים של Redis. לדוגמה, 12345. ברירת המחדל היא 6379.
  • redisPassword: הסיסמה של מסד הנתונים של Redis. ברירת המחדל היא empty.

פרמטרים אופציונליים

  • sslEnabled: פרמטר ה-SSL של מסד הנתונים של Redis. ברירת המחדל היא: false.
  • redisSinkType: יעד Redis. הערכים הנתמכים הם STRING_SINK, HASH_SINK, STREAMS_SINK, and LOGGING_SINK. לדוגמה, STRING_SINK. ברירת המחדל היא: STRING_SINK.
  • connectionTimeout: הזמן הקצוב לתפוגה של חיבור Redis באלפיות השנייה. לדוגמה, 2000. ברירת המחדל היא 2000.
  • ttl: משך הזמן עד לתפוגת המפתח בשניות. ערך ברירת המחדל של ttl עבור HASH_SINK הוא ‎-1, כלומר הוא אף פעם לא יפוג.
  • outputDeadletterTopic: נושא Pub/Sub להעברת הודעות שלא ניתן לעבד. הודעות שלא עוברות טרנספורמציה של UDF מועברות לכאן. חובה אם משתמשים ב-UDF של JavaScript. לדוגמה, projects/<PROJECT_ID>/topics/<TOPIC_NAME>.
  • javascriptTextTransformGcsPath: ה-URI של Cloud Storage של קובץ ה-‎ .js שמגדיר את הפונקציה בהגדרת המשתמש (UDF) ב-JavaScript שבה רוצים להשתמש. לדוגמה, gs://my-bucket/my-udfs/my_file.js.
  • javascriptTextTransformFunctionName: השם של פונקציית JavaScript בהגדרת המשתמש (UDF) שבה רוצים להשתמש. לדוגמה, אם קוד פונקציית ה-JavaScript הוא myTransform(inJson) { /*...do stuff...*/ }, אז שם הפונקציה הוא myTransform. דוגמאות ל-UDF ב-JavaScript זמינות במאמר UDF Examples (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples).
  • javascriptTextTransformReloadIntervalMinutes: מציין באיזו תדירות לטעון מחדש את ה-UDF, בדקות. אם הערך גדול מ-0, מערכת Dataflow בודקת מעת לעת את קובץ ה-UDF ב-Cloud Storage, ומטעינה מחדש את ה-UDF אם הקובץ משתנה. הפרמטר הזה מאפשר לכם לעדכן את הפונקציה המוגדרת על ידי המשתמש בזמן שהצינור פועל, בלי שתצטרכו להפעיל מחדש את העבודה. אם הערך הוא 0, טעינה מחדש של פונקציות UDF מושבתת. ערך ברירת המחדל הוא 0.

הרצת התבנית

המסוף

  1. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

    רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר בנושא מיקומי Dataflow.

  5. בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Pub/Sub to Redis (Pub/Sub ל-Redis).
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

במעטפת או בטרמינל, מריצים את התבנית:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/ \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       inputSubscription=INPUT_SUBSCRIPTION,\
       redisHost=REDIS_HOST,\
       redisPort=REDIS_PORT,\
       redisPassword=REDIS_PASSWORD,\

מחליפים את מה שכתוב בשדות הבאים:

  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • INPUT_SUBSCRIPTION: מינוי הקלט של Pub/Sub
  • REDIS_HOST: המארח של מסד הנתונים Redis
  • REDIS_PORT: יציאת מסד הנתונים של Redis
  • REDIS_PASSWORD: סיסמת מסד הנתונים של Redis

API

כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "redisHost": "REDIS_HOST",
       "redisPort": "REDIS_PORT",
       "redisPassword": "REDIS_PASSWORD",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/",
     "environment": { "maxWorkers": "10" }
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud
  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית האב ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • INPUT_SUBSCRIPTION: מינוי הקלט של Pub/Sub
  • REDIS_HOST: המארח של מסד הנתונים Redis
  • REDIS_PORT: יציאת מסד הנתונים של Redis
  • REDIS_PASSWORD: סיסמת מסד הנתונים של Redis

המאמרים הבאים