选择端点

Route Optimization API 具有以下端点:

您选择的端点取决于您的用例、请求大小、预期求解时间以及您是否需要同时处理多个请求。

比较端点

请使用下表确定符合您需求的端点:

端点 OptimizeTours OptimizeToursLongRunning OptimizeToursUri BatchOptimizeTours
执行类型 阻塞 非阻塞 非阻塞 非阻塞
已处理的请求数 单身 单身 单身 多个
请求大小上限 小 中号 大 大
解决时间 短边 长 长 长
需要 Google Cloud Storage 否 否 是 是

了解端点特征

上表列出了以下特征,可帮助您选择正确的端点:

  • 执行类型:确定应用在等待响应时如何处理网络连接。有两种存储类型:
    • 阻塞端点:保持连接处于打开状态,直到 API 返回响应。
    • 非阻塞端点:在后台处理请求。API 会立即返回一个长时间运行的操作 (LRO) ID,您稍后可以轮询该 ID 以检索结果。
  • 处理的请求:确定端点是处理单个路由请求,还是同时处理多个请求。
  • 请求大小上限:中小型请求直接以内嵌方式发送,并具有服务器端限制。大型请求通过使用 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 是一个非阻塞端点,适用于求解时间较长的单个请求。它会返回一个长时间运行的操作 (LRO) ID。 您可以使用 GetOperation 端点轮询此 ID,以检查请求状态并检索最终的优化路线。此端点接受大小不超过约 8MB 的内嵌请求。

查看 OptimizeToursLongRunning 示例请求

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

OptimizeToursUri

OptimizeToursUri 是一个非阻塞端点,适用于求解时间长且数据量大(超过 8MB)的单个请求。它会返回长时间运行的操作 (LRO) ID。您可以使用 GetOperation 端点轮询此 ID,以检查请求状态。

您无需以内嵌方式发送载荷,而是将 OptimizeToursRequest 上传到 Google Cloud Storage。然后,您将输入请求和输出目标的 Cloud Storage URI 传递给 API。服务器会从输入 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) ID。您可以使用 GetOperation 端点轮询此 ID,以检查请求状态并检索最终的优化路线。

您无需以内嵌方式发送载荷,而是将多个 OptimizeToursRequest 上传到 Google Cloud Storage。然后,您将 Cloud Storage URI 传递给 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"
      }
    }
  ]
}