Hạn mức sử dụng

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

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

Nhiều loại hạn mức có thể áp dụng cho các phương thức API Chat: hạn mức mỗi dự án, mỗi không gian và mỗi người dùng.

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

Hạn mức mỗi dự án giới hạn tốc độ truy vấn cho một dự án trên đám mây của Google, do đó, á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 về các giới hạn truy vấn 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 mỗi dự án

Phương thức API Chat

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

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

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

Số lần đọc tin nhắn mỗi phút

spaces.messages.get

spaces.messages.list

3000

Số lần ghi tư cách thành viên mỗi phút

spaces.members.create

spaces.members.delete

300

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

spaces.members.get

spaces.members.list

3000

Số lần ghi không gian mỗi phút

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Số lần đọc không gian mỗi phút

spaces.get

spaces.list

spaces.findDirectMessage

3000

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

media.upload

600

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

spaces.messages.attachments.get

media.download

3000

Số lần ghi lượt thể hiện cảm xúc mỗi phút

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Số lần đọc lượt thể hiện cảm xúc mỗi phút

spaces.messages.reactions.list

3000

Số lần ghi CustomEmoji mỗi phút

customEmojis.create

customEmojis.delete

600

Số lần đọc CustomEmoji mỗi phút

customEmojis.get

customEmojis.list

3000

Số lần ghi mục mỗi phút

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

600

Số lần đọc mục mỗi phút

users.sections.list

users.sections.items.list

3000

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

Hạn mức mỗi không gian giới hạn tốc độ 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 mỗi hạn mức.

Bảng sau đây trình bày chi tiết về các giới hạn truy vấn mỗi không gian:

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

Phương thức API Chat

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

Số lần đọc mỗi giây

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

15

Số lần ghi mỗi giây

media.upload

spaces.delete

spaces.patch

spaces.messages.create (Các giới hạn bổ sung áp dụng cho webhook đến)

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.delete

1

Tạo số lần ghi lượt thể hiện cảm xúc mỗi giây

spaces.messages.reactions.create

5

Số lần ghi tin nhắn mỗi giây trong khi nhập dữ liệu vào Google Chat

spaces.messages.create

10

Hạn mức mỗi người dùng

Hạn mức mỗi người dùng giới hạn tốc độ truy vấn cho một người dùng Google Chat. Các truy vấn liên quan đến tất cả các ứng dụng Chat gọi một phương thức API Chat thay mặt cho người dùng (sử dụng phương thức xác thực người dùng).

Bảng sau đây trình bày chi tiết về các giới hạn truy vấn mỗi người dùng:

Hạn mức mỗi người dùng

Phương thức API Chat

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

Số lần ghi CustomEmoji mỗi giây

customEmojis.create

customEmojis.delete

1

Số lần đọc CustomEmoji mỗi giây

customEmojis.get

customEmojis.list

15

Số lần ghi mục mỗi giây

users.sections.create

users.sections.delete

users.sections.patch

users.sections.position

users.sections.items.move

1

Số lần đọc mục mỗi giây

users.sections.list

users.sections.items.list

15

Các giới hạn sử dụng bổ sung

Lưu lượng truy cập API cao nhắm mục tiêu đến cùng một không gian có thể kích hoạt các giới hạn nội bộ bổ sung 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 tất cả các lỗi dựa trên thời gian (tối đa N yêu cầu mỗi X phút), bạn nên để mã của mình nắm bắt ngoại lệ và sử dụng thuật toán thời gian đợi luỹ thừa bị cắt ngắn để đảm bảo rằng thiết bị của bạn không tạo ra tải quá mức.

Thuật toán thời gian đợi luỹ thừa là một chiến lược xử lý lỗi tiêu 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 tăng thời gian đợi giữa các yêu cầu theo cấp số nhân, tối đa là thời gian đợi luỹ thừa. Nếu các yêu cầu vẫn không thành công, thì điều quan trọng là độ trễ giữa các yêu cầu phải tăng theo thời gian cho đến khi yêu cầu thành công.

Thuật toán mẫu

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

  1. Đưa ra yêu cầu đối vớ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ứ như vậy, cho đến thời gian maximum_backoff.
  6. Tiếp tục đợi và thử lại cho đến một số lần thử lại tối đa, nhưng không tăng thời gian đợi giữa các lần thử lại.

trong đó:

  • Thời gian đợi là min(((2^n)+random_number_milliseconds), maximum_backoff), với n được tăng thêm 1 cho mỗi lần lặp (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 các trường hợp nhiều ứng dụng được đồng bộ hoá bởi 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 theo các đợt được đồng bộ hoá. Giá trị của random_number_milliseconds đượ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 phụ 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 tiếp tục tăng thời gian đợi luỹ thừa. Ví dụ: nếu một ứng dụng 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 đó, các ứng dụng sẽ bị ngăn không cho thử lại vô thời hạn.

Thời gian đợi 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 mỗi dự án

Tuỳ thuộc vào mức sử dụng tài nguyên của dự án, bạn có thể muốn yêu cầu điều chỉnh 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 đăng ký hạn mức đã điều chỉnh không đảm bảo được phê duyệt. Các yêu cầu điều chỉnh hạn mức làm tăng đáng kể giá trị hạn mức có thể mất nhiều thời gian hơn để được phê duyệt.

Không phải dự án nào cũng có cùng hạn mức. Khi bạn ngày càng sử dụng Google Cloud theo thời gian, giá trị hạn mức có thể cần tăng lên. Nếu dự kiến mức sử dụng sẽ tăng đáng kể trong thời gian tới, 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: