จัดการโควต้า

Google ปฏิทิน API มีโควต้าเพื่อให้แน่ใจว่าผู้ใช้ทุกคนใช้โควต้าดังกล่าวอย่างเป็นธรรม การใช้ API ของปฏิทินต้องพิจารณาข้อจำกัดที่สำคัญ 3 ประการดังนี้

  • ระบบจะบังคับใช้โควต้าการใช้งาน API ต่อโปรเจ็กต์และต่อผู้ใช้ ดูข้อมูลเพิ่มเติมได้ในส่วนถัดไป
  • ขีดจำกัดการใช้งานปฏิทินทั่วไป: หลีกเลี่ยง ขีดจำกัดการใช้ปฏิทิน
  • ขีดจำกัดการดำเนินการ: ระบบอาจจำกัดอัตราคำขอได้ทุกเมื่อ เช่น หากคุณพยายามเขียนไปยังปฏิทินเดียวติดต่อกันเร็วๆ

ประเภทของโควต้าการใช้งาน API ของปฏิทิน

ระบบบังคับใช้โควต้า 2 ประเภทดังนี้

  • ต่อนาทีต่อโปรเจ็กต์: นี่คือจำนวนคำขอที่สร้างโดยโปรเจ็กต์ Google Cloud
  • ต่อนาทีต่อโปรเจ็กต์ต่อผู้ใช้: นี่คือจำนวนคำขอที่สร้างโดยผู้ใช้รายใดรายหนึ่งในโปรเจ็กต์ Cloud ของคุณ ขีดจำกัดนี้มีจุดมุ่งหมายเพื่อช่วยให้คุณมั่นใจได้ว่าผู้ใช้ของคุณจะได้รับการกระจายการใช้งานที่เป็นธรรม

ระบบจะคำนวณโควต้าต่อนาทีโดยใช้หน้าต่างเลื่อน ดังนั้นการเข้าชมที่เพิ่มขึ้นอย่างรวดเร็วซึ่งเกินโควต้าต่อนาทีในช่วง 1 นาทีจะส่งผลให้มีการจำกัดอัตราการใช้งานในช่วงกรอบเวลาถัดไป เพื่อให้มั่นใจว่าการใช้งานของคุณจะยังคงไม่เกินโควต้า

หากใช้งานเกินโควต้า คุณจะถูกจำกัดอัตราและได้รับรหัสสถานะ 403 usageLimits หรือรหัสสถานะ 429 usageLimits สำหรับการค้นหา หากเกิดกรณีเช่นนี้ คุณสามารถดำเนินการได้ดังนี้

  1. ตรวจสอบว่าคุณทำตามแนวทางปฏิบัติแนะนำทั้งหมดแล้ว ซึ่งได้แก่ ใช้ Exponential Backoff, สุ่มรูปแบบการเข้าชม ใช้ข้อความ Push
  2. หากโปรเจ็กต์กำลังเติบโตและมีผู้ใช้มากขึ้น คุณสามารถขอเพิ่มโควต้าต่อโปรเจ็กต์ได้
  3. หากจำนวนโควต้าต่อผู้ใช้ถึงขีดจำกัดแล้ว คุณสามารถดำเนินการดังต่อไปนี้
    • หากคุณใช้บัญชีบริการ ให้จัดสรรภาระงานให้กับผู้ใช้ หรือแยกบัญชีบริการหลายบัญชี
    • แม้ว่าคุณจะขอเพิ่มโควต้าต่อผู้ใช้ได้ แต่โดยทั่วไปแล้ว เราไม่แนะนําให้เพิ่มโควต้าให้สูงกว่าค่าเริ่มต้น เนื่องจากแอปพลิเคชันอาจเริ่มถึงขีดจำกัดประเภทอื่นๆ เช่น ขีดจำกัดการใช้ปฏิทินทั่วไปหรือขีดจำกัดการดำเนินการ

คำขอเพิ่มโควต้า

