অ্যান্টিপ্যাটার্ন: নন-ডিস্ট্রিবিউটেড কোটা কনফিগার করুন

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

Apigee Edge কোটা পলিসি ব্যবহার করে একটি নির্দিষ্ট সময়ের জন্য এপিআই প্রক্সিতে অনুমোদিত অনুরোধের সংখ্যা কনফিগার করার সুবিধা প্রদান করে।

অ্যান্টিপ্যাটার্ন

একটি এপিআই প্রক্সি অনুরোধ এক বা একাধিক ডিস্ট্রিবিউটেড এজ কম্পোনেন্ট দ্বারা পরিবেশন করা যেতে পারে, যেগুলোকে মেসেজ প্রসেসর বলা হয়। যদি এপিআই অনুরোধ পরিবেশনের জন্য একাধিক মেসেজ প্রসেসর কনফিগার করা থাকে, তাহলে কোটা অতিক্রম করার সম্ভাবনা থাকে, কারণ প্রতিটি মেসেজ প্রসেসর তার প্রক্রিয়াকৃত অনুরোধগুলোর নিজস্ব "গণনা" রাখে।

চলুন একটি উদাহরণের সাহায্যে বিষয়টি ব্যাখ্যা করা যাক। একটি এপিআই প্রক্সির জন্য নিম্নলিখিত কোটা নীতিটি বিবেচনা করুন:

<!-- /antipatterns/examples/1-6.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

উপরোক্ত কনফিগারেশন অনুযায়ী প্রতি ঘণ্টায় মোট ১০০টি অনুরোধ গ্রহণ করা যাবে।

তবে বাস্তবে, যখন একাধিক মেসেজ প্রসেসর এপিআই অনুরোধগুলি পরিচালনা করে, তখন নিম্নলিখিত ঘটনা ঘটে:

উপরের চিত্রে:

  • কোটা নীতিটি প্রতি ঘন্টায় ১০০টি অনুরোধ অনুমোদনের জন্য কনফিগার করা হয়েছে।
  • এপিআই প্রক্সিতে পাঠানো অনুরোধগুলো দুটি মেসেজ প্রসেসর দ্বারা সম্পন্ন করা হচ্ছে।
  • প্রতিটি মেসেজ প্রসেসর তাদের প্রসেস করা অনুরোধের সংখ্যা ট্র্যাক করার জন্য quota_count_mp1 এবং quota_count_mp2 নামক নিজস্ব কোটা কাউন্ট ভ্যারিয়েবল বজায় রাখে।
  • সুতরাং প্রতিটি মেসেজ প্রসেসর আলাদাভাবে ১০০টি এপিআই অনুরোধ গ্রহণ করবে। এর ফলে ১০০টির পরিবর্তে মোট ২০০টি অনুরোধ প্রক্রিয়াজাত করা হবে।

প্রভাব

এই পরিস্থিতি কোটা বিন্যাসের উদ্দেশ্যকে ব্যর্থ করে দেয় এবং অনুরোধগুলো সম্পাদনকারী ব্যাকএন্ড সার্ভারগুলোর ওপর ক্ষতিকর প্রভাব ফেলতে পারে।

ব্যাকএন্ড সার্ভারগুলো নিম্নলিখিত কাজগুলো করতে পারে:

  • প্রত্যাশার চেয়ে বেশি ট্র্যাফিক আসার কারণে মানসিক চাপে থাকুন।
  • নতুন API অনুরোধগুলির প্রতি সাড়া দেওয়া বন্ধ করে দেওয়ায় 503 ত্রুটি দেখা দিচ্ছে

সর্বোত্তম অনুশীলন

সমস্ত মেসেজ প্রসেসর জুড়ে এপিআই অনুরোধগুলি ট্র্যাক করার জন্য একটি সাধারণ কাউন্টার ব্যবহার করা নিশ্চিত করতে, কোটা পলিসিতে <Distributed> এলিমেন্টটিকে true সেট করার কথা বিবেচনা করুন। নিচের কোড স্নিপেটে দেখানো উপায়ে <Distributed> এলিমেন্টটি সেট করা যেতে পারে:

<!-- /antipatterns/examples/1-7.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Distributed>true</Distributed>
  <Allow count="100"/>
</Quota>