Quản lý hạn mức

API Lịch Google có hạn mức để đảm bảo rằng tất cả người dùng đều sử dụng API này một cách công bằng. Có 3 hạn chế quan trọng cần cân nhắc khi sử dụng Calendar API:

  • Hạn mức sử dụng API được áp dụng cho mỗi dự án và mỗi người dùng. Hãy xem phần tiếp theo để biết thêm thông tin.
  • Các giới hạn chung khi sử dụng Lịch: Tránh các giới hạn khi sử dụng Lịch.
  • Hạn mức vận hành: bạn có thể bị giới hạn tốc độ bất cứ lúc nào. Ví dụ: nếu bạn cố gắng ghi vào một lịch duy nhất trong thời gian ngắn.

Các loại hạn mức sử dụng Calendar API

Có hai loại hạn mức được áp dụng:

  • Mỗi phút cho mỗi dự án: Đây là số lượng yêu cầu mà dự án Google Cloud của bạn thực hiện.
  • Mỗi phút cho mỗi dự án cho mỗi người dùng: Đây là số lượng yêu cầu do một người dùng cụ thể bất kỳ trong dự án trên Cloud của bạn thực hiện. Mức giới hạn này nhằm giúp bạn đảm bảo phân phối công bằng mức sử dụng cho người dùng.

Hạn mức được tính theo phút bằng cách sử dụng một cửa sổ trượt. Do đó, nếu lưu lượng truy cập tăng đột biến và vượt quá hạn mức mỗi phút trong một phút, thì bạn sẽ bị giới hạn tốc độ trong cửa sổ tiếp theo để đảm bảo rằng mức sử dụng trung bình của bạn vẫn nằm trong hạn mức.

Nếu vượt quá một trong hai hạn mức này, bạn sẽ bị giới hạn tốc độ và nhận được mã trạng thái 403 usageLimits hoặc mã trạng thái 429 usageLimits cho các truy vấn của mình. Nếu điều này xảy ra, bạn có thể làm những việc sau:

  1. Đảm bảo bạn làm theo tất cả các phương pháp hay nhất: sử dụng cơ chế lùi luỹ thừa, tạo mẫu lưu lượng truy cập ngẫu nhiên, sử dụng thông báo đẩy.
  2. Nếu dự án của bạn đang phát triển và có nhiều người dùng hơn, bạn có thể yêu cầu tăng hạn mức cho mỗi dự án.
  3. Nếu đạt đến hạn mức cho mỗi người dùng, bạn có thể làm như sau:
    • Nếu bạn sử dụng tài khoản dịch vụ, hãy phân bổ tải cho người dùng hoặc chia tải giữa nhiều tài khoản dịch vụ.
    • Mặc dù bạn có thể yêu cầu tăng hạn mức cho mỗi người dùng, nhưng nói chung, bạn không nên tăng hạn mức này lên trên giá trị mặc định vì ứng dụng của bạn có thể bắt đầu gặp phải các loại hạn mức khác, chẳng hạn như hạn mức sử dụng lịch chung hoặc hạn mức hoạt động.

Yêu cầu tăng hạn mức

Để xem hoặc thay đổi hạn mức sử dụng cho dự án hoặc để yêu cầu tăng hạn mức, hãy làm như sau:

  1. Nếu bạn chưa có tài khoản thanh toán cho dự án của mình, hãy tạo một tài khoản.
  2. Truy cập trang API đã bật của thư viện API trong Bảng điều khiển API, chọn một API từ danh sách.
  3. Để xem và thay đổi chế độ cài đặt liên quan đến hạn mức, hãy chọn Hạn mức. Để xem thống kê sử dụng, hãy chọn Mức sử dụng.

Sử dụng thuật toán thời gian đợi luỹ thừa

Khi bạn cần giảm tốc độ yêu cầu, chúng tôi sẽ trả về phản hồi "usageLimits" 403 hoặc phản hồi 429 (xem tài liệu đầy đủ về lỗi). Đây không phải là lỗi nghiêm trọng và bạn nên thử lại yêu cầu sau một khoảng thời gian ngắn. Nếu các yêu cầu vẫn đến quá nhanh, chúng tôi sẽ hỏi lại và cứ như vậy. Để hoạt động này diễn ra chính xác, điều quan trọng là độ trễ giữa các yêu cầu phải tăng theo thời gian.

Thông thường, bạn nên sử dụng thuật toán giảm thời gian chờ luỹ thừa bị cắt bớt; tài liệu về Cloud Storage có phần giải thích rõ ràng về cách thức hoạt động của thuật toán này và thuật toán ưu tiên. Nếu bạn đang sử dụng một thư viện ứng dụng Google, thì việc này thường sẽ được xử lý cho bạn; hãy tham khảo tài liệu thư viện của bạn. Thông thường, bạn nên sử dụng việc triển khai thư viện thay vì tự viết.

