Как выбрать конечную точку

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