שימוש ביישומי פלאגין

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

Edge Microgateway v. 3.0.x

קהל

הנושא הזה מיועד למפעילי Edge Microgateway שרוצים להשתמש ביישומי פלאגין קיימים מותקנות באמצעות המיקרו-שער. הוא דן גם ביישומי פלאגין של מכסה ומעצר עלייה חדה (שניהם כלולים בהתקנה). אם אתם מפתחים שרוצים לפתח יישומי פלאגין, ראו פיתוח יישומי פלאגין בהתאמה אישית.

מה זה פלאגין של Edge Microgateway?

פלאגין הוא מודול Node.js שמוסיף פונקציונליות ל-Edge Microgateway. מודולים של יישומי פלאגין להשתמש בדפוס עקבי והם מאוחסנים במיקום שמוכר ל-Edge Microgateway, כך מעבר למיקרו-שער כדי לגלות ולטעון אותן באופן אוטומטי. Microgateway של Edge כולל כמה יישומי פלאגין נוספים ואפשר גם ליצור יישומי פלאגין מותאמים אישית, כפי שמוסבר במאמר פיתוח יישומי פלאגין מותאמים אישית.

יישומי פלאגין קיימים בחבילה עם Edge מיקרוגייט

כמה יישומי פלאגין קיימים מסופקים עם Edge Microgateway בזמן ההתקנה. האלה כוללים:

יישומי פלאגין מופעל כברירת מחדל תיאור
Analytics כן שליחת ניתוח נתונים מ-Edge Microgateway ל-Apigee Edge.
oauth כן הוספת אסימון OAuth ואימות של מפתח API ל-Edge Microgateway. ראו הגדרות הגדרה והגדרה של Edge Microgateway.
מכסה לא אכיפת מכסות על בקשות ל-Edge Microgateway. משתמש ב-Apigee Edge כדי לאחסן ולנהל את המכסות. ראו שימוש בפלאגין המכסה.
Spikearrest לא הגנה מפני עליות חדות בתעבורת נתונים והתקפות מניעת שירות (DoS). למידע נוסף, כדאי לעיין במאמר בנושא שימוש בפלאגין לעצירת נקודות שיא.
header-uppercase לא שרת proxy לדוגמה עם הערות שנועד לעזור למפתחים לכתוב יישומי פלאגין מותאמים אישית. ראו פלאגין לדוגמה של Edge Microgateway.
accumulate-request לא צבירת נתוני בקשות לאובייקט יחיד לפני העברת הנתונים לאובייקט הבא ה-handler בשרשרת של יישומי הפלאגין. שימושי לכתיבת יישומי פלאגין לטרנספורמציה שצריכים לפעול על אובייקט אחד של תוכן הבקשה המצטבר.
accumulate-response לא צבירת נתוני תגובות לאובייקט יחיד לפני העברת הנתונים לאובייקט הבא ה-handler בשרשרת של יישומי הפלאגין. שימושי לכתיבת יישומי פלאגין לטרנספורמציה שצריכים לפעול על אובייקט אחד של תוכן התגובה שהצטבר.
transform-uppercase לא משנה נתוני בקשה או תגובה. הפלאגין הזה מייצג שיטה מומלצת של פלאגין טרנספורמציה. הפלאגין לדוגמה מבצע טרנספורמציה טריוויאלית (ממירה את נתוני הבקשה או התגובה לאותיות רישיות); אבל אפשר להתאים אותו בקלות לבצע סוגים אחרים של טרנספורמציות, למשל מ-XML ל-JSON.
json2xm לא משנה את נתוני הבקשה או התגובה על סמך כותרות קבלה או סוג תוכן. עבור פרטים נוספים, לעיון בפלאגין מסמכים ב-GitHub.
מכסה-זיכרון לא אכיפת מכסות על בקשות ל-Edge Microgateway. אחסון וניהול מכסות בממשק המקומי זיכרון.
בדיקת תקינות לא מחזירה מידע על תהליך Edge Microgateway - שימוש בזיכרון, שימוש במעבד (CPU), וכו'. כדי להשתמש בפלאגין, צריך לקרוא לכתובת ה-URL /healthcheck ב-Edge. מכונת Microgateway. הפלאגין הזה נועד להיות דוגמה שאפשר להשתמש בה להטמיע פלאגין משלכם לבדיקת התקינות.

איפה למצוא יישומי פלאגין קיימים

