אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
שמירת נתונים במטמון היא תהליך של אחסון נתונים באופן זמני באזור אחסון שנקרא מטמון, כדי שאפשר יהיה להשתמש בהם בעתיד. שמירת נתונים במטמון מניבה שיפור משמעותי בביצועים כי היא:
- מאפשר שליפה מהירה יותר של נתונים
- היא מקצרת את זמן העיבוד כי היא מונעת יצירה חוזרת של נתונים שוב ושוב
- מונעת מבקשות API להגיע לשרתי הקצה העורפי, וכך מצמצמת את העומס על שרתי הקצה העורפי.
- מאפשר ניצול טוב יותר של משאבי המערכת או האפליקציה
- שיפור זמני התגובה של ממשקי API
בכל פעם שאנחנו צריכים לגשת לעיתים קרובות לנתונים מסוימים שלא משתנים לעיתים קרובות, מומלץ מאוד להשתמש במטמון כדי לאחסן את הנתונים האלה.
ב-Apigee Edge אפשר לאחסן נתונים במטמון בזמן הריצה כדי לשמור אותם ולאחזר אותם מהר יותר. תכונת השמירה במטמון זמינה דרך המדיניות PopulateCache, LookupCache, InvalidateCache ו-ResponseCache.
בקטע הזה נבחן את מדיניות המטמון של התגובות. המדיניות Response Cache בפלטפורמת Apigee Edge מאפשרת לכם לשמור במטמון את התגובות משרתי הקצה העורפי. אם אפליקציות הלקוח שולחות בקשות לאותו משאב backend שוב ושוב, והמשאב מתעדכן מעת לעת, אפשר לשמור את התגובות האלה במטמון באמצעות המדיניות הזו. מדיניות מטמון התגובות עוזרת להחזיר את התגובות שנשמרו במטמון, וכתוצאה מכך למנוע העברה של הבקשות לשרתי הקצה העורפי שלא לצורך.
המדיניות בנושא מטמון תגובות:
- מצמצם את מספר הבקשות שמגיעות לקצה העורפי
- צמצום רוחב הפס ברשת
- שיפור הביצועים וזמני התגובה של ה-API
תבנית אנטי
המדיניות ResponseCache מאפשרת לשמור במטמון תגובות HTTP עם כל קוד סטטוס אפשרי, כברירת מחדל. כלומר, אפשר לשמור במטמון גם תגובות של הצלחה וגם תגובות של שגיאה.
זוהי דוגמה למדיניות של מטמון תגובות עם הגדרות ברירת מחדל:
<!-- /antipatterns/examples/1-1.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="TargetServerResponseCache"> <DisplayName>TargetServer ResponseCache</DisplayName> <CacheKey> <Key Fragment ref="request.uri" /></CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutInSec ref="flow.variable.here">600</TimeoutInSec> </ExpirySettings> <CacheResource>targetCache</CacheResource> </ResponseCache>
המדיניות Response Cache (מטמון תגובות) שומרת במטמון תגובות לשגיאות בהגדרות ברירת המחדל שלה. עם זאת, לא מומלץ לשמור במטמון תשובות לשגיאות בלי לחשוב היטב על ההשלכות השליליות, כי:
- תרחיש 1: כשלים מתרחשים למשך תקופה זמנית לא ידועה, ויכול להיות שנמשיך לשלוח תגובות שגיאה בגלל שמירה במטמון גם אחרי שהבעיה תוקנה
OR
- תרחיש 2: נצפה בכשלים למשך תקופה קבועה, ואז נצטרך לשנות את הקוד כדי למנוע שמירה במטמון של תגובות אחרי שהבעיה תיפתר
כדי להסביר את זה, נבחן את שני התרחישים האלה בפירוט רב יותר.
תרחיש 1: כשל זמני בשרת העורפי או במשאב
השגיאה בשרת העורפי יכולה לקרות בגלל אחת מהסיבות הבאות:
- תקלה זמנית ברשת
- שרת הקצה העורפי עמוס מאוד ולא יכול להגיב לבקשות לתקופה זמנית
- יכול להיות שהמשאב המבוקש בשרת העורפי הוסר או שהוא לא זמין לתקופה מסוימת
- השרת העורפי מגיב לאט בגלל זמן עיבוד ארוך לתקופה זמנית, וכו'
בכל המקרים האלה, יכול להיות שהשגיאות יתרחשו למשך פרק זמן לא ידוע, ואז נתחיל לקבל תשובות מוצלחות. אם נשמור במטמון את תגובות השגיאה, יכול להיות שנמשיך לשלוח תגובות שגיאה למשתמשים גם אחרי שהבעיה בשרת העורפי תוקנה.
תרחיש 2: כשל ממושך או קבוע בבק-אנד או במשאב
נניח שאנחנו יודעים שהכשל בקצה העורפי יימשך פרק זמן קבוע. לדוגמה, אתם יודעים שאחד מהמקרים הבאים מתקיים:
- משאב ספציפי בעורף המערכת לא יהיה זמין למשך שעה
OR
- השרת העורפי הוסר או לא זמין למשך 24 שעות בגלל כשל פתאומי באתר, בעיות בהתאמת גודל, תחזוקה, שדרוג וכו'.
בעזרת המידע הזה, נוכל להגדיר את זמן התפוגה של מטמון בצורה מתאימה במדיניות של מטמון התגובות, כדי שלא נשמור במטמון את תגובות השגיאה למשך זמן ארוך יותר. עם זאת, אחרי ששרת הקצה העורפי או המשאב יהיו זמינים שוב, נצטרך לשנות את המדיניות כדי למנוע שמערכת ה-CDN תשמור במטמון תשובות שגיאה. הסיבה לכך היא שאם יש כשל זמני או חד-פעמי בשרת העורפי, נשמור את התגובה במטמון ונגיע לבעיה שמוסברת בתרחיש 1 שלמעלה.
השפעה
- שמירת תגובות שגיאה במטמון עלולה לגרום לשליחת תגובות שגיאה גם אחרי שהבעיה נפתרה בשרת העורפי
- יכול להיות שמשתמשים ישקיעו מאמץ רב בפתרון בעיות בלי לדעת שהן נגרמות בגלל שמירת תגובות השגיאה במטמון מהשרת העורפי.
שיטה מומלצת
- לא לאחסן את תגובות השגיאה במטמון התגובות. כדי למנוע שמירת תגובות שגיאה במטמון, צריך לוודא שהרכיב
<ExcludeErrorResponse>מוגדר ל-trueבמדיניות ResponseCache, כמו בקטע הקוד שבהמשך. עם ההגדרה הזו, רק התשובות לקודי ההצלחה שמוגדרים כברירת מחדל (200 עד 205) יישמרו במטמון (אלא אם קודי ההצלחה ישונו).<!-- /antipatterns/examples/1-2.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="TargetServerResponseCache"> <DisplayName>TargetServerResponseCache</DisplayName> <CacheKey> <KeyFragment ref="request.uri" /> </CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <TimeoutinSec ref="flow.variable.here">600</TimeoutinSec> </ExpirySettings> <CacheResource>targetCache</CacheResource> <ExcludeErrorResponse>true</ExcludeErrorResponse> </ResponseCache>
- אם יש לכם דרישה לשמור במטמון את תגובות השגיאה מסיבה ספציפית, תוכלו לקבוע את משך הזמן המקסימלי או המדויק שבו השגיאה תופיע (אם אפשר):
- מגדירים את זמן התפוגה בהתאם כדי לוודא שלא מתבצעת שמירה במטמון של תגובות השגיאה למשך זמן ארוך יותר מהזמן שבו הכשל יכול להיות גלוי.
- משתמשים במדיניות ResponseCache כדי לשמור במטמון את תגובות השגיאה ללא הרכיב
<ExcludeErrorResponse>.
מבצעים את הפעולה הזו רק אם בטוחים לחלוטין שהכשל בשרת הקצה העורפי לא יתרחש לתקופה קצרה או זמנית.
- Apigee לא ממליצה לשמור במטמון תגובות 5xx משרתי קצה עורפיים.