หากต้องการดูหรือเปลี่ยนแปลงขีดจำกัดการใช้งานสำหรับโปรเจ็กต์หรือขอเพิ่มโควต้า ให้ทำดังนี้

  1. หากยังไม่มีบัญชีสำหรับการเรียกเก็บเงินสำหรับโปรเจ็กต์ ให้สร้างบัญชี
  2. ไปที่หน้า API ที่เปิดใช้ของไลบรารี API ในคอนโซล API และเลือก API จากรายการ
  3. หากต้องการดูและเปลี่ยนการตั้งค่าที่เกี่ยวข้องกับโควต้า ให้เลือกโควต้า หากต้องการดูสถิติการใช้งาน ให้เลือกการใช้งาน

ใช้ Exponential Backoff

เมื่อเราต้องการให้คุณลดอัตราคำขอ เราจะตอบกลับด้วย 403 "usageLimits" หรือ 429 (ดู เอกสารประกอบเกี่ยวกับข้อผิดพลาดฉบับเต็ม) นี่ไม่ใช่ข้อผิดพลาดร้ายแรงและเราคาดหวังให้คุณลองส่งคำขออีกครั้งหลังจากนี้ไม่นาน หากคำขอยังส่งถึงเร็วเกินไป เราจะถามอีกครั้ง และเช่นนี้ไปเรื่อยๆ เพื่อให้การทำงานเป็นไปอย่างถูกต้อง ความล่าช้าระหว่างคำขอจึงเพิ่มขึ้นเมื่อเวลาผ่านไป

โดยทั่วไปแล้ว คุณควรใช้ Exponential Backoff ที่ตัดให้สั้นลง โดยเอกสารประกอบของ Cloud Storage จะมีคำอธิบายที่ดีเกี่ยวกับวิธีการทำงานและอัลกอริทึมที่แนะนำ หากคุณกำลังใช้ไลบรารีของไคลเอ็นต์ Google โดยปกติแล้วจะมีการจัดการให้คุณ โปรดอ่านเอกสารประกอบของไลบรารี โดยปกติ คุณควรใช้ไลบรารี แทนการเขียนของคุณเอง

สุ่มรูปแบบการเข้าชม

ไคลเอ็นต์ปฏิทินมีแนวโน้มที่จะมีรูปแบบการรับส่งข้อมูลจำนวนมากที่เกิดจาก ไคลเอนต์หลายรายการที่ทำงานพร้อมกัน เช่น แนวทางปฏิบัติที่ไม่ดีที่พบบ่อยสำหรับไคลเอ็นต์ปฏิทินคือการซิงค์แบบเต็มเวลาเที่ยงคืน การทำเช่นนี้เกือบจะทำให้ใช้โควต้าต่อนาทีเกินขีดจำกัด และส่งผลให้เกิดการจำกัดอัตราและ Backoff

เพื่อหลีกเลี่ยงสถานการณ์นี้ โปรดกระจายการเข้าชมให้ตลอดทั้งวันหากเป็นไปได้ หากลูกค้าต้องทำการซิงค์รายวัน ให้ไคลเอ็นต์กำหนดเวลาแบบสุ่ม (แตกต่างกันไปสำหรับแต่ละไคลเอ็นต์) หากจำเป็นต้องดำเนินการเป็นประจำ ให้เปลี่ยนช่วงเวลา +/- 25% วิธีนี้จะทำให้การเข้าชมกระจายอย่างเท่าๆ กันและมอบประสบการณ์ของผู้ใช้ที่ดีขึ้นมาก

ใช้ข้อความ Push

กรณีการใช้งานทั่วไปคือต้องการดำเนินการเมื่อมีการเปลี่ยนแปลงในปฏิทินของผู้ใช้ รูปแบบการต้านทานการถูกชักจูงคือการสำรวจซ้ำ ทุกปฏิทินที่สนใจ การดำเนินการนี้จะใช้โควต้าทั้งหมดของคุณอย่างรวดเร็ว เช่น หากแอปพลิเคชันมีผู้ใช้ 5,000 คน และทำแบบสำรวจปฏิทินของผู้ใช้แต่ละราย 1 ครั้งใน 1 นาที คุณก็ต้องมีโควต้าต่อนาทีอย่างน้อย 5,000 รายการแม้ก่อนที่งานจะเสร็จ

แอปพลิเคชันฝั่งเซิร์ฟเวอร์สามารถลงทะเบียนข้อความ Push ได้ ซึ่งจะช่วยให้เราแจ้งเตือนคุณได้เมื่อมีสิ่งที่สนใจเกิดขึ้น การตั้งค่าเหล่านี้ต้องมีขั้นตอนเพิ่มขึ้น แต่สามารถใช้โควต้าได้อย่างมีประสิทธิภาพมากขึ้นและมอบประสบการณ์การใช้งานที่ดีขึ้นแก่ผู้ใช้ ตรวจสอบว่าคุณได้ระบุ eventType ที่ต้องการรับการแจ้งเตือน ดูข้อมูลเพิ่มเติมได้ที่ข้อความ Push

การทำบัญชีอย่างเหมาะสมกับบัญชีบริการ

หากแอปพลิเคชันของคุณดำเนินการตามคำขอโดยใช้การมอบสิทธิ์ทั่วทั้งโดเมน โดยค่าเริ่มต้น บัญชีบริการจะเรียกเก็บเงินตามโควต้า "ต่อนาทีต่อโปรเจ็กต์ต่อผู้ใช้" ไม่ใช่ผู้ใช้ที่คุณแอบอ้าง ซึ่งหมายความว่าบัญชีบริการมักจะใช้โควต้าจนหมดและถูกจํากัดอัตรา แม้ว่าอาจทํางานในปฏิทินของผู้ใช้หลายคนก็ตาม คุณหลีกเลี่ยงปัญหานี้ได้โดยใช้พารามิเตอร์ของ URL quotaUser (หรือส่วนหัว HTTP x-goog-quota-user) เพื่อระบุผู้ใช้ที่จะมีการเรียกเก็บเงิน ฟังก์ชันนี้ใช้สำหรับการคำนวณโควต้าเท่านั้น โปรดดูข้อมูลเพิ่มเติมที่การจำกัดคำขอต่อผู้ใช้ในเอกสารประกอบของ Cloud

การจัดการขีดจำกัดโควต้าสำหรับทดสอบ

เพื่อให้แอปพลิเคชันสามารถรับมือกับขีดจำกัดของโควต้าได้อย่างลงตัว (เช่น โดยการลองใหม่โดยใช้ Exponential Backoff และเพื่อลดสิ่งรบกวนที่อาจเกิดขึ้นกับผู้ใช้ เราขอแนะนำให้ทดสอบสถานการณ์นี้ในสภาพแวดล้อมจริงให้เหลือน้อยที่สุด

เพื่อให้การทดสอบดังกล่าวไม่แทรกแซงการใช้งานแอปพลิเคชันจริงของคุณ เราขอแนะนำให้ลงทะเบียนโปรเจ็กต์สำหรับการทดสอบเท่านั้นแยกต่างหากในคอนโซล Google API และกำหนดค่าโปรเจ็กต์ดังกล่าวให้คล้ายกับโปรเจ็กต์เวอร์ชันที่ใช้งานจริง จากนั้น คุณสามารถกำหนดโควต้าที่ต่ำเกินจริงสำหรับโปรเจ็กต์นี้และสังเกตลักษณะการทำงานของแอปพลิเคชันได้

การกำหนดราคา

การใช้ Google ปฏิทิน API ทั้งหมดพร้อมให้ใช้งานโดยไม่มีค่าใช้จ่ายเพิ่มเติม การใช้งานเกินขีดจำกัดคำขอโควต้าจะไม่มีการเรียกเก็บเงินเพิ่มเติม และจะไม่มีการเรียกเก็บเงินจากบัญชีของคุณ