הפצה בצד הלקוח ב-Knowledge Catalog (לשעבר Dataplex Universal Catalog) מאפשרת להשתמש ב-Data Lineage API כדי לאחזר ולצבור קישורים של שושלת נתונים בכמה אזורים ב- Google Cloud . שליחת שאילתות לנקודות קצה אזוריות במקביל עוזרת ליצור תצוגת שושלת מאוחדת כשנכסי הנתונים נמצאים במיקומים שונים.
למה כדאי להשתמש ב-fan-out בצד הלקוח?
גישת ה-fan-out בצד הלקוח שימושית כשנכסי הנתונים מפוזרים במיקומים שונים, ואתם רוצים לתזמר שאילתות אזוריות בצד הלקוח. אתם יכולים להשתמש בגישה הזו כדי לאחזר ולצבור נתוני שושלת מכל האזורים הזמינים כשאתם עוקבים אחרי שושלת של דילוג אחד בקבוצה ידועה של אזורים, או כשאתם שומרים על תאימות לתהליכי עבודה קיימים של projects.locations.searchLinks.
מידע נוסף זמין במאמר מידע על חיפוש שושלת נתונים במספר אזורים.
קוד מדומה שלב אחר שלב
הפרוצדורה שולחת בקשות מקבילות לנקודת הקצה projects.locations.searchLinks בכל אזור. אתם אוספים את התוצאות, מטפלים בחלוקה לדפים באזורים שונים ומצרפים את הקישורים שנמצאו. כדי לוודא שהעימוד יהיה עקבי בקריאות הבאות, צריך לנהל regionalPageToken. ההגדרה הזו מביאה בחשבון אזורים שאי אפשר להגיע אליהם.
הקוד המדומה הבא מתאר הליך שאפשר לבצע באמצעות Data Lineage API כדי לאחזר קישורים של שושלת נתונים מכל האזורים הזמינים.
- הגדרת קלט:
-
linksToFetch= 5 (מספר הקישורים לאחזור מכל האזורים) regionalPageToken= "" (האסימון האחרון שהתקבל לדף האזורי שמשמש לעימוד)
-
- יצירה:
- רשימה של כל האזורים להפצה שנקראת
regions. - רשימה של אזורים שאי אפשר להגיע אליהם בשם
unreachable. - רשימה ריקה של קישורים שנמצאו בשם
foundLinks. - משתנה ריק
nextPageTokenו-nextRegionalPageToken. - משתנה ריק
lastRegion. - משתנה ריק
lastRegionLinksCount.
- רשימה של כל האזורים להפצה שנקראת
- מיון
regionsלפי סדר אלפביתי. - ניתוח
regionalPageToken- אם הוא ריק, ממשיכים לשלב 5.
- אם הוא לא ריק,
- מנתחים את
regionalPageTokenעל ידי פיצול לפי הנקודה הראשונה לשני פלחים - לסנן אזורים על ידי בחירה רק באלה שנמצאים אחרי (בסדר אלפביתי) הפלח הראשון מ-
regionalPageTokenשנותח. - שומרים את החלק השני בצד כדי להשתמש בו בכל הקריאות ל-projects.locations.searchLinks.
- מנתחים את
- שולחים קריאה ל-projects.locations.searchLinks בכל אזור ברשימה
regionsבמקביל. - מחכים שכל הבקשות יסתיימו.
- מסננים את התגובות המוצלחות ושומרים את שמות האזורים שנכשלו ברשימה
unreachable. - לכל אחת מהתגובות (החל מהאזור הראשון בסדר אלפביתי)
- אם לא הוחזרו קישורים יחד עם אסימון דף לא ריק
- שם האזור של החנות ב
lastRegion. - שומרים את ה-pageToken שהתקבל ב-
nextPageToken. - להתעלם משאר התשובות.
- שם האזור של החנות ב
- אחרת
- שם האזור של החנות ב
lastRegion. - לשמור קישורים שהתקבלו ב-
foundLinks(עדlinksToFetch). - שומרים את ה-pageToken שהתקבל ב-
nextPageToken. - שמירת מספר הקישורים שנלקחו מהתשובה ב-
lastRegionLinksCount. - אם
foundLinksקטן מ-linksToFetch- ממשיכים את הקוד המדומה עם התשובה הבאה שהתקבלה לפי סדר אלפביתי.
- אם
foundLinksשווה ל-linksToFetch- שולחים בקשה נוספת לנקודת הקצה projects.locations.searchLinks באותו אזור, אבל מגדירים את הפרמטר
pageSizeלערך שלlastRegionLinksCount. - שומרים את ה-pageToken שהתקבל ב-
nextPageToken. - עוברים לשלב 9.
- שולחים בקשה נוספת לנקודת הקצה projects.locations.searchLinks באותו אזור, אבל מגדירים את הפרמטר
- שם האזור של החנות ב
- אם לא הוחזרו קישורים יחד עם אסימון דף לא ריק
- מוסיפים את
lastRegionלפניnextPageToken(כלומר[region].[receivedNextPageToken]) כדי ליצור אתnextRegionalPageTokenלטיפול במספור דפים בקריאות עוקבות.