עיצוב נגדי: הפעלת שרת proxy בתוך שרת proxy באמצעות קוד מותאם אישית או כיעד

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

באמצעות Edge אפשר להפעיל שרת proxy אחד של API משרת Proxy אחר של API. התכונה הזו שימושית במיוחד אם יש לכם שרת proxy ל-API שמכיל קוד לשימוש חוזר שיכול לשמש שרתי proxy אחרים של API.

דוגמת עיצוב

הפעלת שרת Proxy אחד של API לאחר שימוש ב-HTTPTargetConnection בנקודת הקצה של היעד או בקוד JavaScript בהתאמה אישית מובילה לקפיצה נוספת ברשת.

הפעלת שרת Proxy 2 משרת Proxy 1 באמצעות HTTPTargetConnection

דוגמת הקוד הבאה מפעילה את Proxy 2 משרת Proxy 1 באמצעות HTTPTargetConnection:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>http://myorg-test.apigee.net/proxy2</URL>
</HTTPTargetConnection>

הפעלת שרת Proxy 2 משרת Proxy 1 מקוד ה-JavaScript

דוגמת הקוד הבאה מפעילה את שרת Proxy 2 משרת Proxy 1 באמצעות JavaScript:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

זרימת קוד

כדי להבין למה יש חיסרון מהותי, עלינו להבין את המסלול של הבקשה, כפי שמתואר בתרשים הבא:

איור 1: תהליך הקוד

כפי שמתואר בתרשים, הבקשה עוברת על פני מספר רכיבים מבוזרים, כולל הנתב ומעבד ההודעות.

בדוגמאות הקוד שלמעלה, אם מפעילים את שרת Proxy 2 משרת Proxy 1, הבקשה צריכה להיות מנותבת דרך הנתיב הרגיל (לדוגמה Router > MP) בזמן הריצה. הפעולה הזו דומה להפעלה של API מהלקוח, וכך לבצע כמה פעולות רשת שמאריכות את זמן האחזור. אין צורך לבצע את הצעדים האלה, כי בקשת ה-Proxy 1 כבר 'הגיעה' ל-MP.

השפעה

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

שיטה מומלצת

  • משתמשים בתכונה שרת proxy כדי להפעיל שרת proxy אחד של API מתוך שרת proxy אחר. יצירת שרשור של שרת Proxy יעילה יותר כי נעשה בה שימוש בחיבור מקומי להפניה לנקודת הקצה (endpoint) של היעד (שרת proxy אחר ל-API).

    דוגמת הקוד מציגה שרשור של שרת proxy באמצעות LocalTargetConnection בהגדרה של נקודת הקצה:

    <!-- /antipatterns/examples/2-3.xml -->
    <LocalTargetConnection>
      <APIProxy>proxy2</APIProxy>
      <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
    

    שרת ה-Proxy שמופעל ב-API מופעל בתוך אותו מעבד הודעות. כתוצאה מכך, הוא נמנע מקפיצה ברשת כפי שמתואר באיור הבא:

    איור 2: תהליך קוד עם שרשור של שרת proxy

קריאה נוספת