יישומי פלאגין קיימים בחבילה עם Edge Microgateway נמצאים כאן, [prefix] היא ספריית התחילית npm. ראו אם הספרייה הזו לא מוצגת, איפה מותקנת Edge Microgateway.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

הוספה והגדרה של יישומי פלאגין

כדי להוסיף ולהגדיר יישומי פלאגין, צריך לפעול לפי הדפוס הבא:

  1. עוצרים את Microgateway של Edge.
  2. פותחים את קובץ התצורה של Edge Microgateway. פרטים נוספים זמינים במאמר מבצעים שינויים בהגדרות האישיות של אפשרויות.
  3. מוסיפים את הפלאגין לאלמנט plugins:sequence של קובץ התצורה, לפי השלבים הבאים. יישומי הפלאגין מופעלים לפי הסדר שבו הם מופיעים ברשימה הזו.
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. מגדירים את הפלאגין. ליישומי פלאגין מסוימים יש פרמטרים אופציונליים שניתן להגדיר ב קובץ תצורה. לדוגמה, אפשר להוסיף את הבית הבא כדי להגדיר את עצירת השיא יישומי פלאגין. למידע נוסף, כדאי לעיין במאמר בנושא שימוש בפלאגין לעצירת נקודות שיא. אפשר לקבל מידע נוסף.
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. שומרים את הקובץ.
  2. מפעילים מחדש או טוענים מחדש את Edge Microgateway, בהתאם לקובץ התצורה שערכתם.

תצורה ספציפית לפלאגין

כדי לשנות את הפרמטרים של הפלאגין שצוינו בקובץ התצורה, אפשר ליצור התצורה הספציפית לפלאגין בספרייה הזו:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

כאשר [prefix] הוא ספריית התחילית npm. ראו אם הספרייה הזו לא מוצגת, איפה מותקנת Edge Microgateway.

plugins/<plugin_name>/config/default.yaml לדוגמה, אפשר להציב את חסימה ב-plugins/spikearrest/config/default.yaml, והם יבטלו כל הגדרה אחרת הגדרות אישיות.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

שימוש בפלאגין לעצירת נקודות שיא

הפלאגין לעצירת נקודות שיא מגן מפני עליות חדות בתעבורת הנתונים. היא מווסתת את מספר הבקשות בוצע עיבוד על ידי מכונת Edge Microgateway.

הוספת הפלאגין לעצירת נקודות שיא

למידע נוסף, ראו הוספה והגדרה של יישומי פלאגין.

הגדרות לדוגמה עבור מעצר חד-פעמי

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

אפשרויות הגדרה של מעצר חד-פעמי

  • timeUnit: התדירות שבה מתאפס חלון הביצוע של עצירת הביניים. ערכים חוקיים הן שניות או דקה.
  • allow: המספר המקסימלי של בקשות שאפשר לאפשר במהלך יחידת הזמן. צפייה גם אם מפעילים כמה תכונות של Edge Micro תהליכים.
  • bufferSize: (אופציונלי, ברירת המחדל היא 0) אם bufferSize > 0, עצירה חדה מאחסנת את מספר הבקשות הזה במאגר נתונים זמני. מיד לאחר הביצוע הבא של 'window' מתרחשת, בקשות במאגר הנתונים הזמני יטופלו קודם. ראה גם הוספת מאגר נתונים זמני.

איך פועלת מעצרת שיא?

אפשר לחשוב על מעצר חד-פעמי כדרך להגן באופן כללי מפני עליות חדות בתעבורת הנתונים, במקום להגן עליו דרך להגביל את התנועה למספר מסוים של בקשות. ממשקי ה-API והקצה העורפי שלכם יכולים לטפל הנפח של תנועת הגולשים, והמדיניות בנושא מעצרים של עלייה חדה עוזרת להתאים את התנועה לכמויות הכלליות תותאם להתנהגות שרציתם.

התנהגות העצירה של נקודות השיא בזמן הריצה שונה ממה שהיית מצפה לראות בליטרל לדקה או לשנייה שמזינים.

לדוגמה, נניח שציינתם קצב של 30 בקשות בדקה, באופן הבא:

spikearrest:
   timeUnit: minute
   allow: 30

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

אז מה קורה בפועל? כדי למנוע התנהגות דמוית-עליות, מעצרת שיא מחלקת את ה עליך תנועה על ידי חלוקת ההגדרות לפרקי זמן קטנים יותר, באופן הבא:

