Choisir un point de terminaison

L'API Route Optimization comporte les points de terminaison suivants :

  • OptimizeTours : point de terminaison bloquant pour les requêtes individuelles.
  • OptimizeToursLongRunning : point de terminaison non bloquant pour les requêtes uniques avec des temps de résolution longs.
  • OptimizeToursUri : point de terminaison non bloquant pour les requêtes uniques avec des besoins importants en données.
  • BatchOptimizeTours : point de terminaison non bloquant pour plusieurs requêtes traitées simultanément.

Le point de terminaison que vous choisissez dépend de votre cas d'utilisation, de la taille de la requête, du temps de résolution attendu et de la nécessité ou non de traiter plusieurs requêtes simultanément.

Comparer les points de terminaison

Utilisez le tableau suivant pour identifier le point de terminaison adapté à vos besoins :

Point de terminaison OptimizeTours OptimizeToursLongRunning OptimizeToursUri BatchOptimizeTours
Type d'exécution Blocage Non bloquante Non bloquante Non bloquante
Requests processed (Demandes traitées) Célibataires Célibataires Célibataires Plusieurs
Taille maximale de la requête Petite Moyenne Grande Grande
Temps de résolution Version courte Long Long Long
Nécessite Google Cloud Storage Non Non Oui Oui

Comprendre les caractéristiques du point de terminaison

Le tableau précédent liste les caractéristiques suivantes pour vous aider à choisir le bon point de terminaison :

  • Type d'exécution : détermine la façon dont votre application gère la connexion réseau en attendant une réponse. Il existe deux types de  :
    • Points de terminaison bloquants : la connexion reste ouverte jusqu'à ce que l'API renvoie une réponse.
    • Points de terminaison non bloquants : traitent les requêtes en arrière-plan. L'API renvoie immédiatement un ID d'opération de longue durée (LRO) que vous interrogez ultérieurement pour récupérer les résultats.
  • Requêtes traitées : détermine si le point de terminaison gère une seule requête de routage ou traite plusieurs requêtes simultanément.
  • Taille maximale des requêtes : les requêtes de petite et moyenne taille sont envoyées directement en ligne et sont soumises à des limites côté serveur. Les requêtes volumineuses contournent ces limites en utilisant Google Cloud Storage. Vous trouverez les limites exactes de la taille des requêtes dans les sections détaillées sur les points de terminaison.
  • Temps de résolution : les demandes simples peuvent être résolues rapidement, tandis que les demandes complexes prennent plus de temps. Étant donné que le temps de résolution détermine la durée pendant laquelle une connexion doit rester ouverte, votre choix de point de terminaison dépend de vos limites de délai avant expiration. Pour en savoir plus, consultez Configurer les délais d'attente et les délais limites.
  • Nécessite Google Cloud Storage : les points de terminaison qui traitent les requêtes et les réponses volumineuses lisent et écrivent des données directement dans Google Cloud Storage. Au lieu d'envoyer les données dans la requête HTTP, vous importez votre requête dans un bucket Cloud Storage et transmettez l'URI à l'API.

Endpoint details

L'API Route Optimization comporte quatre points de terminaison. Les sections suivantes expliquent le fonctionnement de chaque point de terminaison et incluent un exemple de requête.

OptimizeTours

OptimizeTours est un point de terminaison bloquant destiné aux requêtes uniques avec des temps de résolution courts. Elle renvoie un itinéraire optimisé directement dans la réponse. Comme il s'agit d'un point de terminaison bloquant, vous devez maintenir votre connexion réseau ouverte jusqu'à ce que l'API ait fini de traiter la requête pour qu'elle renvoie une réponse. Ce point de terminaison accepte les requêtes intégrées jusqu'à environ 4 Mo.

Consultez un exemple de requête 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 est un point de terminaison non bloquant pour les requêtes uniques avec des temps de résolution longs. Il renvoie un ID d'opération de longue durée (LRO). Vous pouvez interroger cet ID à l'aide du point de terminaison GetOperation pour vérifier l'état de la requête et récupérer les itinéraires optimisés finaux. Ce point de terminaison accepte les requêtes intégrées jusqu'à environ 8 Mo.

Consultez un exemple de requête OptimizeToursLongRunning.

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

OptimizeToursUri

OptimizeToursUri est un point de terminaison non bloquant destiné aux requêtes uniques avec de longs temps de résolution et des besoins importants en données (plus de 8 Mo). Il renvoie un ID d'opération de longue durée (LRO). Vous pouvez interroger cet ID à l'aide du point de terminaison GetOperation pour vérifier l'état de la demande.

Au lieu d'envoyer votre charge utile en ligne, vous importez votre OptimizeToursRequest dans Google Cloud Storage. Vous transmettez ensuite à l'API les URI Cloud Storage de votre requête d'entrée et de votre destination de sortie. Le serveur lit les données de votre URI d'entrée et écrit le OptimizeToursResponse final directement dans votre URI de sortie. Une fois l'opération terminée, vous pouvez lire les itinéraires optimisés à partir de cet URI de sortie.

Consultez un exemple de requête OptimizeToursUri.

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

BatchOptimizeTours

BatchOptimizeTours est un point de terminaison non bloquant destiné à plusieurs requêtes d'optimisation indépendantes traitées simultanément. Il renvoie un ID d'opération de longue durée (LRO). Vous pouvez interroger cet ID à l'aide du point de terminaison GetOperation pour vérifier l'état de la requête et récupérer les itinéraires optimisés finaux.

Au lieu d'envoyer votre charge utile en ligne, vous importez plusieurs OptimizeToursRequest dans Google Cloud Storage. Vous transmettez ensuite les URI Cloud Storage à l'API. Le serveur lit les données de vos URI d'entrée et écrit un OptimizeToursResponse pour chaque requête directement dans vos URI de sortie.

Consulter un exemple de requête 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"
      }
    }
  ]
}