Route Optimization API имеет следующие конечные точки:
OptimizeTours– блокирующая конечная точка для отдельных запросов;OptimizeToursLongRunning– неблокирующая конечная точка для отдельных запросов с длительным временем решения.OptimizeToursUri– неблокирующая конечная точка для отдельных запросов с большим объемом данных.BatchOptimizeTours– неблокирующая конечная точка для одновременной обработки нескольких запросов.
Выбор конечной точки зависит от вашего сценария использования, размера запроса, ожидаемого времени решения и того, нужно ли вам обрабатывать несколько запросов одновременно.
Сравнение конечных точек
В таблице ниже указано, какую конечную точку следует использовать в том или ином случае.
| Конечная точка | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Тип выполнения | Блокировка | Неблокирующий | Неблокирующий | Неблокирующий |
| Обработанные запросы | Холостые/незамужние | Холостые/незамужние | Холостые/незамужние | Несколько |
| Максимальный размер запроса | Маленький | Средний | Крупный | Крупный |
| Время решения | Короткий | Длинный | Длинный | Длинный |
| Требуется Google Cloud Storage | Нет | Нет | Да | Да |
Ознакомьтесь с характеристиками конечной точки
В таблице выше перечислены следующие характеристики, которые помогут вам выбрать подходящую конечную точку:
- Тип выполнения. Определяет, как приложение обрабатывает сетевое подключение во время ожидания ответа. Существует два типа:
- Блокирующие конечные точки. Соединение остается открытым, пока API не вернет ответ.
- Неблокирующие конечные точки обрабатывают запросы в фоновом режиме. API сразу же возвращает идентификатор продолжительной операции, который вы позже запрашиваете для получения результатов.
- Обработанные запросы. Определяет, обрабатывает ли конечная точка один запрос маршрутизации или несколько запросов одновременно.
- Максимальный размер запроса. Небольшие и средние запросы отправляются напрямую и имеют ограничения на стороне сервера. Для больших запросов эти ограничения можно обойти с помощью Google Cloud Storage. Точные ограничения на размер запроса приведены в разделах с информацией о конечных точках.
- Время решения. Простые запросы могут быть решены за короткое время, а сложные – за более длительное. Поскольку время решения определяет, как долго соединение должно оставаться открытым, выбор конечной точки зависит от ограничений по времени ожидания. Подробнее о настройке тайм-аутов и сроков…
- Требуется Google Cloud Storage. Конечные точки, которые обрабатывают большие запросы и ответы, считывают и записывают данные непосредственно в Google Cloud Storage. Вместо того чтобы отправлять данные в HTTP-запросе, вы загружаете запрос в сегмент Cloud Storage и передаете URI в API.
Сведения о конечной точке
У Route Optimization API четыре конечные точки. В разделах ниже объясняется, как работает каждая конечная точка, и приводятся примеры запросов.
OptimizeTours
OptimizeTours – это блокирующая конечная точка, предназначенная для отдельных запросов с коротким временем решения. Он возвращает оптимизированный маршрут прямо в ответе.
Поскольку это блокирующая конечная точка, необходимо поддерживать сетевое подключение, пока API не завершит обработку запроса и не вернет ответ. Эта конечная точка принимает встроенные запросы размером до 4 МБ.
Пример запроса 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 – это неблокирующая конечная точка для отдельных запросов с длительным временем решения. Он возвращает идентификатор длительной операции.
Вы можете опрашивать этот идентификатор с помощью конечной точки GetOperation, чтобы проверять статус запроса и получать окончательные оптимизированные маршруты. Эта конечная точка принимает встроенные запросы размером примерно до 8 МБ.
Пример запроса OptimizeToursLongRunning
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri – это неблокирующая конечная точка, предназначенная для отдельных запросов с длительным временем решения и большими требованиями к данным (более 8 МБ). Он возвращает идентификатор длительной операции. Вы можете использовать этот идентификатор в конечной точке GetOperation, чтобы проверять статус запроса.
Вместо того чтобы отправлять полезную нагрузку в строке, вы загружаете 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 – это неблокирующая конечная точка, предназначенная для нескольких независимых запросов на оптимизацию, обрабатываемых одновременно. Он возвращает идентификатор длительной операции. Вы можете использовать этот идентификатор в конечной точке 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" } } ] }