מחירים לדקה

התעריפים לדקה מוחלפים לבקשות במרווחי זמן מותרים של שניות. למשל, 30 בקשות בדקה מוחלקות כך:

60 שניות (דקה אחת) / 30 = פרקי זמן של 2 שניות, או בערך בקשה אחת כל 2 שניות. א' הבקשה השנייה בתוך 2 שניות תיכשל. בנוסף, בקשה 31 תוך דקה תיכשל.

תעריפים לשנייה

התעריפים לשנייה מוחלקים לבקשות שמותרות במרווחי זמן של אלפיות שנייה. לדוגמה, 10 בקשות בשנייה מוחלקות כך:

1,000 אלפיות השנייה (שנייה אחת) / 10 = פרקי זמן של 100 אלפיות שנייה, או בערך בקשה אחת כל 100 אלפיות שנייה . בקשה שנייה בתוך 100 אלפיות השנייה תיכשל. כמו כן, בקשה 11 בתוך שנייה תיכשל.

כשיש חריגה מהמגבלה

אם מספר הבקשות חורג מהמגבלה בפרק הזמן שצוין, מעצר עלייה חדה מחזירה את הודעת השגיאה הבאה בסטטוס HTTP 503:

{"error": "spike arrest policy violated"}

הוספת מאגר נתונים זמני

אפשר להוסיף למדיניות מאגר נתונים זמני. נניח שמגדירים את מאגר הנתונים הזמני ל-10. תוכלו לראות שה-API לא מחזיר שגיאה באופן מיידי אחרי שחורגים ממעצר העלייה החדה המוגבלות של המשאבים. במקום זאת, הבקשות בתהליך אגירת נתונים (עד למספר שצוין), והבקשות בתהליך אגירת הנתונים מעובדים ברגע שחלון הביצוע המתאים הבא זמין. ברירת המחדל הערך של bufferSize הוא 0.

אם מפעילים כמה מכשירים ב-Edge Micro תהליכים

מספר הבקשות המותרות תלוי במספר תהליכי העבודה של Edge Micro ריצה. מעצר עם נקודות שיא מחשב את מספר הבקשות המותר לכל תהליך עובד. כברירת מחדל, מספר תהליכי Edge Micro שווה למספר המעבדים (CPU) במכונה שבה Edge Micro. מותקנת. עם זאת, אפשר להגדיר את מספר תהליכי העבודה כשמפעילים Edge Micro באמצעות האפשרות --processes בפקודה start. לדוגמה, אם אם אתם רוצים שעצרת שיא תפעל ב-100 בקשות בפרק זמן נתון, ואם תתחילו את השימוש ב-Edge Microgateway עם האפשרות --processes 4, ואז מגדירים allow: 25 הגדרות למעצר שיא. לסיכום, כלל האצבע הוא להגדיר את ההגדרה allow לערך 'מספר ההשהיות הרצויות של עצירה חדה / מספר תהליכים'.

שימוש בפלאגין המכסה

מכסה מציינת את מספר הודעות הבקשות שאפליקציה יכולה לשלוח ל-API במהלך שעה, יום, שבוע או חודש. כשאפליקציה מגיעה למגבלת המכסה, לאחר מכן הקריאות ל-API נדחות. אפשר לקרוא כאן גם מה ההבדל בין הפסקת שיא ומכסה?

הוספת הפלאגין של המכסה

למידע נוסף, ראו הוספה והגדרה של יישומי פלאגין.

הגדרת מוצר ב-Apigee קצה

אתם מגדירים מכסות בממשק המשתמש של Apigee Edge שבו אתם מגדירים מוצרי API. עליך לדעת המוצר שמכיל את שרת ה-proxy מבוסס-המיקרו-שער שרוצים להגביל באמצעות מכסה. הזה יש להוסיף את המוצר לאפליקציה של מפתח. כשמבצעים קריאות ל-API שאומתו באמצעות מפתחות באפליקציה למפתחים, המכסה תחול על הקריאות האלה ל-API.

  1. מתחברים לחשבון הארגון ב-Apigee Edge.
  2. בממשק המשתמש של Edge, פותחים את המוצר המשויך לשרת ה-proxy שמודע למיקרו-שער שאליו שאתם רוצים להחיל את המכסה,
    1. בממשק המשתמש, בוחרים מוצרים מהתפריט 'פרסום'.
    2. פותחים את המוצר שמכיל את ה-API שעליו רוצים להחיל את המכסה.
    3. לוחצים על עריכה.
    4. בשדה Quota, מציינים את מרווח המכסה. לדוגמה, 100 בקשות בכל פעם דקה אחת. או 50,000 בקשות בכל שעתיים.

  1. לוחצים על שמירה.
  2. צריך לוודא שהמוצר נוסף לאפליקציה למפתחים. צריך את המפתחות מהאפליקציה הזו כדי ליצור קריאות ל-API מאומתות.

