У 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" } } ] }