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 bước kiểm tra hạn mức tốc độ bổ sung trên phần phụ trợ 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 rồi thử lại sau. Miễn là bạn tuân thủ hạn mức mỗi phút được liệt kê trong các bảng sau, bạn có thể gửi số lượng yêu cầu không giới hạn mỗi ngày.
Có hai loại hạn mức áp dụng cho các phương thức API Chat: hạn mức trên mỗi không gian và hạn mức trên mỗi 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ốc độ truy vấn trong một không gian nhất định và được chia sẻ giữa tất 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 các giới hạn về số lượng truy vấn trên mỗi không gian:
Hạn mức trên mỗi không gian |
Phương thức Chat API |
Giới hạn (mỗi 60 giây, được chia sẻ |
---|---|---|
Số lượt đọc mỗi phút |
|
900 |
Số lượt ghi mỗi phút |
|
60 |
Hạn mức trên mỗi dự án
Hạn mức trên mỗi dự án giới hạn tốc độ truy vấn cho một dự án Google Cloud, do đó áp dụng cho một ứng dụng Chat duy nhất gọi các phương thức Chat API đượ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 trên mỗi dự án. Bạn cũng có thể xem các hạn mức này trên trang Hạn mức.
Hạn mức theo dự án |
Phương thức Chat API |
Giới hạn (mỗi 60 giây) |
---|---|---|
Số lần ghi tin nhắn mỗi phút |
|
3000 |
Số tin nhắn được đọc mỗi phút |
|
3000 |
Số lượt ghi từ gói thành viên mỗi phút |
|
300 |
Số lần đọc gói thành viên mỗi phút |
|
3000 |
Số lượt ghi không gian mỗi phút |
|
60 |
Số lần đọc không gian mỗi phút |
|
3000 |
Số lượt ghi tệp đính kèm mỗi phút |
|
600 |
Số lượt đọc tệp đính kèm mỗi phút |
|
3000 |
Số lượt ghi phản ứng mỗi phút |
|
600 |
Số lượt đọc phản ứng mỗi phút |
|
3000 |
Hạn mức sử dụng bổ sung
Có thêm các hạn mức giới hạn khi 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 ít hơn 35 không gian mỗi phút và 800 không gian mỗi giờ thuộc những loại này. Không gian thuộc loại DIRECT_MESSAGE
không phải tuân theo các hạn mức hạn mức bổ sung này.
Lưu lượng truy cập API cao nhắm đế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 xuất hiện 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ả 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 sử dụng mã để phát hiện ngoại lệ và sử dụng thời gian đợi lũy thừa bị cắt bớt để đảm bảo thiết bị của bạn không tạo ra quá nhiều tải.
Thuật toán thời gian đợi luỹ thừa là một chiến lược xử lý sai số chuẩn cho các ứng dụng mạng. Thuật toán thời gian đợi luỹ thừa sẽ 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 các 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 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 chờ giữa các lần thử lại lên đến thời gian đợi tối đa. Ví dụ:
- Gửi yêu cầu đến API Google Chat.
- 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. - Nếu yêu cầu không thành công, hãy đợi 2 +
random_number_milliseconds
rồi thử yêu cầu lại. - Nếu yêu cầu không thành công, hãy đợi 4 +
random_number_milliseconds
rồi thử yêu cầu lại. - Và tương tự như vậy, lên đến thời gian
maximum_backoff
. - Tiếp tục chờ và thử lại tối đa một số lần thử lại, nhưng không 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á theo một số tình huống và tất cả ứng dụng thử lại cùng một lúc, gửi yêu cầu theo các wave đã được đồng bộ hoá. Giá trị củarandom_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 đã đế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. Ví dụ: nếu ứ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 đó, 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.
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 có thể yêu cầu tăng hạn mức. Lệnh gọi API của 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ý tăng hạn mức không đảm bảo rằng 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 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 sử dụng Google Cloud ngày càng nhiều, 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ẽ 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: