Google Calendar API دارای سهمیه هایی است تا مطمئن شود که همه کاربران به طور منصفانه از آن استفاده می کنند. سه محدودیت مهم برای استفاده از تقویم API وجود دارد:
- سهمیه های استفاده از API برای هر پروژه و هر کاربر اعمال می شود. برای اطلاعات بیشتر به بخش بعدی مراجعه کنید.
- محدودیت های استفاده از تقویم عمومی : از محدودیت های استفاده از تقویم خودداری کنید.
- محدودیتهای عملیاتی: ممکن است در هر زمانی امتیاز شما محدود شود. به عنوان مثال اگر سعی می کنید به صورت متوالی روی یک تقویم بنویسید.
انواع سهمیه استفاده از API تقویم
دو نوع سهمیه اجرا می شود:
- در هر دقیقه در هر پروژه: این تعداد درخواستهایی است که توسط پروژه Google Cloud شما انجام میشود.
- در هر دقیقه برای هر پروژه به ازای هر کاربر: این تعداد درخواستهایی است که توسط یک کاربر خاص در پروژه Cloud شما انجام میشود. هدف این محدودیت کمک به شما برای اطمینان از توزیع عادلانه استفاده در بین کاربران است.
سهمیهها در هر دقیقه با استفاده از یک پنجره کشویی محاسبه میشوند، بنابراین افزایش سریع ترافیک که در طول یک دقیقه از سهمیه هر دقیقه شما فراتر میرود، منجر به محدود شدن نرخ در پنجره بعدی میشود تا اطمینان حاصل شود که استفاده شما به طور متوسط در حد نصاب باقی میماند.
اگر از هر یک از سهمیه ها فراتر رفت، امتیاز شما محدود است و کد وضعیت 403 usageLimits
یا کد وضعیت 429 usageLimits
را برای درخواست های خود دریافت می کنید. اگر این اتفاق بیفتد، کاری که می توانید انجام دهید این است:
- مطمئن شوید که تمام بهترین شیوهها را دنبال میکنید: از عقبنشینی نمایی استفاده کنید ، الگوهای ترافیک را تصادفی کنید ، از اعلانهای فشاری استفاده کنید .
- اگر پروژه شما در حال رشد است و کاربران بیشتری دارید، می توانید درخواست افزایش سهمیه هر پروژه را داشته باشید.
- اگر محدودیت سهمیه برای هر کاربر برآورده شد، می توانید کارهای زیر را انجام دهید:
- اگر از یک حساب سرویس استفاده می کنید، بار را به کاربران اختصاص دهید یا آن را بین چندین حساب سرویس تقسیم کنید.
- در حالی که میتوانید درخواست افزایش سهمیه هر کاربر کنید، به طور کلی توصیه نمیشود که آن را بالاتر از مقدار پیشفرض افزایش دهید، زیرا ممکن است برنامه شما شروع به رسیدن به انواع دیگر محدودیتها کند، مثلاً محدودیتهای استفاده از تقویم عمومی یا محدودیتهای عملیاتی.
درخواست افزایش سهمیه
برای مشاهده یا تغییر محدودیتهای استفاده برای پروژه خود، یا درخواست افزایش سهمیه، موارد زیر را انجام دهید:
- اگر قبلاً یک حساب صورتحساب برای پروژه خود ندارید، آن را ایجاد کنید.
- از صفحه Enabled APIs کتابخانه API در کنسول API دیدن کنید و یک API را از لیست انتخاب کنید.
- برای مشاهده و تغییر تنظیمات مربوط به سهمیه، سهمیه ها را انتخاب کنید. برای مشاهده آمار استفاده، استفاده را انتخاب کنید.
از عقب نشینی نمایی استفاده کنید
هنگامی که میخواهیم سرعت درخواستهای خود را کاهش دهید، یک پاسخ 403 "usageLimits" یا یک پاسخ 429 را برمیگردانیم (به مستندات کامل خطا مراجعه کنید). این یک خطای کشنده نیست و از شما انتظار داریم پس از یک فاصله کوتاه دوباره درخواست را امتحان کنید. اگر درخواستها هنوز خیلی سریع میرسند، دوباره درخواست میکنیم و غیره. برای اینکه این به درستی کار کند، مهم است که تاخیر بین درخواست ها در طول زمان افزایش یابد.
به طور کلی، شما باید از backoff نمایی کوتاه شده استفاده کنید. مستندات Cloud Storage توضیح خوبی از نحوه کار این و الگوریتم ترجیحی دارد. اگر از کتابخانه سرویس گیرنده Google استفاده می کنید، معمولاً این کار برای شما انجام می شود. با اسناد کتابخانه خود مشورت کنید به طور معمول، شما باید از پیاده سازی کتابخانه به جای نوشتن کتاب خود استفاده کنید.
تصادفی سازی الگوهای ترافیکی
کلاینتهای تقویم مستعد الگوهای ترافیکی ناهنجار هستند که توسط چندین مشتری که همزمان عملیات را انجام میدهند. به عنوان مثال، یک روش بد رایج برای مشتری Calendar انجام یک همگام سازی کامل در نیمه شب است. این تقریباً مطمئناً منجر به فراتر رفتن از سهمیه در دقیقه شما می شود و منجر به محدود کردن نرخ و عقب نشینی می شود.
برای جلوگیری از این امر، اطمینان حاصل کنید که ترافیک شما در طول روز تا جایی که ممکن است پخش شود. اگر مشتری شما نیاز به همگام سازی روزانه دارد، از مشتری بخواهید زمان تصادفی (برای هر مشتری متفاوت) تعیین کند. اگر نیاز به انجام یک عملیات به طور منظم دارید، فاصله آن را 25% +/- تغییر دهید. این باعث توزیع یکنواخت ترافیک شده و تجربه کاربری بسیار بهتری را ارائه می دهد.
از اعلان های فشار استفاده کنید
یک مورد معمول استفاده این است که می خواهید هر زمان که چیزی در تقویم کاربر تغییر می کند یک عمل انجام دهید. یک ضد الگو در اینجا نظرسنجی مکرر از هر تقویم مورد علاقه است. این کار خیلی سریع تمام سهمیه شما را مصرف میکند - برای مثال، اگر برنامه شما 5000 کاربر داشته باشد و تقویم هر کاربر را یک بار در دقیقه نظرسنجی کند، در این صورت حتی قبل از انجام هر کاری به یک سهمیه در دقیقه حداقل 5000 نیاز دارد.
برنامههای سمت سرور میتوانند برای اعلانهای فشاری ثبت نام کنند، که به ما امکان میدهد زمانی که اتفاق جالبی رخ میدهد به شما اطلاع دهیم. راه اندازی این موارد به کار بیشتری نیاز دارد، اما امکان استفاده بسیار کارآمدتر از سهمیه شما را فراهم می کند و تجربه کاربری بهتری را ارائه می دهد. اطمینان حاصل کنید که eventType
که می خواهید برای آن مطلع شوید مشخص کنید. برای اطلاعات بیشتر، اعلانهای فشاری را ببینید.
حسابداری مناسب با حساب های خدماتی
اگر برنامه شما درخواستها را با استفاده از تفویض اختیار در سطح دامنه انجام میدهد، بهطور پیشفرض، هزینه حساب سرویس با توجه به سهمیههای «در دقیقه برای هر پروژه به ازای هر کاربر» محاسبه میشود و نه کاربری که جعل هویت میکنید. این بدان معنی است که حساب سرویس احتمالاً از سهمیه و نرخ محدود خواهد شد، حتی اگر ممکن است در تقویم چندین کاربر کار کند. می توانید با استفاده از پارامتر URL quotaUser
(یا هدر HTTP x-goog-quota-user
) از این امر جلوگیری کنید تا مشخص کنید از کدام کاربر هزینه دریافت می شود. این فقط برای محاسبات سهمیه استفاده می شود. برای اطلاعات بیشتر، محدود کردن درخواستها برای هر کاربر را در مستندات Cloud ببینید.
کنترل حد سهمیه آزمون
برای اطمینان از اینکه برنامه شما میتواند بهخوبی در عمل به محدودیتهای سهمیه رسیدگی کند (مثلاً با انجام تلاشهای مجدد با عقبنشینی نمایی ) و برای به حداقل رساندن هرگونه اختلال احتمالی برای کاربران، ما قویاً توصیه میکنیم این سناریو را در یک محیط واقعی آزمایش کنید.
برای اینکه چنین آزمایشی با استفاده واقعی از برنامه شما تداخل نداشته باشد، توصیه می کنیم یک پروژه آزمایشی جداگانه را در Google API Console ثبت کنید و آن را به روشی مشابه پروژه تولیدی خود پیکربندی کنید . سپس می توانید سهمیه های مصنوعی پایینی را برای این پروژه تعیین کنید و رفتار برنامه خود را مشاهده کنید.
قیمت گذاری
تمام استفاده از Google Calendar API بدون هزینه اضافی در دسترس است. فراتر از محدودیت های درخواست سهمیه هزینه اضافی ندارد و حساب شما صورتحساب نمی شود.