הזרמת שינויים ל-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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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. לוחצים על Create (יצירה) כדי ליצור את הסכימה.
  6. סוגרים את הכרטיסייה יצירת סכימה, מרעננים את רשימת הסכימות ובוחרים את הסכימה החדשה שהגדרתם.

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

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

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

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

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

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

    כניסה לדף Instances

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

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

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

  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. בחלונית הניווט הימנית, לוחצים על טבלאות.

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

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

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

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

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

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

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

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

    מעבר לדף 'משרות'

  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. לוחצים על מחיקה ומאשרים.

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