API تقویم گوگل سهمیهبندیهایی دارد تا اطمینان حاصل شود که همه کاربران به طور منصفانه از آن استفاده میکنند. هنگام استفاده از API تقویم، سه محدودیت مهم وجود دارد که باید در نظر گرفته شوند:
- سهمیه استفاده از API برای هر پروژه و هر کاربر اعمال میشود. برای اطلاعات بیشتر به بخش بعدی مراجعه کنید.
- محدودیتهای کلی استفاده از تقویم : از محدودیتهای استفاده از تقویم اجتناب کنید.
- محدودیتهای عملیاتی: ممکن است در هر زمانی با محدودیت سرعت مواجه شوید. برای مثال، اگر سعی کنید پشت سر هم و سریع در یک تقویم بنویسید.
انواع سهمیههای استفاده از API تقویم
دو نوع سهمیه اعمال میشود:
- در هر دقیقه برای هر پروژه: این تعداد درخواستهای انجام شده توسط پروژه Google Cloud شما است.
- در هر دقیقه به ازای هر پروژه به ازای هر کاربر: این تعداد درخواستهای انجام شده توسط هر کاربر خاص در پروژه ابری شما است. هدف این محدودیت کمک به شما در اطمینان از توزیع عادلانه استفاده بین کاربرانتان است.
سهمیهها با استفاده از یک پنجره کشویی در هر دقیقه محاسبه میشوند، بنابراین افزایش سریع ترافیک که در طول یک دقیقه از سهمیه شما در هر دقیقه بیشتر شود، منجر به محدودیت سرعت در طول پنجره بعدی خواهد شد تا اطمینان حاصل شود که به طور متوسط، میزان استفاده شما در محدوده سهمیه باقی میماند.
اگر از هر یک از سهمیهها تجاوز شود، نرخ شما محدود میشود و کد وضعیت 403 usageLimits یا کد وضعیت 429 usageLimits را برای درخواستهای خود دریافت میکنید. در این صورت، میتوانید اقدامات زیر را انجام دهید:
- مطمئن شوید که تمام بهترین شیوهها را دنبال میکنید: از backoff نمایی استفاده کنید ، الگوهای ترافیک را تصادفی کنید ، از اعلانهای فوری استفاده کنید .
- اگر پروژه شما در حال رشد است و کاربران بیشتری دارید، میتوانید درخواست افزایش سهمیه هر پروژه را بدهید.
- اگر محدودیت سهمیه هر کاربر اعمال شود، میتوانید موارد زیر را انجام دهید:
- اگر از یک حساب کاربری سرویس استفاده میکنید، بار را به کاربران اختصاص دهید یا آن را بین چندین حساب کاربری سرویس تقسیم کنید.
- اگرچه میتوانید درخواست افزایش سهمیه هر کاربر را بدهید، اما بهطورکلی توصیه نمیشود که آن را بالاتر از مقدار پیشفرض افزایش دهید زیرا ممکن است برنامه شما با انواع دیگری از محدودیتها، بهعنوانمثال محدودیتهای استفاده از تقویم عمومی یا محدودیتهای عملیاتی، مواجه شود.
درخواست افزایش سهمیه
برای مشاهده یا تغییر محدودیتهای استفاده برای پروژه خود یا درخواست افزایش سهمیه خود، موارد زیر را انجام دهید:
- اگر هنوز برای پروژه خود حساب کاربری ندارید، یکی ایجاد کنید.
- به صفحه APIهای فعالشده در کتابخانه API در کنسول API مراجعه کنید و یک API را از لیست انتخاب کنید.
- برای مشاهده و تغییر تنظیمات مربوط به سهمیه، گزینه سهمیهها (Quotas) را انتخاب کنید. برای مشاهده آمار استفاده، گزینه استفاده (Usage) را انتخاب کنید.
از پسروی نمایی استفاده کنید
وقتی میخواهیم سرعت درخواستهای شما کاهش یابد، یک پاسخ ۴۰۳ "usageLimits" یا یک پاسخ ۴۲۹ برمیگردانیم (به مستندات کامل خطا مراجعه کنید). این یک خطای مهلک نیست و انتظار داریم که شما درخواست را پس از یک فاصله کوتاه دوباره امتحان کنید. اگر درخواستها هنوز خیلی سریع میرسند، دوباره درخواست خواهیم کرد و به همین ترتیب ادامه میدهیم. برای اینکه این کار به درستی انجام شود، مهم است که تأخیر بین درخواستها به مرور زمان افزایش یابد.
به طور کلی، شما باید از روش بازگشت نمایی کوتاهشده استفاده کنید؛ مستندات ذخیرهسازی ابری توضیح خوبی در مورد نحوهی کار و الگوریتم ترجیحی آن دارد. اگر از یک کتابخانهی کلاینت گوگل استفاده میکنید، معمولاً این کار برای شما انجام میشود؛ به مستندات کتابخانهی خود مراجعه کنید. معمولاً، شما باید از پیادهسازی کتابخانه استفاده کنید تا اینکه خودتان بنویسید.
الگوهای ترافیک را تصادفی کنید
کلاینتهای تقویم مستعد الگوهای ترافیکی نامنظم هستند که ناشی از انجام همزمان عملیات توسط چندین کلاینت است. به عنوان مثال، یک روش بد رایج برای یک کلاینت تقویم، انجام همگامسازی کامل در نیمهشب است. این تقریباً مطمئناً منجر به فراتر رفتن از سهمیه هر دقیقه شما و در نتیجه محدودیت سرعت و قطعی سرویس میشود.
برای جلوگیری از این امر، مطمئن شوید که ترافیک شما در طول روز، تا حد امکان، پخش میشود. اگر کلاینت شما نیاز به همگامسازی روزانه دارد، از کلاینت بخواهید یک زمان تصادفی (برای هر کلاینت متفاوت) تعیین کند. اگر نیاز دارید عملیاتی را به طور منظم انجام دهید، فاصله زمانی +/- 25٪ را تغییر دهید. این کار ترافیک را به طور مساویتری توزیع میکند و تجربه کاربری بسیار بهتری را ارائه میدهد.
از اعلانهای فشاری استفاده کنید
یک مورد استفاده رایج این است که بخواهیم هر زمان که چیزی در تقویم کاربر تغییر میکند، یک عمل انجام دهیم. یک الگوی مخالف در اینجا این است که به طور مکرر از هر تقویم مورد نظر نظرسنجی کنیم. این کار خیلی سریع تمام سهمیه شما را مصرف میکند - برای مثال، اگر برنامه شما ۵۰۰۰ کاربر دارد و تقویم هر کاربر را یک بار در دقیقه نظرسنجی میکند، حتی قبل از انجام هر کاری، به سهمیه حداقل ۵۰۰۰ در دقیقه نیاز دارد.
برنامههای سمت سرور میتوانند برای دریافت اعلانهای فوری ثبتنام کنند، که به ما امکان میدهد وقتی اتفاق جالبی میافتد، به شما اطلاع دهیم. راهاندازی این موارد به کار بیشتری نیاز دارد، اما امکان استفاده بسیار کارآمدتر از سهمیه شما را فراهم میکند و تجربه کاربری بهتری را ارائه میدهد. مطمئن شوید که eventType که میخواهید برای آن مطلع شوید، مشخص کردهاید. برای اطلاعات بیشتر، به اعلانهای فوری مراجعه کنید.
حسابداری مناسب با حسابهای خدماتی
اگر برنامه شما درخواستها را با استفاده از واگذاری در سطح دامنه انجام میدهد، به طور پیشفرض، حساب سرویس بر اساس سهمیههای "به ازای هر دقیقه برای هر پروژه به ازای هر کاربر" هزینه دریافت میکند، و نه کاربری که شما جعل هویت میکنید. این بدان معناست که احتمالاً سهمیه حساب سرویس تمام میشود و محدودیت نرخ خواهد داشت، حتی اگر ممکن است بر اساس تقویمهای چندین کاربر کار کند. میتوانید با استفاده از پارامتر URL quotaUser (یا هدر HTTP x-goog-quota-user ) برای نشان دادن اینکه از کدام کاربر هزینه دریافت خواهد شد، از این امر جلوگیری کنید. این فقط برای محاسبات سهمیه استفاده میشود. برای اطلاعات بیشتر به محدود کردن درخواستها به ازای هر کاربر در مستندات Cloud مراجعه کنید.
مدیریت محدودیت سهمیه آزمون
برای اطمینان از اینکه برنامه شما میتواند به طور مؤثر رسیدن به محدودیتهای سهمیه را در عمل مدیریت کند (مثلاً با انجام تلاشهای مجدد با backoff نمایی ) و برای به حداقل رساندن هرگونه اختلال احتمالی برای کاربران شما، اکیداً توصیه میکنیم این سناریو را در یک محیط واقعی آزمایش کنید.
برای اینکه چنین آزمایشی با استفاده واقعی از برنامه شما تداخل نداشته باشد، توصیه میکنیم یک پروژه آزمایشی جداگانه در کنسول API گوگل ثبت کنید و آن را به روشی مشابه پروژه اصلی خود پیکربندی کنید . سپس میتوانید سهمیههای مصنوعی پایینی برای این پروژه تعیین کنید و رفتار برنامه خود را مشاهده کنید.
قیمتگذاری
تمام استفاده از API تقویم گوگل بدون هیچ هزینه اضافی در دسترس است. تجاوز از محدودیت درخواست سهمیه، هزینه اضافی ندارد و از حساب شما صورتحسابی کسر نمیشود.