בחירת נקודת קצה

ל-Route Optimization API יש את נקודות הקצה הבאות:

  • OptimizeTours: נקודת קצה לחסימה של בקשות בודדות.
  • OptimizeToursLongRunning: נקודת קצה לא חוסמת לבקשות בודדות עם זמני פתרון ארוכים.
  • OptimizeToursUri: נקודת קצה לא חוסמת לבקשות בודדות עם דרישות נתונים גדולות.
  • BatchOptimizeTours: נקודת קצה לא חוסמת לעיבוד של כמה בקשות בו-זמנית.

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

השוואה בין נקודות קצה

בטבלה הבאה מפורטות נקודות הקצה השונות, כדי שתוכלו לבחור את נקודת הקצה המתאימה לצרכים שלכם:

נקודת קצה (endpoint) OptimizeTours OptimizeToursLongRunning OptimizeToursUri BatchOptimizeTours
סוג הביצוע חסימה לא חוסם לא חוסם לא חוסם
בקשות שעברו עיבוד אחד אחד אחד מרובים
גודל בקשה מקסימלי קטן בינונית גדול גדול
זמן הפתרון קצר ארוך ארוך ארוך
נדרש Google Cloud Storage לא לא כן כן

הסבר על מאפייני נקודת הקצה

בטבלה הקודמת מפורטות המאפיינים הבאים שיעזרו לכם לבחור את נקודת הקצה המתאימה:

  • סוג ההרצה: קובע איך האפליקציה מטפלת בחיבור לרשת בזמן ההמתנה לתגובה. יש שני סוגים:
    • חסימת נקודות קצה: החיבור נשאר פתוח עד שה-API מחזיר תגובה.
    • נקודות קצה (endpoint) שלא חוסמות: עיבוד בקשות ברקע. ה-API מחזיר מיד מזהה של פעולה ממושכת (LRO), שאותו צריך לדגום בהמשך כדי לאחזר את התוצאות.
  • בקשות שעובדו: קובע אם נקודת הקצה מטפלת בבקשת ניתוב יחידה או מעבדת כמה בקשות בו-זמנית.
  • גודל בקשה מקסימלי: בקשות קטנות ובינוניות נשלחות ישירות בשורה ויש להן מגבלות בצד השרת. בקשות גדולות עוקפות את המגבלות האלה באמצעות Google Cloud Storage. מגבלות הגודל המדויקות של הבקשות מפורטות בקטעים של נקודות הקצה.
  • זמן הטיפול: בקשות פשוטות מטופלות בזמן קצר, ובקשות מורכבות מטופלות בזמן ארוך יותר. זמן הפתרון קובע כמה זמן החיבור צריך להישאר פתוח, ולכן הבחירה של נקודת הקצה תלויה במגבלות הזמן הקצוב לתפוגה. מידע נוסף מופיע במאמר הגדרת פסק זמן ומועדים אחרונים.
  • נדרש Google Cloud Storage: נקודות קצה שמבצעות קריאה וכתיבה של נתונים ישירות ל-Google Cloud Storage, כדי לעבד בקשות ותגובות גדולות. במקום לשלוח את הנתונים בבקשת HTTP, מעלים את הבקשה לקטגוריה של Cloud Storage ומעבירים את ה-URI ל-API.

פרטים על נקודת הקצה

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

OptimizeTours

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

OptimizeTours דוגמה לבקשה

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ],
        "deliveries":[
          {
            "arrivalLocation": {
              "latitude": 37.424215,
              "longitude": -122.095260
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursLongRunning

OptimizeToursLongRunning היא נקודת קצה (endpoint) לא חוסמת לבקשות בודדות עם זמני פתרון ארוכים. היא מחזירה מזהה של פעולה ממושכת (LRO). אפשר לבדוק את הסטטוס של הבקשה ולאחזר את המסלולים הסופיים שעברו אופטימיזציה באמצעות נקודת הקצה (endpoint) GetOperation. נקודת הקצה הזו מקבלת בקשות מוטבעות עד 8MB בערך.

OptimizeToursLongRunning דוגמה לבקשה

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursUri

OptimizeToursUri היא נקודת קצה (endpoint) לא חוסמת שמיועדת לבקשות בודדות עם זמני פתרון ארוכים ודרישות נתונים גדולות (מעל 8MB). היא מחזירה מזהה של פעולה ממושכת (LRO). אפשר לבדוק את הסטטוס של הבקשה באמצעות נקודת הקצה (endpoint) GetOperation.

במקום לשלוח את מטען הייעודי (payload) בשורה, מעלים את OptimizeToursRequest ל-Google Cloud Storage. לאחר מכן מעבירים ל-API את כתובות ה-URI של Cloud Storage גם עבור בקשת הקלט וגם עבור יעד הפלט. השרת קורא את הנתונים מכתובת ה-URI של הקלט וכותב את OptimizeToursResponse הסופי ישירות לכתובת ה-URI של הפלט. אחרי שהפעולה תושלם, תוכלו לקרוא את המסלולים שעברו אופטימיזציה מכתובת ה-URI של הפלט.

OptimizeToursUri דוגמה לבקשה

{
  "input": {
    "uri": "gs://your-bucket/path/input/object.json"
  },
  "output": {
    "uri": "gs://your-bucket/path/output/object.json"
  }
}
    

BatchOptimizeTours

BatchOptimizeTours הוא נקודת קצה לא חוסמת שמיועדת לכמה בקשות אופטימיזציה עצמאיות שעוברות עיבוד בו-זמנית. היא מחזירה מזהה של פעולה ממושכת (LRO). אפשר לבדוק את הסטטוס של הבקשה ולאחזר את המסלולים הסופיים שעברו אופטימיזציה באמצעות נקודת הקצה (endpoint) GetOperation.

במקום לשלוח את מטען הנתונים בשורה, מעלים כמה קובצי OptimizeToursRequest ל-Google Cloud Storage. לאחר מכן מעבירים את כתובות ה-URI של Cloud Storage אל ה-API. השרת קורא את הנתונים מכתובות ה-URI של הקלט וכותב OptimizeToursResponse לכל בקשה ישירות לכתובות ה-URI של הפלט.

BatchOptimizeTours דוגמה לבקשה

{
  "modelConfigs": [
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "gs://your-bucket/path/input/request_1.json"
        },
        "dataFormat": "JSON"
      },
      "outputConfig": {
        "gcsDestination": {
          "uri": "gs://your-bucket/path/output/response_1.json"
        },
        "dataFormat": "JSON"
      }
    },
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "gs://your-bucket/path/input/request_2.json"
        },
        "dataFormat": "JSON"
      },
      "outputConfig": {
        "gcsDestination": {
          "uri": "gs://your-bucket/path/output/response_2.json"
        },
        "dataFormat": "JSON"
      }
    }
  ]
}