হার সীমা
ক্লায়েন্ট গ্রাহক আইডি (সিআইডি) এবং ডেভেলপার টোকেন প্রতি সেকেন্ডে (কিউপিএস) কোয়েরি অনুসারে রেট সীমিত করার জন্য Google বিজ্ঞাপন API বাকেট অনুরোধ করে, যার অর্থ CID এবং ডেভেলপার টোকেন উভয়ের ক্ষেত্রেই মিটারিং স্বাধীনভাবে প্রয়োগ করা হয়। Google Ads API একটি টোকেন বাকেট অ্যালগরিদম ব্যবহার করে অনুরোধগুলি মিটার করতে এবং একটি উপযুক্ত QPS সীমা নির্ধারণ করে, তাই যে কোনো নির্দিষ্ট সময়ে সার্ভার লোডের উপর নির্ভর করে সঠিক সীমা পরিবর্তিত হবে।
হারের সীমা আরোপ করার উদ্দেশ্য হল একজন ব্যবহারকারীকে (ইচ্ছাকৃতভাবে বা অনিচ্ছাকৃতভাবে) Google Ads API সার্ভারগুলিকে উচ্চ পরিমাণে অনুরোধের মাধ্যমে অন্য ব্যবহারকারীদের পরিষেবা ব্যাহত করা থেকে বিরত রাখা।
যে অনুরোধগুলি হারের সীমা লঙ্ঘন করে সেগুলি ত্রুটি সহ প্রত্যাখ্যান করা হবে: RESOURCE_TEMPORARILY_EXHAUSTED
।
আপনি আপনার অ্যাপের নিয়ন্ত্রণ নিতে পারেন এবং ক্লায়েন্টের পক্ষ থেকে সক্রিয়ভাবে অনুরোধের সংখ্যা হ্রাস এবং QPS থ্রোটলিং উভয়ের মাধ্যমে হারের সীমা হ্রাস করতে পারেন।
হারের সীমা অতিক্রম করার সম্ভাবনা কমানোর বিভিন্ন উপায় রয়েছে। এন্টারপ্রাইজ ইন্টিগ্রেশন প্যাটার্নস (EIP) ধারণার সাথে পরিচিত হওয়া যেমন মেসেজিং, রিডেলিভারি এবং থ্রটলিং আপনাকে আরও শক্তিশালী ক্লায়েন্ট অ্যাপ তৈরি করতে সাহায্য করতে পারে।
নিচের প্রস্তাবিত অনুশীলনগুলি জটিলতার দ্বারা নির্দেশিত, শীর্ষে সহজ কৌশল এবং আরও শক্তিশালী কিন্তু পরিশীলিত আর্কিটেকচারের পরে:
সমসাময়িক কাজ সীমিত করুন
হারের সীমা অতিক্রম করার একটি মূল কারণ হল ক্লায়েন্ট অ্যাপটি অতিরিক্ত সংখ্যক সমান্তরাল কাজ তৈরি করছে। যদিও আমরা একটি ক্লায়েন্ট অ্যাপের সমান্তরাল অনুরোধের সংখ্যা সীমাবদ্ধ করি না, এটি বিকাশকারী টোকেন স্তরে সহজেই প্রতি সেকেন্ডের অনুরোধের সীমা অতিক্রম করতে পারে।
অনুরোধ করা যাচ্ছে (সমস্ত প্রক্রিয়া এবং মেশিন জুড়ে) সমসাময়িক কাজের মোট সংখ্যার জন্য একটি যুক্তিসঙ্গত উপরের সীমা নির্ধারণ করা এবং হারের সীমা অতিক্রম না করে আপনার থ্রুপুট অপ্টিমাইজ করার জন্য উপরের দিকে সামঞ্জস্য করার পরামর্শ দেওয়া হয়।
উপরন্তু, আপনি ক্লায়েন্টের দিক থেকে QPS থ্রটলিং বিবেচনা করতে পারেন ( থ্রটলিং এবং রেট লিমিটারগুলি দেখুন)।
ব্যাচিং অনুরোধ
একক অনুরোধে একাধিক অপারেশন ব্যাচ করার কথা বিবেচনা করুন। এটি MutateFoo
কলগুলিতে সর্বাধিক প্রযোজ্য৷ উদাহরণস্বরূপ, যদি আপনি AdGroupAd
এর একাধিক উদাহরণের জন্য স্থিতি আপডেট করেন - প্রতিটি AdGroupAd
এর জন্য একবার MutateAdGroupAds
কল করার পরিবর্তে, আপনি একবার MutateAdGroupAds
কল করতে পারেন এবং একাধিক operations
পাস করতে পারেন। কিছু অতিরিক্ত উদাহরণের জন্য আমাদের ব্যাচ অপারেশন নির্দেশিকা পড়ুন।
যদিও ব্যাচিং অনুরোধগুলি অনুরোধের মোট সংখ্যা হ্রাস করে এবং প্রতি মিনিটের অনুরোধগুলির হারের সীমা হ্রাস করে, আপনি যদি একটি একক অ্যাকাউন্টের বিরুদ্ধে প্রচুর সংখ্যক অপারেশন করেন তবে এটি প্রতি মিনিটের রেট সীমাকে ট্রিগার করতে পারে।
থ্রটলিং এবং হার লিমিটার
আপনার ক্লায়েন্ট অ্যাপ্লিকেশনে থ্রেডের মোট সংখ্যা সীমিত করার পাশাপাশি, আপনি ক্লায়েন্ট সাইডে রেট লিমিটারও প্রয়োগ করতে পারেন। এটি নিশ্চিত করতে পারে যে সমস্ত থ্রেড আপনার প্রসেস এবং/অথবা ক্লাস্টারগুলি ক্লায়েন্টের পক্ষ থেকে একটি নির্দিষ্ট QPS সীমা দ্বারা পরিচালিত হয়।
আপনি গুয়াভা রেট লিমিটার চেক করতে পারেন, অথবা ক্লাস্টার পরিবেশের জন্য আপনার নিজস্ব টোকেন বাকেট ভিত্তিক অ্যালগরিদম প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, আপনি টোকেন তৈরি করতে পারেন এবং সেগুলিকে একটি শেয়ার্ড লেনদেন স্টোরেজ যেমন একটি ডাটাবেসে সঞ্চয় করতে পারেন এবং প্রতিটি ক্লায়েন্টকে অনুরোধটি প্রক্রিয়া করার আগে একটি টোকেন অর্জন করতে হবে এবং ব্যবহার করতে হবে। যদি টোকেনগুলি ব্যবহার করা হয়, ক্লায়েন্টকে টোকেনগুলির পরবর্তী ব্যাচ তৈরি না হওয়া পর্যন্ত অপেক্ষা করতে হবে৷
সারিবদ্ধ
একটি বার্তা সারি হল অপারেশন লোড বিতরণের সমাধান, একই সাথে অনুরোধ এবং ভোক্তার হার নিয়ন্ত্রণ করে। অনেকগুলি বার্তা সারি বিকল্প উপলব্ধ রয়েছে—কিছু ওপেন সোর্স, কিছু মালিকানাধীন—এবং তাদের অনেকগুলি বিভিন্ন ভাষায় কাজ করতে পারে।
বার্তা সারি ব্যবহার করার সময়, আপনি একাধিক প্রযোজক বার্তাগুলিকে সারিতে ঠেলে দিতে পারেন এবং একাধিক গ্রাহক সেই বার্তাগুলি প্রক্রিয়াকরণ করতে পারেন। সমসাময়িক ভোক্তাদের সংখ্যা সীমিত করে ভোক্তার পক্ষে থ্রটল প্রয়োগ করা যেতে পারে, অথবা প্রযোজক বা ভোক্তাদের জন্য রেট লিমিটার বা থ্রটলার প্রয়োগ করা যেতে পারে।
উদাহরণস্বরূপ, যদি একটি বার্তা গ্রাহক একটি হার সীমা ত্রুটির সম্মুখীন হয়, তাহলে সেই ভোক্তা পুনরায় চেষ্টা করার জন্য অনুরোধটি সারিতে ফিরিয়ে দিতে পারেন। একই সময়ে, সেই ভোক্তা অন্য সমস্ত ভোক্তাদের ত্রুটি থেকে পুনরুদ্ধার করতে কয়েক সেকেন্ডের জন্য প্রক্রিয়াকরণ বন্ধ করার জন্যও অবহিত করতে পারেন।