Hạn mức sử dụng

Vì Google Chat API là một dịch vụ dùng chung, nên chúng tôi áp dụng các hạn mức và giới hạn để đảm bảo mọi người dùng đều sử dụng API này một cách công bằng, đồng thời bảo vệ hiệu suất chung của Google Workspace.

Nếu vượt quá hạn mức, bạn sẽ nhận được phản hồi của mã trạng thái HTTP 429: Too many requests. Việc kiểm tra giới hạn số lượng yêu cầu bổ sung trên phần phụ trợ của Chat cũng có thể tạo ra cùng một phản hồi lỗi. Nếu lỗi này xảy ra thì bạn nên sử dụng thuật toán thời gian đợi luỹ thừa rồi thử lại sau. Miễn là bạn đáp ứng hạn mức mỗi phút nêu trong các bảng sau, thì sẽ không có giới hạn về số lượng yêu cầu bạn có thể thực hiện mỗi ngày.

Có 2 loại hạn mức áp dụng cho các phương thức của API Chat: theo hạn mức và hạn mức theo từng dự án.

Hạn mức trên mỗi không gian

Hạn mức trên mỗi không gian giới hạn tỷ lệ truy vấn trong một không gian nhất định và được chia sẻ giữa tất cả các ứng dụng Chat hoạt động trong không gian đó, gọi các phương thức API Chat được liệt kê cho từng hạn mức.

Bảng sau đây cung cấp thông tin chi tiết về hạn mức truy vấn trên mỗi không gian:

Hạn mức trên mỗi không gian

Các phương thức của API Chat

Giới hạn (mỗi 60 giây, được chia sẻ
trên tất cả các ứng dụng Chat trong không gian)

Số lượt đọc mỗi phút

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

Số lượt ghi mỗi phút

media.upload

spaces.delete

spaces.patch

spaces.messages.create (cũng áp dụng cho webhook đến)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

Hạn mức cho mỗi dự án

Hạn mức theo từng dự án giới hạn tỷ lệ truy vấn của một dự án trên Google Cloud. Do đó, hạn mức này sẽ áp dụng cho một ứng dụng Chat duy nhất gọi các phương thức API Chat được chỉ định cho mỗi hạn mức.

Bảng sau đây trình bày chi tiết các hạn mức truy vấn cho mỗi dự án. Bạn cũng có thể tìm thấy các giới hạn này trên trang Hạn mức.

Hạn mức trên mỗi dự án

Các phương thức của API Chat

Giới hạn (mỗi 60 giây)

Số lượt ghi tin nhắn mỗi phút

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

Số lượt đọc thông báo mỗi phút

spaces.messages.get

spaces.messages.list

3000

Số lượt ghi thành viên mỗi phút

spaces.members.create

spaces.members.delete

300

Số lượt đọc thành viên mỗi phút

spaces.members.get

spaces.members.list

3000

Không gian ghi mỗi phút

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Không gian đọc mỗi phút

spaces.get

spaces.list

spaces.findDirectMessage

3000

Số lượt ghi tệp đính kèm mỗi phút

media.upload

600

Số lượt đọc tệp đính kèm mỗi phút

spaces.messages.attachments.get

media.download

3000

Số lượt ghi phản ứng mỗi phút

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Số lượt đọc phản ứng mỗi phút

spaces.messages.reactions.list

3000

Hạn mức sử dụng bổ sung

Có thêm các hạn mức bổ sung để tạo không gian thuộc loại GROUP_CHAT hoặc SPACE (bằng cách sử dụng phương thức spaces.create hoặc spaces.setup). Tạo dưới 35 không gian mỗi phút và 210 không gian mỗi giờ thuộc các loại này. Các không gian thuộc loại DIRECT_MESSAGE không phải tuân theo các giới hạn bổ sung này.

Các truy vấn lớn mỗi giây (QPS) của bất kỳ API nào nhắm đến cùng một không gian đều có thể kích hoạt thêm các giới hạn nội bộ không hiển thị trên trang Hạn mức.

Giải quyết lỗi hạn mức dựa trên thời gian

