תבנית 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: מציין את התדירות שבה יש לטעון מחדש את הפונקציה המוגדרת על ידי המשתמש, בדקות. אם הערך גדול מ-0, מערכת Dataflow בודקת מעת לעת את קובץ ה-UDF ב-Cloud Storage, ומטעינה מחדש את ה-UDF אם הקובץ משתנה. הפרמטר הזה מאפשר לכם לעדכן את ה-UDF בזמן שהצינור פועל, בלי שתצטרכו להפעיל מחדש את העבודה. אם הערך הוא 0, טעינה מחדש של UDF מושבתת. ערך ברירת המחדל הוא 0.

הפעלת התבנית

המסוף

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

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

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

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_PubSub_to_Redis \
    --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/Cloud_PubSub_to_Redis",
     "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

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