Route Optimization API có các điểm cuối sau:
OptimizeTours: Điểm cuối chặn cho các yêu cầu riêng lẻ.OptimizeToursLongRunning: Một điểm cuối không chặn cho các yêu cầu riêng lẻ có thời gian giải quyết dài.OptimizeToursUri: Một điểm cuối không chặn cho các yêu cầu đơn lẻ có yêu cầu về dữ liệu lớn.BatchOptimizeTours: Một điểm cuối không chặn cho nhiều yêu cầu được xử lý đồng thời.
Điểm cuối bạn chọn sẽ tuỳ thuộc vào trường hợp sử dụng, quy mô yêu cầu, thời gian giải quyết dự kiến và việc bạn có cần xử lý nhiều yêu cầu cùng lúc hay không.
So sánh các điểm cuối
Hãy sử dụng bảng sau đây để xác định điểm cuối phù hợp với nhu cầu của bạn:
| Điểm cuối | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Loại thực thi | Chặn | Không chặn | Không chặn | Không chặn |
| Số yêu cầu đã xử lý | Độc thân | Độc thân | Độc thân | Nhiều |
| Kích thước yêu cầu tối đa | Nhỏ | Trung bình | Lớn | Lớn |
| Thời gian giải | Ngắn | Dài | Dài | Dài |
| Yêu cầu Google Cloud Storage | Không | Không | Có | Có |
Tìm hiểu các đặc điểm của điểm cuối
Bảng trước đó liệt kê các đặc điểm sau đây để giúp bạn chọn điểm cuối phù hợp:
- Loại thực thi: Xác định cách ứng dụng của bạn xử lý kết nối mạng trong khi chờ phản hồi. Có 2 loại:
- Chặn điểm cuối: Luôn mở kết nối cho đến khi API trả về một phản hồi.
- Điểm cuối không chặn: Xử lý các yêu cầu ở chế độ nền. API này sẽ trả về ngay một mã Thao tác diễn ra trong thời gian dài (LRO) mà bạn sẽ thăm dò sau để truy xuất kết quả.
- Yêu cầu đã xử lý: Xác định xem điểm cuối có xử lý một yêu cầu định tuyến hay xử lý nhiều yêu cầu cùng lúc.
- Kích thước yêu cầu tối đa: Các yêu cầu nhỏ và vừa được gửi trực tiếp theo dòng và có giới hạn phía máy chủ. Các yêu cầu lớn sẽ bỏ qua những giới hạn này bằng cách sử dụng Google Cloud Storage. Tìm giới hạn chính xác về kích thước yêu cầu trong phần chi tiết về các điểm cuối.
- Thời gian giải quyết: Các yêu cầu đơn giản có thể được giải quyết trong thời gian ngắn, trong khi các yêu cầu phức tạp cần nhiều thời gian hơn. Vì thời gian giải quyết quyết định thời gian kết nối phải duy trì trạng thái mở, nên lựa chọn điểm cuối của bạn phụ thuộc vào giới hạn thời gian chờ. Để biết thêm thông tin, hãy xem phần Định cấu hình thời gian chờ và thời hạn.
- Yêu cầu Google Cloud Storage: Các điểm cuối xử lý các yêu cầu và phản hồi lớn sẽ đọc và ghi dữ liệu trực tiếp vào Google Cloud Storage. Thay vì gửi dữ liệu trong yêu cầu HTTP, bạn tải yêu cầu lên một bộ chứa Cloud Storage và truyền URI đến API.
Thông tin chi tiết về điểm cuối
Route Optimization API có 4 điểm cuối. Các phần sau đây giải thích cách hoạt động của từng điểm cuối và đưa ra một yêu cầu mẫu.
OptimizeTours
OptimizeTours là một điểm cuối chặn dành cho các yêu cầu riêng lẻ với thời gian giải quyết ngắn. Thao tác này trả về một tuyến đường được tối ưu hoá ngay trong phản hồi.
Vì đây là một điểm cuối chặn, bạn phải duy trì kết nối mạng cho đến khi API hoàn tất quá trình xử lý yêu cầu để trả về phản hồi. Điểm cuối này chấp nhận các yêu cầu nội tuyến có dung lượng tối đa khoảng 4 MB.
Xem yêu cầu ví dụ 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 là một điểm cuối không chặn cho các yêu cầu riêng lẻ có thời gian giải quyết dài. Thao tác này trả về một mã nhận dạng Thao tác thực hiện lâu (LRO).
Bạn có thể thăm dò mã nhận dạng này bằng điểm cuối GetOperation để kiểm tra trạng thái yêu cầu và truy xuất các tuyến đường được tối ưu hoá cuối cùng. Điểm cuối này chấp nhận các yêu cầu nội tuyến có dung lượng tối đa khoảng 8 MB.
Xem OptimizeToursLongRunning ví dụ về yêu cầu
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri là một điểm cuối không chặn dành cho các yêu cầu riêng lẻ có thời gian giải quyết dài và yêu cầu dữ liệu lớn (trên 8 MB). Thao tác này trả về một mã Thao tác thực hiện lâu (LRO). Bạn có thể thăm dò mã nhận dạng này bằng điểm cuối GetOperation để kiểm tra trạng thái yêu cầu.
Thay vì gửi tải trọng nội tuyến, bạn tải OptimizeToursRequest lên Google Cloud Storage. Sau đó, bạn sẽ truyền URI Cloud Storage cho cả yêu cầu đầu vào và đích đến đầu ra đến API. Máy chủ đọc dữ liệu từ URI đầu vào của bạn và ghi OptimizeToursResponse cuối cùng trực tiếp vào URI đầu ra của bạn. Bạn có thể đọc các tuyến đường được tối ưu hoá từ URI đầu ra này sau khi thao tác hoàn tất.
Xem yêu cầu ví dụ OptimizeToursUri
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours là một điểm cuối không chặn dành cho nhiều yêu cầu tối ưu hoá độc lập được xử lý đồng thời. Thao tác này trả về mã Thao tác thực hiện lâu (LRO). Bạn có thể thăm dò mã nhận dạng này bằng điểm cuối GetOperation để kiểm tra trạng thái yêu cầu và truy xuất các tuyến đường được tối ưu hoá cuối cùng.
Thay vì gửi tải trọng nội tuyến, bạn tải nhiều OptimizeToursRequest lên Google Cloud Storage. Sau đó, bạn sẽ truyền URI Cloud Storage đến API. Máy chủ đọc dữ liệu từ URI đầu vào của bạn và ghi một OptimizeToursResponse cho từng yêu cầu trực tiếp vào URI đầu ra của bạn.
Xem BatchOptimizeTours yêu cầu ví dụ
{ "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" } } ] }