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

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

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

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

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

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

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

উপরের কনফিগারেশনটি প্রতি ঘন্টায় মোট 100টি অনুরোধের অনুমতি দেবে।

অনুশীলনে, তবে, যখন একাধিক বার্তা প্রসেসর API অনুরোধগুলি পরিবেশন করে, নিম্নলিখিতগুলি ঘটে:

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

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

প্রভাব

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

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

  • প্রত্যাশিত ইনকামিং ট্রাফিকের চেয়ে বেশি চাপের কারণে
  • 503 ত্রুটির দিকে পরিচালিত নতুন API অনুরোধের প্রতি প্রতিক্রিয়াশীল হন না

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

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

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