SmugMug מפעילה שתי פלטפורמות צילום מקוונות גדולות מאוד, SmugMug ו פליקר, המאפשר ליותר מ-100 מיליון לקוחות לאחסן, לחפש, לשתף ולמכור בבטחה עשרות מיליארדי תמונות. לקוחות שהעלו וחיפשו במשך עשרות שנים של תמונות עזרו להפוך את החיפוש לתשתית קריטית, וגדלה בהתמדה מאז השימוש הראשון ב- SmugMug Amazon CloudSearch בשנת 2012 ואחריו שירות חיפוש פתוח של אמזון מאז 2018, לאחר שהגיע למיליארדי מסמכים וטרה-בייט של אחסון חיפוש.
כאן, Lee Shepherd, מהנדס צוות SmugMug, חולק את ארכיטקטורת החיפוש של SmugMug המשמשת לפרסום, מילוי חוזר ושיקוף תנועה חיה למספר אשכולות. SmugMug משתמשת בצינורות אלה כדי לבדוק, לאמת ולהעביר לתצורות חדשות, כולל מופעי r6gd.2xlarge מבוססי Graviton מ-i3.2xlarge, יחד עם בדיקות Amazon OpenSearch ללא שרתים. אנו מכסים שלושה צינורות המשמשים לפרסום, מילוי חוזר ושאילתות מבלי להציג דפוסי תעבורה לא מציאותיים, וללא כל השפעה על שירותי הייצור.
ישנם שני חלקים אדריכליים עיקריים קריטיים לתהליך:
- מקור עמיד של אמת לנתוני אינדקס. זה התרגול הטוב ביותר וחלק מאסטרטגיית הגיבוי שלנו לחנות עמידה מעבר לאינדקס OpenSearch, ו אמזון דינמו מספק מדרגיות ואינטגרציה עם AWS למבדה זה מפשט הרבה מהתהליך. אנו משתמשים ב-DynamoDB עבור שירותים אחרים שאינם חיפוש, אז זה היה התאמה טבעית.
- פונקציית Lambda לפרסום נתונים ממקור האמת לתוך OpenSearch. באמצעות כינויי פונקציה עוזר להפעיל מספר תצורות של אותה פונקציית Lambda בו-זמנית והוא המפתח לשמירה על סנכרון נתונים.
הוצאה לאור
צינור הפרסום מונע מאירועים כמו משתמש שמזין מילות מפתח או כיתובים, העלאות חדשות או זיהוי תוויות דרך אמזון. אירועים אלה מעובדים, תוך שילוב נתונים מכמה חנויות נכסים אחרות כמו מהדורה תואמת אמזון אורורה MySQL ו שירות אחסון פשוט של אמזון (Amazon S3), לפני כתיבת פריט בודד לתוך DynamoDB.
כתיבה ל-DynamoDB מעוררת פונקציית פרסום של Lambda, דרך ה מתאם Kinesis של DynamoDB Streams, שלוקח אצווה של פריטים מעודכנים מ-DynamoDB ומוסיף אותם לאינדקס ל-OpenSearch. ישנם יתרונות נוספים לשימוש במתאם ה-Kinesis של DynamoDB Streams כגון הפחתת מספר הלמבדות הנדרשות במקביל.
פונקציית Lambda המפרסמת משתמשת במשתני סביבה כדי לקבוע באיזה תחום ואינדקס של OpenSearch לפרסם. כינוי ייצור מוגדר לכתוב לדומיין הייצור OpenSearch, מחוץ לטבלת DynamoDB או Kinesis Stream
בעת בדיקת תצורות חדשות או העברה, כינוי העברה מוגדר לכתוב לדומיין החדש של OpenSearch אך להשתמש באותו טריגר כמו כינוי הייצור. זה מאפשר אינדקס כפול של נתונים לשני התחומים של OpenSearch Service בו-זמנית.
הנה דוגמה לסכימת טבלת DynamoDB:
הערך 'LastUpdated' משמש כגרסת המסמך בעת הוספה לאינדקס, מה שמאפשר ל-OpenSearch לדחות כל עדכונים שאינם בסדר.
מילוי חוזר
כעת, לאחר שמתפרסמים שינויים בשני הדומיינים, יש למלא את הדומיין החדש (אינדקס) בנתונים היסטוריים. למילוי חוזר של אינדקס חדש שנוצר, שילוב של שירות תורים פשוט של אמזון (Amazon SQS) ו-DynamoDB משמש. סקריפט מאכלס תור SQS בהודעות המכילות הוראות עבור סריקה מקבילה קטע של טבלת DynamoDB.
תור SQS משיק פונקציית Lambda שקוראת את הוראות ההודעה, שואבת אצווה של פריטים מהקטע המתאים של טבלת DynamoDB וכותבת אותם לאינדקס OpenSearch. הודעות חדשות נכתבות לתור SQS כדי לעקוב אחר ההתקדמות בקטע. לאחר סיום הקטע, לא נכתבות יותר הודעות לתור SQS והתהליך עוצר מעצמו.
במקביל נקבעת על פי מספר המקטעים, עם פקדים נוספים המסופקים על ידי קנה המידה של מקבילות Lambda. SmugMug מסוגלת להוסיף לאינדקס יותר ממיליארד מסמכים בשעה על תצורת ה-OpenSearch שלהם, תוך כדי אפס השפעה על תחום הייצור.
נעשה שימוש בסקריפט מבוסס NodeJS AWS-SDK כדי להתחיל את תור ה-SQS. להלן קטע מהאפשרויות של סקריפט תצורת SQS:
יחד עם הפורמט של הודעת SQS שהתקבלה:
שיקוף
אחרון, שלנו שאילתת חיפוש מוקרנת תוצאות מופעלות על ידי שליחת שאילתת OpenSearch לתור SQS, בנוסף לתחום הייצור שלנו. תור SQS משיק פונקציית Lambda שמשמיעה מחדש את השאילתה לתחום העתק. תוצאות החיפוש מבקשות אלו אינן נשלחות לאף משתמש אך מאפשרות לשכפל עומס ייצור בשירות OpenSearch הנבדק ללא השפעה על מערכות הייצור או הלקוחות.
סיכום
בעת הערכת דומיין או תצורה חדשה של OpenSearch, המדדים העיקריים שבהם אנו מעוניינים הם ביצועי השהייה של שאילתות, כלומר השהיות שנלקחו (השהיות לכל זמן), והכי חשוב השהיות לחיפוש. במעבר שלנו ל-Graviton R6gd, ראינו זמן אחזור P40-P50 נמוך בכ-99 אחוז, יחד עם רווחים דומים בשימוש ב-CPU בהשוואה ל-i3 (בהתעלם מהעלויות הנמוכות יותר של Graviton). יתרון מבורך נוסף היה לחץ הזיכרון ה-JVM הניתן לחיזוי וניתן יותר לניטור עם שינויים באיסוף האשפה מהתוספת של G1GC ב-R6gd ומופעים חדשים אחרים.
באמצעות צינור זה, אנו גם בודקים את OpenSearch Serverless ומוצאים את מקרי השימוש הטובים ביותר שלו. אנחנו נרגשים מהשירות הזה ומתכוונים לחלוטין לקבל ארכיטקטורה נטולת שרתים עם הזמן. הישארו מעודכנים לתוצאות.
על הכותבים
לי שפרד הוא מהנדס תוכנה לצוות SmugMug
עידן בקירוב הוא מנהל חשבון טכני ראשי של Amazon Web Services
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :הוא
- :לֹא
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- יכול
- אודות
- חֶשְׁבּוֹן
- הוסיף
- תוספת
- נוסף
- לאחר
- להתיר
- מאפשר
- לאורך
- גם
- אמזון בעברית
- אמזון שירותי אינטרנט
- an
- ו
- אחר
- כל
- אדריכלי
- ארכיטקטורה
- ARE
- AS
- נכס
- At
- כּוֹכָב הַשַׁחַר
- AWS
- גיבוי
- מבוסס
- BE
- לפני
- להיות
- בנצ 'מרק
- תועלת
- הטבות
- הטוב ביותר
- מעבר
- B
- מיליארדים
- שניהם
- אבל
- by
- כיתובים
- שינויים
- אוסף
- שילוב
- שילוב
- לעומת
- תואם
- הושלם
- במקביל
- תְצוּרָה
- מוגדר
- להכיל
- בקרות
- תוֹאֵם
- עלויות
- לכסות
- CPU
- נוצר
- קריטי
- תשתית קריטית
- לקוחות
- נתונים
- עשרות שנים
- איתור
- לקבוע
- נחוש
- מסמך
- מסמכים
- תחום
- תחומים
- מונע
- כל אחד
- מאפשר
- מה שמאפשר
- נקודת קצה
- מהנדס
- הזנת
- לַחֲלוּטִין
- סביבה
- Ether (ETH)
- הערכה
- אירועים
- דוגמה
- נרגש
- מעטים
- שדות
- מציאת
- ראשון
- מתאים
- בעקבות
- בעד
- פוּרמָט
- החל מ-
- לגמרי
- פונקציה
- רווחים
- גדל
- יש
- גובה
- עזר
- עוזר
- היסטורי
- שעה
- HTML
- http
- HTTPS
- i
- i3
- ID
- פְּגִיעָה
- חשוב
- in
- כולל
- מדד
- אינדקסים
- תשתית
- מקרים
- הוראות
- השתלבות
- בכוונת
- מעוניין
- אל תוך
- החדרה
- מעורר
- פריטים
- איטרציה
- שֶׁלָה
- עצמו
- jpg
- שמור
- שמירה
- מפתח
- מילות מפתח
- תווית
- גָדוֹל
- חֶבִיוֹן
- השקות
- מחסה
- כמו
- לחיות
- לִטעוֹן
- מגרש
- להוריד
- ראשי
- זכרון
- הודעה
- הודעות
- מדדים
- נודד
- נודד
- הֲגִירָה
- מִילִיוֹן
- מיליון לקוחות
- ראי
- יותר
- רוב
- המהלך
- מספר
- MySQL
- שם
- כלומר
- טבעי
- צרכי
- חדש
- חדש
- הבא
- לא
- מספר
- of
- כבוי
- on
- באינטרנט
- פועל
- אפשרויות
- אופטי
- or
- אחר
- שלנו
- מקביל
- חלק
- דפוסי
- עבור
- אָחוּז
- ביצועים
- צילום
- תמונות
- חתיכות
- צינור
- פלטפורמות
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- צפוי
- לחץ
- קודם
- מנהל
- תהליך
- מעובד
- הפקה
- התקדמות
- ובלבד
- מספק
- לפרסם
- לאור
- הוצאה לאור
- הגעה
- הפחתה
- תגובה
- בקשות
- נדרש
- וכתוצאה מכך
- תוצאות
- הפעלה
- בבטחה
- אותו
- ראה
- בקרת מערכות ותקשורת
- דרוג
- תסריט
- חיפוש
- חיפוש
- זרע
- קטע
- מגזרים
- למכור
- שליחה
- נשלח
- ללא שרת
- שרות
- שירותים
- שיתוף
- שיתופים
- דומה
- פָּשׁוּט
- בו זמנית
- since
- יחיד
- קטע
- So
- תוכנה
- מָקוֹר
- סגל
- להשאר
- בהתמדה
- עוצר
- אחסון
- חנות
- חנויות
- אִסטרָטֶגִיָה
- זרמים
- כזה
- מערכות
- שולחן
- לוקח
- טכני
- עשרות
- מבחן
- בדיקות
- מֵאֲשֶׁר
- זֶה
- השמיים
- המקור
- שֶׁלָהֶם
- אותם
- שם.
- אלה
- זֶה
- שְׁלוֹשָׁה
- דרך
- זמן
- ל
- לקח
- לעקוב
- תְנוּעָה
- להפעיל
- אמת
- תור
- שתיים
- תחת
- מְעוּדכָּן
- עדכונים
- העלאה
- כתובת האתר
- נוֹהָג
- להשתמש
- מקרים לשימוש
- מְשׁוּמָשׁ
- משתמש
- שימושים
- באמצעות
- לְאַמֵת
- ערך
- גרסה
- מאוד
- היה
- we
- אינטרנט
- שירותי אינטרנט
- ברוך הבא
- מה
- מתי
- בזמן
- עם
- לְלֹא
- לכתוב
- כתיבה
- כתוב
- זפירנט
- אפס