הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
שמירת נתונים במטמון היא תהליך של אחסון נתונים באופן זמני באזור אחסון שנקרא מטמון, כדי שאפשר יהיה להשתמש בהם בעתיד. שמירת נתונים במטמון מניבה שיפור משמעותי בביצועים כי היא:
- מאפשר שליפה מהירה יותר של נתונים
- היא מקצרת את זמן העיבוד כי היא מונעת יצירה חוזרת של נתונים שוב ושוב
- מונעת מבקשות API להגיע לשרתי הקצה העורפי, וכך מצמצמת את העומס על שרתי הקצה העורפי.
- מאפשר ניצול טוב יותר של משאבי המערכת או האפליקציה
- שיפור זמני התגובה של ממשקי API
בכל פעם שאנחנו צריכים לגשת לעיתים קרובות לנתונים מסוימים שלא משתנים לעיתים קרובות, מומלץ מאוד להשתמש במטמון כדי לאחסן את הנתונים האלה.
Apigee מאפשרת לאחסן נתונים במטמון בזמן הריצה כדי לשמור אותם ולאחזר אותם מהר יותר. תכונת השמירה במטמון זמינה דרך המדיניות PopulateCache, המדיניות LookupCache, המדיניות InvalidateCache והמדיניות ResponseCache.
בקטע הזה נבחן את המדיניות בנושא מטמון תגובות. המדיניות של מטמון התגובות בפלטפורמת Apigee מאפשרת לכם לשמור במטמון את התגובות משרתי הקצה העורפי. אם אפליקציות הלקוח שולחות בקשות לאותו משאב 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: כשלים מתרחשים לתקופה זמנית ולא ידועה, ויכול להיות שנמשיך לשלוח תגובות שגיאה בגלל שמירה במטמון גם אחרי שהבעיה תוקנה
או
- תרחיש 2: נצפה בכשלים למשך תקופה קבועה, ואז נצטרך לשנות את הקוד כדי למנוע שמירה במטמון של תגובות אחרי שהבעיה תיפתר
כדי להסביר את זה, נבחן את שני התרחישים האלה בפירוט רב יותר.
תרחיש 1: כשל זמני בשרת העורפי או במשאב
השגיאה בשרת העורפי יכולה לקרות בגלל אחת מהסיבות הבאות:
- תקלה זמנית ברשת
- שרת הקצה העורפי עמוס מאוד ולא יכול להגיב לבקשות לתקופה זמנית
- יכול להיות שהמשאב המבוקש בשרת העורפי הוסר או שהוא לא זמין לתקופה מסוימת
- השרת העורפי מגיב לאט בגלל זמן עיבוד ארוך לתקופה זמנית, וכו'
בכל המקרים האלה, יכול להיות שהשגיאות יתרחשו למשך פרק זמן לא ידוע, ואז נתחיל לקבל תשובות תקינות. אם נשמור במטמון את תגובות השגיאה, יכול להיות שנמשיך לשלוח תגובות שגיאה למשתמשים גם אחרי שהבעיה בשרת העורפי תוקנה.
תרחיש 2: כשל ממושך או קבוע בבק-אנד או במשאב
חשוב לזכור שאנחנו יודעים שהכשל בקצה העורפי הוא לפרק זמן קבוע. לדוגמה, אתם יודעים שאחד מהמקרים הבאים מתקיים:
- משאב ספציפי בעורף המערכת לא יהיה זמין למשך שעה
או
- השרת העורפי הוסר או לא זמין למשך 24 שעות בגלל כשל פתאומי באתר, בעיות בהתאמת גודל, תחזוקה, שדרוג וכו'.
בעזרת המידע הזה, נוכל להגדיר את זמן התפוגה של הנתונים במטמון בצורה מתאימה במדיניות של מטמון התגובות, כדי שלא נשמור במטמון את תגובות השגיאה למשך זמן ארוך יותר. עם זאת, אחרי ששרת הקצה העורפי או המשאב יהיו זמינים שוב, נצטרך לשנות את המדיניות כדי למנוע שמערכת ה-CDN תשמור במטמון תשובות שגיאה. הסיבה לכך היא שאם יש כשל זמני או חד-פעמי בשרת העורפי, נשמור את התגובה במטמון ונגיע לבעיה שמוסברת בתרחיש 1 למעלה.
השפעה
- שמירת תגובות שגיאה במטמון עלולה לגרום לשליחת תגובות שגיאה גם אחרי שהבעיה נפתרה בשרת העורפי.
- יכול להיות שמשתמשים ישקיעו מאמץ רב בפתרון בעיות בלי לדעת שהן נגרמות בגלל שמערכת ה-caching שומרת את תגובות השגיאה מהשרת העורפי
שיטה מומלצת
- לא לאחסן את תגובות השגיאה במטמון התגובות. כדי למנוע שמירת תגובות שגיאה במטמון, צריך לוודא שהרכיב
<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 משרתי קצה עורפיים.