הגדרה לדוגמה של מכסות

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

אפשרויות הגדרה של מכסות

כדי להגדיר את הפלאגין למעקב אחרי מכסה, צריך להוסיף את הרכיב quotas לקובץ התצורה, כפי שאפשר לראות בדוגמה הבאה:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
  bufferSize:
    hour: 20000
    minute: 500
    month: 1
    default: 10000
  useDebugMpId: true
  failOpen: true
  useRedis: true
  redisHost: localhost
  redisPort: 6379
  redisDb: 1
...
אפשרות תיאור
buffersize (מספר שלם) מאגר הנתונים הזמני שיוגדר לפרק הזמן שצוין. משך הזמן המותר היחידות כוללות: hour, minute, day, week, month וגם default. (נוספה: גרסה 3.0.9)
failOpen כשהתכונה הזו מופעלת, אם מתרחשת שגיאה בעיבוד המכסה או אם "המכסה חלה" בקשה ל-Edge לא מצליחה לעדכן מוני מכסות מרחוק, המכסה יעובד על סמך ספירות מקומיות בלבד עד למכסה הבאה מרחוק מתבצע סנכרון. בשני המקרים האלה מוגדר דגל quota-failed-open ב- לאובייקט הבקשה. (נוספה: גרסה 3.0.9)

כדי להפעיל את המכסה 'fail open' תכונה, קובעים את ההגדרות הבאות:

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId יש להגדיר את הדגל הזה לערך true כדי להפעיל את הרישום של קובץ ה-MP ביומן מזהה (מעבד הודעות) בתגובות למכסה. (נוספה: גרסה 3.0.9)

כדי להשתמש בתכונה הזו, צריך לעדכן שרת ה-proxy של edgemicro-auth לגרסה 3.0.7 ואילך ומגדירים את ההגדרות הבאות:

edgemicro:
...
quotas:
  useDebugMpId: true
...

אם המדיניות useDebugMpId מוגדרת, התשובות במכסות מ-Edge יכללו את מזהה ה-MP ויירשם ביומן על ידי Edge Microgateway. לדוגמה:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis (בוליאני) צריך להגדיר את הערך true כדי להשתמש במודול מסד הנתונים של המכסות ב-Redis. מתי מוגדרת, המכסה מוגבלת רק למכונות Edge Microgateway להתחבר ל-Redis. אם לא, מונה המכסות הוא גלובלי. ברירת המחדל: false (נעשה שימוש במודול redis-volos-apigee) (נוסף: גרסה 3.0.10)
redisHost המארח שבו פועלת מכונת Redis. ברירת מחדל: 127.0.0.1 (נוספה: גרסה 3.0.10)
redisPort היציאה של מכונת Redis. ברירת מחדל: 6379 (נוספה: גרסה 3.0.10)
redisDb DB של Redis לשימוש. ברירת מחדל: 0 (נוספה: גרסה 3.0.10)

הסבר על היקף המכסות

מספר המכסות בהיקף של מוצר API. אם לאפליקציה למפתחים יש כמה מוצרים, המכסה היא בהיקף של כל אחד מהם בנפרד. כדי להשיג את ההיקף הזה, חברת Edge Microgateway יוצרת מזהה מכסה שהוא שילוב של 'appName + שם מוצר'.

בדיקת הפלאגין של המכסה

כשחורגים מהמכסה, מוחזר סטטוס HTTP 403 ביחד עם ההודעה הבאה:

{"error": "exceeded quota"}

מה ההבדל בין מעצר עלייה חדה למכסה?

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

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

שימוש במעצר חד-פעמי כדי להגן מפני עליות חדות ופתאומיות בתנועת הגולשים בממשקי API. בדרך כלל, מעצרת שיא למניעת התקפות DDoS או התקפות זדוניות אחרות.