Route Optimization API 具有以下端点:
OptimizeTours:用于单个请求的阻塞端点。OptimizeToursLongRunning:一个非阻塞端点,用于处理求解时间较长的单个请求。OptimizeToursUri:一个非阻塞端点,用于处理具有大量数据要求的单个请求。BatchOptimizeTours:一个非阻塞端点,用于同时处理多个请求。
您选择的端点取决于您的用例、请求大小、预期求解时间以及您是否需要同时处理多个请求。
比较端点
请使用下表确定符合您需求的端点:
| 端点 | 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" } } ] }