Đối với mọi lỗi theo thời gian (tối đa N yêu cầu trong mỗi X phút), mã của bạn nên phát hiện ra ngoại lệ và sử dụng tính năng thời gian đợi luỹ thừa bị cắt ngắn để đảm bảo thiết bị không tạo ra quá tải.

Thuật toán thời gian đợi luỹ thừa là một chiến lược xử lý lỗi chuẩn cho các ứng dụng mạng. Thuật toán thời gian đợi luỹ thừa thử lại các yêu cầu bằng cách sử dụng thời gian chờ tăng theo cấp số nhân giữa các yêu cầu, lên đến thời gian đợi tối đa. Nếu yêu cầu vẫn không thành công, điều quan trọng là độ trễ giữa các yêu cầu sẽ tăng lên theo thời gian cho đến khi yêu cầu được thực hiện thành công.

Thuật toán mẫu

Thuật toán thời gian đợi luỹ thừa sẽ thử lại các yêu cầu theo cấp số nhân, tăng thời gian chờ giữa các lần thử lại cho đến thời gian đợi tối đa. Ví dụ:

  1. Gửi yêu cầu tới API Google Chat.
  2. Nếu yêu cầu không thành công, hãy đợi 1 + random_number_milliseconds rồi thử lại yêu cầu.
  3. Nếu yêu cầu không thành công, hãy đợi 2 + random_number_milliseconds rồi thử lại yêu cầu.
  4. Nếu yêu cầu không thành công, hãy đợi 4 + random_number_milliseconds rồi thử lại yêu cầu.
  5. Và cứ thế, tối đa maximum_backoff lần.
  6. Tiếp tục chờ và thử lại với số lần thử lại tối đa, nhưng không được tăng thời gian chờ giữa các lần thử lại.

trong đó:

  • Thời gian chờ là min(((2^n)+random_number_milliseconds), maximum_backoff), trong đó n tăng thêm 1 cho mỗi lần lặp lại (yêu cầu).
  • random_number_milliseconds là một số mili giây ngẫu nhiên nhỏ hơn hoặc bằng 1.000. Điều này giúp tránh trường hợp nhiều ứng dụng được đồng bộ hoá trong một số tình huống và tất cả đều thử lại cùng một lúc, gửi yêu cầu dưới dạng các giai đoạn được đồng bộ hoá. Giá trị của random_number_milliseconds sẽ được tính toán lại sau mỗi yêu cầu thử lại.
  • maximum_backoff thường là 32 hoặc 64 giây. Giá trị thích hợp tuỳ thuộc vào trường hợp sử dụng.

Ứng dụng có thể tiếp tục thử lại sau khi đã đạt đến thời gian maximum_backoff. Các lần thử lại sau thời điểm này không cần phải tiếp tục tăng thời gian đợi. Ví dụ: nếu sử dụng thời gian maximum_backoff là 64 giây, thì sau khi đạt đến giá trị này, ứng dụng có thể thử lại sau mỗi 64 giây. Tại một thời điểm nào đó, bạn nên ngăn ứng dụng thử lại vô thời hạn.

Thời gian chờ giữa các lần thử lại và số lần thử lại phụ thuộc vào trường hợp sử dụng và điều kiện mạng của bạn.

Yêu cầu tăng hạn mức cho mỗi dự án

Tuỳ thuộc vào mức sử dụng tài nguyên của dự án, bạn nên yêu cầu tăng hạn mức. Các lệnh gọi API của một tài khoản dịch vụ được coi là sử dụng một tài khoản duy nhất. Việc tăng hạn mức không đảm bảo rằng ứng dụng của bạn sẽ được phê duyệt. Việc tăng hạn mức lớn có thể mất nhiều thời gian để được phê duyệt hơn.

Không phải dự án nào cũng có cùng hạn mức. Khi bạn sử dụng Google Cloud ngày càng nhiều theo thời gian, hạn mức của bạn có thể cần tăng lên. Nếu dự kiến mức sử dụng sắp tới sẽ tăng lên đáng kể, bạn có thể chủ động yêu cầu điều chỉnh hạn mức trên trang Hạn mức trong bảng điều khiển Google Cloud.

Để tìm hiểu thêm, hãy xem các tài nguyên sau: