Hướng dẫn về hạn mức & giới hạn tốc độ

API FedEx tuân theo ba cơ chế điều chỉnh: hạn mức, giới hạn tốc độ và ngưỡng.

Hạn mức

Hạn mức giao dịch là số lượng yêu cầu API tối đa mà một tổ chức có thể gửi trong một ngày. Nói cách khác, người tiêu dùng API nên xem xét tổng số yêu cầu API được khởi tạo cho tất cả dự án trong tổ chức của họ. Mỗi yêu cầu được tính như nhau, bất kể khối lượng dữ liệu được trả về trong phản hồi của API FedEx.

Ví dụ: Một tổ chức có hạn mức 500.000 yêu cầu API mỗi ngày. Trong vài giờ đầu tiên trong ngày, tổ chức này đã gửi 500.000 yêu cầu nên đã đạt đến hạn mức hàng ngày dành cho họ. Thời gian còn lại trong ngày, hệ thống sẽ trả về mã lỗi “429 – Quá nhiều yêu cầu – Đã vượt quá hạn mức giao dịch hàng ngày. Hãy thử lại sau 12 giờ đêm theo giờ GMT” đối với mỗi yêu cầu cho đến ngày hôm sau.

Giới hạn tốc độ

Mỗi dự án có giới hạn tốc độ giao dịch là 1400 giao dịch trong khoảng thời gian 10 giây. Các hạn chế điều chỉnh được áp dụng nếu các giao dịch vượt quá giới hạn này trong mỗi khung thời gian 10 giây.

Nếu đạt đến giới hạn này trong vài giây đầu tiên thì mọi giao dịch được gửi trong những giây còn lại của khung thời gian 10 giây đó sẽ được điều chỉnh. Trong khoảng thời gian điều chỉnh này, hệ thống sẽ trả về mã lỗi có nội dung “429 – Quá nhiều yêu cầu”.

Nếu FedEx nhận được 1400 yêu cầu trong 2 giây đầu tiên, thì mọi giao dịch sau đó sẽ được điều chỉnh trong 8 giây tiếp theo và hệ thống sẽ trả về thông báo lỗi có nội dung “429 – Quá nhiều yêu cầu – Chúng tôi đã nhận được quá nhiều yêu cầu trong một thời gian ngắn. Vui lòng chờ một lúc để thử lại”.

Sau khi 10 giây trôi qua, các hạn chế điều chỉnh sẽ được dỡ bỏ và một bộ đếm khác sẽ bắt đầu theo dõi số lượng yêu cầu trong 10 giây tiếp theo.

Ngưỡng

Ngưỡng được áp dụng ở cấp địa chỉ IP để đảm bảo khả năng phục hồi cho quy trình ủy quyền của API FedEx. Cơ chế này chỉ áp dụng cho dịch vụ tạo mã thông báo OAuth. Có hai loại ngưỡng:

  1. Ngưỡng bùng nổ: 3 lần truy cập mỗi giây, liên tục trong khoảng thời gian 5 giây
  2. Ngưỡng trung bình: 1 lần truy cập mỗi giây, liên tục trong khoảng thời gian 2 phút

Khi một địa chỉ IP công cộng vi phạm bất kỳ giới hạn nào trong số giới hạn về ngưỡng này, thì địa chỉ đó sẽ chịu phạt trong 10 phút và tất cả các yêu cầu khác trong khung thời gian 10 phút này sẽ nhận được mã trạng thái “403 Bị cấm”.

Nếu người tiêu dùng API tiếp tục vi phạm bất kỳ giới hạn về ngưỡng nào trong thời gian phạt này, thì thời gian phạt sẽ kéo dài thêm. Nếu người dùng API không vi phạm giới hạn về ngưỡng trong 10 phút tiếp theo, thời gian phạt sẽ chấm dứt.

Cơ chế về ngưỡng dựa trên địa chỉ IP công cộng của người dùng. Nếu người dùng thiết lập 10 phiên bản máy ảo phía sau một IP công cộng, thì tất cả yêu cầu từ địa chỉ IP đó sẽ được tính vào giới hạn về ngưỡng.

Quản lý lưu lượng truy cập

Trong ba cơ chế này, mỗi cơ chế giải quyết một khía cạnh riêng trong việc quản lý lưu lượng truy cập:

  • Hạn mức được áp dụng ở cấp tổ chức, tức là tổng lưu lượng truy cập được tạo bởi tất cả các API trong một tổ chức sẽ phải tuân theo hạn mức giao dịch này.

  • Giới hạn tốc độ được áp dụng ở cấp dự án, tức là tổng lưu lượng truy cập được tạo bởi tất cả API trong một dự án sẽ phải tuân theo giới hạn tốc độ này.

  • Các ngưỡng được áp dụng ở cấp địa chỉ IP.

Lưu ý: FedEx có thể đánh dấu (các) giới hạn của bất kỳ cơ chế điều chỉnh nào được đề cập ở trên để ngăn chặn việc dùng sai, dùng quá nhiều và lạm dụng. FedEx có quyền thay đổi việc phân bổ mà không cần thông báo trước để duy trì quyền truy cập công bằng giữa những người tiêu dùng API và phân bổ tài nguyên của FedEx một cách hiệu quả.


Câu hỏi thường gặp

Có phải tất cả giao dịch API từ các dự án khác nhau của một tổ chức đều được tính vào hạn mức không?
Hạn mức được áp dụng ở cấp tổ chức. Trong một tổ chức, bạn có thể có một hoặc nhiều dự án và trong mỗi dự án, bạn có thể có một hoặc nhiều API. Do đó, tổng lưu lượng truy cập được tạo bởi tất cả API từ các dự án khác nhau, tất cả thuộc cùng một tổ chức, đều được tính vào hạn mức hàng ngày.

Nếu cùng mã lỗi 429 được trả về đối với vi phạm hạn mức và vi phạm giới hạn tốc độ, làm cách nào để xác định loại vi phạm mà tôi đã mắc phải?
Bạn có thể xác định loại vi phạm bằng cách đọc thông báo lỗi.

VI PHẠM THÔNG BÁO LỖI
Hạn mức Quá nhiều yêu cầu – Đã vượt quá hạn mức giao dịch hàng ngày. Hãy thử lại sau 12 giờ đêm theo giờ GMT.
Giới hạn tốc độ Chúng tôi nhận được quá nhiều yêu cầu trong một thời gian ngắn. Vui lòng chờ một lúc để thử lại.

Giải pháp cho vi phạm giới hạn về ngưỡng là gì?
Mã thông báo OAuth có giá trị trong một giờ. Người tiêu dùng API nên sử dụng mã thông báo này trong suốt một giờ đó, sau đó chỉ yêu cầu mã thông báo mới khi mã trước hết hạn.

Đâu là ví dụ về thời điểm vượt quá giới hạn về ngưỡng?
5 giây và 2 phút đều là khung thời gian quan sát, lần lượt đối với ngưỡng bùng nổ và ngưỡng trung bình. Ở một trong hai khung thời gian này, nếu một trong hai giới hạn về ngưỡng bị vi phạm từ một địa chỉ IP, thì hình phạt dành cho ngưỡng sẽ được áp dụng.

Ví dụ: Nếu một địa chỉ IP có 3 lần truy cập mỗi giây trong 2 giây, nhưng sau đó tốc độ truy cập giảm xuống dưới 3 lần mỗi giây, thì ngưỡng bùng nổ không bị vi phạm. Tuy nhiên, nếu một địa chỉ IP có 3 lần truy cập mỗi giây, liên tục trong 5 giây (ví dụ: ít nhất 15 lần truy cập trong 5 giây và tốc độ truy cập này được duy trì), thì ngưỡng bùng nổ đã bị vi phạm.