Tạo ngẫu nhiên các mô hình giao thông

Các ứng dụng lịch có xu hướng có các mẫu lưu lượng truy cập đột biến do nhiều ứng dụng thực hiện các thao tác cùng một lúc. Ví dụ: một phương pháp hay thường thấy nhưng không nên áp dụng đối với ứng dụng Lịch là thực hiện đồng bộ hoá toàn bộ vào lúc nửa đêm. Điều này gần như chắc chắn sẽ dẫn đến việc vượt quá hạn ngạch mỗi phút và dẫn đến việc giới hạn tốc độ và thời gian chờ.

Để tránh điều này, hãy đảm bảo rằng lưu lượng truy cập của bạn được phân bổ trong suốt cả ngày bất cứ khi nào có thể. Nếu khách hàng của bạn cần đồng bộ hoá hằng ngày, hãy để khách hàng xác định một thời gian ngẫu nhiên (khác nhau đối với mỗi khách hàng). Nếu bạn cần thực hiện một thao tác thường xuyên, hãy thay đổi khoảng thời gian +/- 25%. Điều này sẽ phân phối lưu lượng truy cập đồng đều hơn và mang lại trải nghiệm tốt hơn nhiều cho người dùng.

Sử dụng thông báo đẩy

Một trường hợp sử dụng phổ biến là muốn thực hiện một hành động bất cứ khi nào có thay đổi trong lịch của người dùng. Một mẫu chống lại ở đây là liên tục thăm dò ý kiến về mọi lịch mà bạn quan tâm. Thao tác này sẽ rất nhanh chóng sử dụng hết hạn mức của bạn. Ví dụ: nếu ứng dụng của bạn có 5.000 người dùng và thăm dò lịch của mỗi người dùng một lần mỗi phút, thì thao tác này sẽ yêu cầu hạn mức mỗi phút ít nhất là 5.000 ngay cả trước khi thực hiện bất kỳ thao tác nào.

Các ứng dụng phía máy chủ có thể đăng ký nhận thông báo đẩy, nhờ đó chúng tôi có thể thông báo cho bạn khi có điều gì đó thú vị xảy ra. Những cách này đòi hỏi bạn phải bỏ ra nhiều công sức hơn để thiết lập, nhưng cho phép sử dụng hạn mức hiệu quả hơn đáng kể và mang lại trải nghiệm tốt hơn cho người dùng. Đảm bảo rằng bạn chỉ định eventType mà bạn muốn nhận thông báo. Để biết thêm thông tin, hãy xem bài viết Thông báo đẩy.

Kế toán phù hợp với tài khoản dịch vụ

Nếu ứng dụng của bạn đang thực hiện các yêu cầu bằng cách sử dụng quyền uỷ trên toàn miền, thì theo mặc định, tài khoản dịch vụ sẽ bị tính phí liên quan đến hạn mức "mỗi phút cho mỗi dự án cho mỗi người dùng", chứ không phải người dùng mà bạn đang mạo danh. Điều này có nghĩa là tài khoản dịch vụ có thể hết hạn mức và bị giới hạn tốc độ, ngay cả khi tài khoản đó có thể đang hoạt động trên lịch của nhiều người dùng. Bạn có thể tránh điều này bằng cách sử dụng tham số URL quotaUser (hoặc tiêu đề HTTP x-goog-quota-user) để cho biết người dùng nào sẽ bị tính phí. Chỉ dùng để tính toán hạn mức. Hãy xem phần Giới hạn số lượng yêu cầu cho mỗi người dùng trong tài liệu về Cloud để biết thêm thông tin.

Xử lý hạn mức thử nghiệm

Để đảm bảo ứng dụng của bạn có thể xử lý một cách hiệu quả việc đạt đến hạn mức trong thực tế (ví dụ: bằng cách thực hiện các lần thử lại với thuật toán thời gian đợi luỹ thừa) và để giảm thiểu mọi sự gián đoạn có thể xảy ra cho người dùng, bạn nên kiểm thử tình huống này trong một môi trường thực.

Để hoạt động kiểm thử như vậy không ảnh hưởng đến việc sử dụng ứng dụng thực của bạn, chúng tôi khuyên bạn nên đăng ký một dự án chỉ dành cho kiểm thử riêng biệt trong Google API Consoleđịnh cấu hình dự án đó theo cách tương tự như dự án phát hành công khai của bạn. Sau đó, bạn có thể đặt hạn mức thấp giả tạo cho dự án này và quan sát hành vi của ứng dụng.

Giá

Mọi hoạt động sử dụng Google Calendar API đều miễn phí. Việc vượt quá hạn mức yêu cầu không phát sinh thêm phí và tài khoản của bạn sẽ không bị tính phí.