הזרמת שינויים ל-Pub/Sub באמצעות טריגר אופציונלי של פונקציית Cloud Run

במדריך הזה מוסבר איך להשתמש בתבנית Bigtable סנכרון שינויים בזרמי נתונים ל-Pub/Sub, כולל איך להגדיר נושא ולהגדיר את התבנית. אפשר גם ליצור פונקציית Cloud Run בשפת התכנות הרצויה, שמופעלת על ידי זרם האירועים.

המדריך הזה מיועד למשתמשים טכניים שמכירים את Bigtable, יודעים לכתוב קוד ומכירים שירותים של סטרימינג אירועים.

מטרות

במדריך הזה מוסבר איך:

  • יוצרים טבלת Bigtable עם הפעלת זרם שינויים.
  • יוצרים נושא Pub/Sub עם סכימת שינוי הנתונים ב-Bigtable.
  • פריסת שינוי בסטרימינג של Bigtable לצינור עיבוד נתונים ב-Pub/Sub ב-Dataflow באמצעות התבנית.
  • אפשר לצפות בזרם האירועים ישירות ב-Pub/Sub או ביומנים של פונקציית Cloud Run.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

לפני שמתחילים

    נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Enable the Dataflow, Cloud Bigtable API, Cloud Bigtable Admin API, Pub/Sub, Cloud Run functions, and Cloud Storage APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

    במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  1. מעדכנים ומתקינים את cbt CLI .
    gcloud components update
    gcloud components install cbt

יוצרים נושא Pub/Sub

  1. נכנסים לדף Topics של Pub/Sub במסוף Google Cloud .

    לדף Topics

  2. לוחצים על יצירת נושא.

  3. מגדירים את המזהה לערך bigtable-change-stream-topic.

  4. בוחרים באפשרות שימוש בסכימה.

  5. בתפריט הנפתח Select a Pub/Sub schema, לוחצים על Create new schema. תיפתח כרטיסייה חדשה שבה מגדירים את הסכימה.

    1. מגדירים את מזהה הסכימה לערך bigtable-change-stream-schema.
    2. מגדירים את סוג הסכימה ל-Avro.
    3. מדביקים את ההגדרה הבאה של הסכימה. מידע נוסף על הסכימה זמין בדף התיעוד של התבנית.
      {
          "name" : "ChangelogEntryMessage",
          "type" : "record",
          "namespace" : "com.google.cloud.teleport.bigtable",
          "fields" : [
            { "name" : "rowKey", "type" : "bytes"},
            {
              "name" : "modType",
              "type" : {
                "name": "ModType",
                "type": "enum",
                "symbols": ["SET_CELL", "DELETE_FAMILY", "DELETE_CELLS", "UNKNOWN"]}
            },
            { "name": "isGC", "type": "boolean" },
            { "name": "tieBreaker", "type": "int"},
            { "name": "columnFamily", "type": "string"},
            { "name": "commitTimestamp", "type" : "long"},
            { "name" : "sourceInstance", "type" : "string"},
            { "name" : "sourceCluster", "type" : "string"},
            { "name" : "sourceTable", "type" : "string"},
            { "name": "column", "type" : ["null", "bytes"]},
            { "name": "timestamp", "type" : ["null", "long"]},
            { "name": "timestampFrom", "type" : ["null", "long"]},
            { "name": "timestampTo", "type" : ["null", "long"]},
            { "name" : "value", "type" : ["null", "bytes"]}
        ]
      }
    
    1. לוחצים על יצירה כדי ליצור את הסכימה.
  6. סוגרים את הכרטיסייה יצירת סכימה, מרעננים את רשימת הסכימות ובוחרים את הסכימה החדשה שהגדרתם.

  7. לוחצים על יצירה כדי ליצור את הנושא.

אופציונלי: יצירת פונקציית Cloud Run

אפשר לעבד את נתוני הסטרימינג של Pub/Sub באמצעות פונקציית Cloud Run.

  1. בדף פרטים של נושא bigtable-change-stream-topic, לוחצים על הפעלת פונקציית Cloud .
  2. בשדה Function name, מזינים את השם bt-ps-tutorial-function.
  3. בקטע קוד מקור, לוחצים על התפריט הנפתח סביבת זמן ריצה ואז בוחרים את סביבת זמן הריצה ואת שפת התכנות הרצויות. נוצר hello world שמדפיס את זרם השינויים כשהוא מגיע. מידע נוסף על כתיבת פונקציות Cloud Run זמין במסמכי התיעוד.
  4. בכל שאר השדות משאירים את ערכי ברירת המחדל.
  5. לוחצים על פריסת הפונקציה.

יצירת טבלה עם הפעלה של זרם שינויים

  1. נכנסים לדף Instances של Bigtable במסוף Google Cloud .

    כניסה לדף Instances

  2. לוחצים על המזהה של המופע שבו משתמשים במדריך הזה.

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

  3. בחלונית הניווט שמשמאל, לוחצים על Tables (טבלאות).

  4. לוחצים על יצירת טבלה.

  5. נותנים לטבלה את השם change-streams-pubsub-tutorial.

  6. מוסיפים קבוצת עמודות בשם cf.

  7. בוחרים באפשרות הפעלת מקור נתונים לשינויים.

  8. לוחצים על יצירה.

הפעלת צינור נתונים כדי לתעד את זרם השינויים

  1. בדף Tables (טבלאות) של Bigtable, מוצאים את הטבלה change-streams-pubsub-tutorial.
  2. בעמודה Change stream (הזנת שינויים), לוחצים על Connect (חיבור).
  3. בתיבת הדו-שיח, בוחרים באפשרות Pub/Sub.
  4. לוחצים על יצירת משימת Dataflow.
  5. בדף Dataflow Create job (יצירת משימה), מגדירים את שם נושא הפלט של Pub/Sub ל: bigtable-change-stream-topic.
  6. מגדירים את מזהה פרופיל האפליקציה של Bigtable ל-default.
  7. לוחצים על הפעלת העבודה.
  8. מחכים עד שסטטוס העבודה יהיה Starting או Running לפני שממשיכים. התהליך יימשך כ-5 דקות אחרי שהעבודה תתווסף לתור.

כתיבת נתונים ל-Bigtable

  1. ב-Cloud Shell, כותבים כמה שורות ב-Bigtable כדי שיומן השינויים יוכל לכתוב נתונים לזרם Pub/Sub. השינויים יופיעו כל עוד תכתבו את הנתונים אחרי יצירת המשימה. לא צריך לחכות עד שסטטוס העבודה יהיה running.

    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user123 cf:col1=abc
    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user546 cf:col1=def
    cbt -instance=BIGTABLE_INSTANCE_ID -project=YOUR_PROJECT_ID \
        set change-streams-pubsub-tutorial user789 cf:col1=ghi
    

צפייה ביומני השינויים ב-Pub/Sub

  1. נכנסים לדף Subscriptions של Pub/Sub במסוף Google Cloud .

    אל הדף "מינויים"

  2. לוחצים על המינוי שנוצר באופן אוטומטי לנושא הרלוונטי bigtable-change-stream-topic. היא צריכה להיקרא bigtable-change-stream-topic-sub.

  3. עוברים לכרטיסייה הודעות.

  4. לוחצים על Pull (משיכה).

  5. בודקים את רשימת ההודעות ורואים את הנתונים שכתבתם.

    יומן שינויים של הודעות ב-Pub/Sub

אופציונלי: צפייה בשינויים ביומנים של פונקציות Cloud Run

אם יצרתם פונקציה של Cloud Run Functions, תוכלו לראות את השינויים ביומנים.

  1. במסוף Google Cloud , נכנסים אל Cloud Run functions.

    כניסה לדף Cloud Run functions

  2. לוחצים על הפונקציה bt-ps-tutorial-function.

  3. עוברים לכרטיסייה יומנים.

  4. מוודאים שהערך של Severity מוגדר ל-Info לפחות, כדי שתוכלו לראות את היומנים.

  5. אפשר לעיין ביומנים ולראות את הנתונים שכתבתם.

הפלט אמור להיראות כך:

Pub/Sub message: {"rowKey":"user789","modType":"SET_CELL","isGC":false,"tieBreaker":0,"columnFamily":"cf","commitTimestamp":1695653833064548,"sourceInstance":"YOUR-INSTANCE","sourceCluster":"YOUR-INSTANCE-c1","sourceTable":"change-streams-pubsub-tutorial","column":{"bytes":"col1"},"timestamp":{"long":1695653832278000},"timestampFrom":null,"timestampTo":null,"value":{"bytes":"ghi"}}

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

מחיקת טבלת Bigtable

  1. נכנסים לדף Instances של Bigtable במסוף Google Cloud .

    כניסה לדף Instances

  2. לוחצים על המזהה של המופע שבו משתמשים במדריך הזה.

  3. בחלונית הניווט שמשמאל, לוחצים על Tables (טבלאות).

  4. מאתרים את הטבלה change-streams-pubsub-tutorial.

  5. לוחצים על Edit.

  6. מבטלים את הסימון של הפעלת זרם שינויים.

  7. לוחצים על Save.

  8. פותחים את התפריט 'אפשרויות נוספות' של הטבלה.

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

הפסקת צינור עיבוד הנתונים של שינוי השידור החי

  1. נכנסים לדף Jobs ב-Dataflow במסוף Google Cloud .

    מעבר אל Jobs

  2. בוחרים את משימת הסטרימינג מרשימת המשימות.

  3. בסרגל הניווט, לוחצים על עצירה.

  4. בתיבת הדו-שיח Stop job (הפסקת העבודה), מבטלים את צינור הנתונים ולוחצים על Stop job (הפסקת העבודה).

מחיקת הנושא והמינוי ב-Pub/Sub

  1. נכנסים לדף Topics של Pub/Sub במסוף Google Cloud .

    לדף Topics

  2. בוחרים את הנושא bigtable-change-stream-topic.

  3. לוחצים על מחיקה ומאשרים את הפעולה.

  4. בסרגל הצד, לוחצים על מינויים.

  5. בוחרים את המינוי ל-bigtable-change-stream-topic-sub.

  6. לוחצים על מחיקה ומאשרים את הפעולה.

מחיקת פונקציית Cloud Run

  1. במסוף Google Cloud , נכנסים אל Cloud Run functions.

    כניסה לדף Cloud Run functions

  2. בוחרים בפונקציה bt-ps-tutorial-function.

  3. לוחצים על מחיקה ומאשרים את הפעולה.

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