আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
কী
একটি নির্দিষ্ট সময়সীমার মধ্যে, যেমন এক মিনিট, এক ঘণ্টা, এক দিন, এক সপ্তাহ বা এক মাস ধরে কোনও API প্রক্সি কতগুলি অনুরোধ মেসেজ গ্রহণ করতে পারবে তা কনফিগার করতে কোটা নীতি ব্যবহার করুন। API প্রক্সি অ্যাক্সেস করা সব অ্যাপের জন্য আপনি কোটা একই সেট করতে পারেন অথবা আপনি এর উপর ভিত্তি করে কোটা সেট করতে পারেন:
- API প্রক্সি থাকা প্রোডাক্ট
- যে অ্যাপ API-এর জন্য অনুরোধ করছে
- অ্যাপ ডেভেলপার
- আরও অনেক মাপকাঠি
সামগ্রিক ট্রাফিকে হঠাৎ বৃদ্ধি থেকে রক্ষা করার জন্য কোটা ব্যবহার করবেন না। এর জন্য, Spike Arrest নীতি ব্যবহার করুন। স্পাইক অ্যারেস্ট নীতি দেখুন।
ভিডিও
এইসব ভিডিও কোটা নীতি সহ কোটা ম্যানেজমেন্টের ব্যাপারে জানায়:
ভূমিকা (নতুন Edge)
ভূমিকা (ক্লাসিক এজ)
ডায়নামিক কোটা
ডিস্ট্রিবিউট করা হয়েছে ও সিঙ্ক্রোনাস
মেসেজের ওজন
Calendar
রোলিং উইন্ডো
Flexi
শর্তসাপেক্ষ কোটা
ফ্লো ভেরিয়েবল
সমস্যা ম্যানেজ করা
নমুনা
এইসব নীতি কোড স্যাম্পেল থেকে কীভাবে কোটা পিরিয়ড শুরু ও শেষ করতে হয় তা জানা যায়:
আরও ডায়নামিক কোটা
<Quota name="CheckQuota"> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/> </Quota>
ডায়নামিক কোটা আপনাকে একটি কোটা নীতি কনফিগার করতে দেয় যা কোটা নীতিতে পাস করা তথ্যের উপর ভিত্তি করে বিভিন্ন কোটা সেটিং প্রয়োগ করে। এই প্রসঙ্গে কোটা সেটিংসের আরেকটি নাম হল "পরিষেবা প্ল্যান"। ডায়নামিক কোটা অ্যাপের "সার্ভিস প্ল্যান" চেক করে এবং তারপরে সেইসব সেটিংস প্রয়োগ করে।
মনে রাখবেন: আপনি কোনও এলিমেন্টের জন্য ভ্যালু ও রেফারেন্স, দুটিই উল্লেখ করলে, রেফারেন্সকে অগ্রাধিকার দেওয়া হবে। রানটাইমে রেফারেন্সের সমাধান না হলে, ভ্যালু ব্যবহার করা হয়।
যেমন, আপনি কোনও API প্রোডাক্ট তৈরি করলে, ঐচ্ছিকভাবে অনুমোদিত কোটা সীমা, সময় একক ও ইন্টারভ্যাল সেট করতে পারবেন। তবে, API প্রোডাক্টে এই ভ্যালু সেট করলে, API প্রক্সিতে সেগুলি ব্যবহার করতে বাধ্য করা হয় না। এছাড়াও, আপনাকে API প্রক্সিতে কোটা নীতি যোগ করতে হবে যা এইসব ভ্যালু পড়ে। আরও জানতে API প্রোডাক্ট তৈরি করুন দেখুন।
উপরের উদাহরণে, কোটা নীতি থাকা API প্রক্সি, VerifyAPIKey
নীতি ব্যবহার করে, যার নাম verify-api-key। এটি অনুরোধে পাস করা API কী যাচাই করে। তারপরে কোটা নীতি VerifyAPIKey নীতি থেকে ফ্লো ভেরিয়েবেল অ্যাক্সেস করে API প্রোডাক্টে সেট করা কোটার
মান পড়ে। VerifyAPIKey ফ্লো ভেরিয়েবল সম্পর্কে আরও জানতে, API কী যাচাইকরণ নীতি দেখুন।
আরেকটি বিকল্প হল, আলাদা আলাদা ডেভেলপার বা অ্যাপে কাস্টম অ্যাট্রিবিউট সেট করা এবং তারপরে কোটা নীতিতে সেইসব ভ্যালু পড়া। যেমন, আপনি প্রতি ডেভেলপার কোটার আলাদা আলাদা ভ্যালু সেট করতে চান। এই ক্ষেত্রে, আপনি ডেভেলপারে কাস্টম অ্যাট্রিবিউট সেট করেন যাতে সীমা, সময় একক ও ইন্টারভ্যাল থাকে। তারপর, আপনি নিচে দেখানো কোটা নীতিতে এইসব ভ্যালু রেফারেন্স হিসেবে ব্যবহার করেন:
<Quota name="DeveloperQuota"> <Identifier ref="verifyapikey.verify-api-key.client_id"/> <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> </Quota>
এছাড়াও, এই উদাহরণে VerifyAPIKey ফ্লো ভেরিয়েবল ব্যবহার করে ডেভেলপারের সেট করা কাস্টম অ্যাট্রিবিউট রেফারেন্স করা হয়েছে।
কোটা নীতির প্যারামিটার সেট করতে আপনি যেকোনও ভেরিয়েবল ব্যবহার করতে পারবেন। সেইসব ভেরিয়েবল এগুলি থেকে আসতে পারে:
- ফ্লো ভেরিয়েবল
- API প্রোডাক্ট, অ্যাপ বা ডেভেলপার সংক্রান্ত প্রপার্টি
- কী ভ্যালু ম্যাপ (KVM)
- হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার ইত্যাদি
প্রতিটি API প্রক্সির জন্য, আপনি এমন কোটা নীতি যোগ করতে পারবেন যা অন্য সব প্রক্সির অন্য সব কোটা নীতির মতো একই ভেরিয়েবলকে রেফার করে অথবা কোটা নীতিটি সেই নীতি ও প্রক্সির জন্য অনন্য ভেরিয়েবলকে রেফার করতে পারে।
শুরুর সময়
<Quota name="QuotaPolicy" type="calendar"> <StartTime>2017-02-18 10:30:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
type-এর মান calendar হিসেবে সেট করা কোটার জন্য, আপনাকে অবশ্যই একটি
স্পষ্ট <StartTime> ভ্যালু সংজ্ঞায়িত করতে হবে। সময় ভ্যালু হল GMT সময়, স্থানীয়
সময় নয়। আপনি যদি <StartTime> ধরনের নীতির জন্য ভ্যালু না দেন
calendar, তাহলে Edge একটি সমস্যা দেখায়।
<StartTime>,
<Interval> এবং <TimeUnit> ভ্যালুর উপর ভিত্তি করে প্রতিটি অ্যাপের কোটা কাউন্টার রিফ্রেশ করা হয়। এই
উদাহরণে, কোটা ১৮ ফেব্রুয়ারি, ২০১৭-এ GMT অনুযায়ী সকাল ১০টা ৩০ মিনিটে গণনা করা শুরু করে এবং প্রতি
৫ ঘণ্টা অন্তর রিফ্রেশ হয়। তাই, পরবর্তী রিফ্রেশ ১৮ ফেব্রুয়ারি, ২০১৭-এ GMT অনুসারে বিকেল ৩:৩০ মিনিটে হবে।
অ্যাক্সেস কাউন্টার
<Quota name="QuotaPolicy"> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
API প্রক্সি কোটা নীতির মাধ্যমে সেট করা ফ্লো ভেরিয়েবল অ্যাক্সেস করতে পারে। শর্তসাপেক্ষ প্রসেসিং পারফর্ম করতে, কোটা সীমার কাছাকাছি পৌঁছানোর সাথে সাথে নীতি মনিটর করতে, কোনও অ্যাপে বর্তমান কোটা কাউন্টার রিটার্ন করতে বা অন্যান্য কারণে আপনি API প্রক্সিতে এইসব ফ্লো ভেরিয়েবল অ্যাক্সেস করতে পারবেন।
কারণ, নীতির ফ্লো ভেরিয়েবল অ্যাক্সেস করা, নীতির
name অ্যাট্রিবিউটের উপর ভিত্তি করে, উপরে উল্লেখ করা QuotaPolicy নীতির জন্য আপনি
এর ফ্লো ভেরিয়েবল এই ফর্ম্যাটে অ্যাক্সেস করেন:
ratelimit.QuotaPolicy.allowed.count: অনুমোদিত সংখ্যা।ratelimit.QuotaPolicy.used.count: বর্তমান কাউন্টার ভ্যালু।ratelimit.QuotaPolicy.expiry.time: কাউন্টার রিসেট হওয়ার UTC সময়।
নিচে বর্ণনা করা হয়েছে এমন আরও অনেক ফ্লো ভেরিয়েবল আছে যা আপনি অ্যাক্সেস করতে পারবেন।
যেমন, কোটা ফ্লো ভেরিয়েবলের ভ্যালু রেসপন্স হেডার হিসেবে রিটার্ন করতে, আপনি নিম্নলিখিত AssignMessage নীতি ব্যবহার করতে পারেন:
<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars"> <AssignTo createNew="false" type="response"/> <Set> <Headers> <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header> <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header> <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
প্রথম অনুরোধ
<Quota name="MyQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="10000"/> </Quota>
প্রতি এক ঘণ্টায় ১০,০০০ কলের কোটা প্রয়োগ করতে এই স্যাম্পেল কোড ব্যবহার করুন। নীতিটি প্রতি ঘণ্টার শুরুতে কোটা কাউন্টার রিসেট করে। ঘণ্টা শেষ হওয়ার আগে কাউন্টার ১০,০০০-কল কোটায় পৌঁছে গেলে, ১০,০০০-এর বেশি কল প্রত্যাখ্যান করা হয়।
যেমন, কাউন্টারটি 2017-07-08 07:00:00-এ শুরু হলে, সেটি 2017-07-08 08:00:00-এ (শুরুর সময় থেকে ১ ঘণ্টা পরে) রিসেট হয়ে
০ হয়ে যায়। প্রথম মেসেজটি যদি
2017-07-08 07:35:28-এ আসে এবং মেসেজের সংখ্যা 2017-07-08 08:00:00-এর আগে ১০,০০০
হয়ে যায়, তাহলে সেই সংখ্যার পরে আসা কলগুলি প্রত্যাখ্যান করা হবে যতক্ষণ না
প্রতি ঘণ্টার শুরুতে সংখ্যাটি আবার রিসেট হয়।
<Interval> ও
<TimeUnit>-এর কম্বিনেশনের উপর ভিত্তি করে কাউন্টার রিসেট করার সময় নির্ধারণ করা হয়। যেমন, আপনি যদি <TimeUnit> এক ঘণ্টার জন্য <Interval>-এর মান ১২ হিসেবে সেট করেন, তাহলে প্রতি ১২ ঘণ্টা অন্তর কাউন্টার রিসেট হয়ে যাবে।
আপনি <TimeUnit> মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস হিসেবে সেট করতে পারবেন।
আপনার API প্রক্সিতে একাধিক জায়গায় এই নীতি রেফারেন্স করতে পারবেন। যেমন, আপনি এটি প্রক্সি প্রিফ্লোতে রাখতে পারেন যাতে প্রতিটি অনুরোধে এটি এক্সিকিউট করা হয়। অথবা, আপনি API প্রক্সির একাধিক ফ্লোতে এটি প্লেস করতে পারেন। আপনি যদি এই নীতিটি প্রক্সির একাধিক জায়গায় ব্যবহার করেন, তাহলে এটি একটি একক কাউন্টার বজায় রাখে যা নীতির সমস্ত ইনস্ট্যান্স দ্বারা আপডেট করা হয়।
অথবা, আপনার API প্রক্সিতে একাধিক কোটা নীতি নির্ধারণ করতে পারেন। প্রতিটি কোটা নীতি
name নীতির অ্যাট্রিবিউটের উপর ভিত্তি করে নিজস্ব কাউন্টার বজায় রাখে।
শনাক্তকারী সেট করা
<Quota name="QuotaPolicy" type="calendar"> <Identifier ref="request.header.clientId"/> <StartTime>2017-02-18 10:00:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
ডিফল্ট হিসেবে, কোটা নীতি API প্রক্সির জন্য একটি কাউন্টার নির্ধারণ করে, এটি নির্বিশেষে যে
অনুরোধের উৎস। অথবা, আপনি কোটা নীতির সাথে <Identifier> অ্যাট্রিবিউট
ব্যবহার করতে পারেন। এর ফলে, <Identifier> অ্যাট্রিবিউটের
ভ্যালুর উপর ভিত্তি করে আলাদা আলাদা কাউন্টার বজায় রাখা যায়।
যেমন, প্রতিটি ক্লায়েন্ট আইডির জন্য আলাদা আলাদা কাউন্টার
সংজ্ঞায়িত করতে <Identifier> ট্যাগ ব্যবহার করুন। আপনার প্রক্সিতে অনুরোধ করার পরে, ক্লায়েন্ট অ্যাপটি একটি হেডার পাস করে যাতে
clientID থাকে, যেমনটি উপরে দেখানো উদাহরণে দেখা গেছে।
আপনি <Identifier> অ্যাট্রিবিউটে যেকোনও ফ্লো ভেরিয়েবল নির্দিষ্ট করতে পারবেন। যেমন, আপনি নির্দিষ্ট করতে পারেন যে id নামের কোয়েরি প্যারামিটারে অনন্য
শনাক্তকারী আছে:
<Identifier ref="request.queryparam.id"/>
আপনি যদি API কী যাচাই করার জন্য VerifyAPIKey নীতি বা OAuth টোকেন সহ OAuthV2 নীতি
ব্যবহার করেন, তাহলে একই কোটা নীতির জন্য আলাদা
কাউন্টার নির্ধারণ করতে API কী বা টোকেনের তথ্য ব্যবহার করতে পারবেন। যেমন, নিম্নলিখিত
<Identifier> ট্যাগে client_id ফ্লো ভেরিয়েবল ব্যবহার করা হয়েছে, যা
verify-api-key নামের VerifyAPIKey নীতিতে আছে:
<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>
প্রতিটি অনন্য client_id ভ্যালু এখন কোটা
নীতিতে নিজস্ব কাউন্টারকে সংজ্ঞায়িত করে।
শ্রেণী
<Quota name="QuotaPolicy">
<Interval>1</Interval>
<TimeUnit>day</TimeUnit>
<Allow>
<Class ref="request.header.developer_segment">
<Allow class="platinum" count="10000"/>
<Allow class="silver" count="1000" />
</Class>
</Allow>
</Quota>ক্লাস-ভিত্তিক কোটার সংখ্যা ব্যবহার করে আপনি ডাইনামিক কোটা সীমা সেট করতে পারবেন। এই উদাহরণে,
প্রতিটি অনুরোধের সাথে পাস করা developer_segment
হেডারের ভ্যালু থেকে কোটা সীমা নির্ধারণ করা হয়। এই ভেরিয়েবেলের ভ্যালু platinum
বা silver হতে পারে। হেডারে ভুল মান থাকলে, নীতি কোটা
লঙ্ঘন সংক্রান্ত সমস্যা রিটার্ন করে।
কোটা নীতি সম্পর্কে
কোটা হল অনুরোধ মেসেজের একটি বরাদ্দ যা কোনও API প্রক্সি একটি নির্দিষ্ট সময়সীমার মধ্যে, যেমন মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস ধরে হ্যান্ডেল করতে পারে। এই নীতিতে এমন কাউন্টার থাকে যা API প্রক্সি দ্বারা প্রাপ্ত অনুরোধের সংখ্যা গণনা করে। এই ক্ষমতা API প্রদানকারীদের একটি নির্দিষ্ট সময়সীমার মধ্যে অ্যাপের মাধ্যমে করা API কলের সংখ্যার উপর সীমা আরোপ করতে সক্ষম করে। কোটা নীতি ব্যবহার করে আপনি, যেমন প্রতি মিনিটে অ্যাপকে ১টি অনুরোধ বা প্রতি মাসে ১০,০০০টি অনুরোধে সীমাবদ্ধ করতে পারেন।
যেমন, কোটা যদি প্রতি মাসে ১০,০০০ মেসেজ হিসেবে নির্ধারণ করা হয়, তাহলে ১০,০০০তম মেসেজের পরে রেট-লিমিটিং শুরু হয়। প্রথম দিন বা সেই মেয়াদের শেষ দিনে ১০,০০০ মেসেজ গণনা করা হোক না কেন, তাতে কিছু যায় আসে না; নির্দিষ্ট সময়সীমা শেষে কোটা কাউন্টার অটোমেটিক রিসেট না হওয়া পর্যন্ত বা কোটা রিসেট করার নীতি ব্যবহার করে কোটা স্পষ্টভাবে রিসেট না করা পর্যন্ত কোনও অতিরিক্ত অনুরোধ করা যাবে না।
কোটার একটি ভেরিয়েশন হল স্পাইকঅ্যারেস্ট, এটি ট্রাফিক স্পাইক (বা বার্স্ট) প্রতিরোধ করে যা হঠাৎ করে ব্যবহার বেড়ে যাওয়া, বাগি ক্লায়েন্ট বা ক্ষতিকর অ্যাটাকের কারণে হতে পারে। SpikeArrest সম্পর্কে আরও তথ্য পেতে, Spike Arrest নীতি দেখুন।
কোটা স্বতন্ত্র API প্রক্সিগুলিতে প্রযোজ্য এবং API প্রক্সিগুলির মধ্যে ডিস্ট্রিবিউট করা হয় না। যেমন, কোনও API প্রোডাক্টে তিনটি API প্রক্সি থাকলে, একটি কোটা তিনটি API প্রক্সি জুড়ে শেয়ার করা হয় না এমনকি তিনটি API প্রক্সি একই কোটা নীতি কনফিগারেশন ব্যবহার করলেও।
কোটা নীতির ধরন
কোটা নীতিতে বিভিন্ন ধরনের নীতি কাজ করে: ডিফল্ট, calendar,
flexi এবং rollingwindow। প্রতিটি ধরন নির্ধারণ করে যে কোটা কাউন্টার
কখন শুরু হয় এবং কখন রিসেট হয়, যেমনটি নিম্নলিখিত টেবিলে দেখানো হয়েছে:
| সময় ইউনিট | ডিফল্ট (বা নাল) রিসেট | ক্যালেন্ডার রিসেট করা | ফ্লেক্সি রিসেট |
|---|---|---|---|
| মিনিট | পরের মিনিটের শুরু | <StartTime>-এর এক মিনিট পরে |
প্রথম অনুরোধের এক মিনিট পরে |
| ঘণ্টা | পরের ঘণ্টার শুরুতে | <StartTime>-এর এক ঘণ্টা পরে |
প্রথম অনুরোধের এক ঘণ্টা পরে |
| দিন | বর্তমান দিনের GMT অনুযায়ী মধ্যরাত | <StartTime>-এর ২৪ ঘণ্টা পরে |
প্রথম অনুরোধ জানানোর ২৪ ঘণ্টা পরে |
| সপ্তাহ | সপ্তাহের শেষে রবিবার GMT মধ্যরাতে | <StartTime>-এর এক সপ্তাহ পরে |
প্রথম অনুরোধের এক সপ্তাহ পরে |
| মাস | মাসের শেষ দিনের GMT অনুযায়ী মধ্যরাত | <StartTime>-এর এক মাস (২৮ দিন) পরে |
প্রথম অনুরোধের এক মাস (২৮ দিন) পরে |
type="calendar"-এর জন্য, আপনাকে অবশ্যই
<StartTime>-এর মান উল্লেখ করতে হবে।
টেবিলে rollingwindow ধরনের ভ্যালু তালিকাভুক্ত করা নেই। রোলিং উইন্ডো
কোটা এক ঘণ্টা বা এক দিনের উইন্ডোর মতো কোটা "উইন্ডো"র সাইজ সেট করার মাধ্যমে কাজ করে। নতুন অনুরোধ এলে, নীতি নির্ধারণ করে যে কোটা কি অতীতে
"উইন্ডো" সময়ে অতিক্রম করা হয়েছে।
যেমন, আপনি দু'ঘণ্টার একটি উইন্ডো নির্ধারণ করেছেন যা ১০০০টি অনুরোধ গ্রহণ করতে পারে। বিকেল ৪:৪৫-এ একটি নতুন অনুরোধ আসে। নীতিটি গত দুই ঘণ্টার উইন্ডোর জন্য কোটা গণনা করে, অর্থাৎ বিকেল ২:৪৫ থেকে আসা অনুরোধের সংখ্যা। সেই দুই ঘণ্টার সময়সীমার মধ্যে কোটা সীমা অতিক্রম না করে থাকলে, অনুরোধটি অনুমোদিত হবে।
এক মিনিট পরে, বিকেল ৪:৪৬-এ, আরেকটি অনুরোধ আসে। এখন নীতিটি কোটার সংখ্যা গণনা করে দেখবে যে সীমা অতিক্রম করা হয়েছে কিনা। এটি ২:৪৬ PM থেকে গণনা করা শুরু করেছে।
rollingwindow ধরনের জন্য, কাউন্টার কখনও রিসেট হয় না, তবে প্রতিটি অনুরোধে
আবার গণনা করা হয়।
কোটা কাউন্টার বোঝা
সাধারণত, কোটা নীতি একটি কাউন্টার বজায় রাখে, আপনি API প্রক্সিতে যতবারই
এটি রেফারেন্স করুন না কেন। কোটা কাউন্টারের নাম নীতির name অ্যাট্রিবিউটের উপর ভিত্তি করে
তৈরি হয়।
যেমন, আপনি MyQuotaPolicy নামের একটি কোটা নীতি তৈরি করেছেন যাতে ৫টি
অনুরোধের সীমা আছে এবং API প্রক্সিতে একাধিক ফ্লোতে (ফ্লো A, B ও C) এটি প্রয়োগ করেছেন। এটি একাধিক ফ্লোতে ব্যবহার করা হলেও, একটি কাউন্টার বজায় রাখে যা নীতির
সব ইনস্ট্যান্স আপডেট করে:
- ফ্লো 'ক' এক্সিকিউট করা হয় -> MyQuotaPolicy এক্সিকিউট করা হয় এবং এর কাউন্টার = ১
- ফ্লো 'খ' এক্সিকিউট করা হয় -> MyQuotaPolicy এক্সিকিউট করা হয় এবং এর কাউন্টার = ২
- ফ্লো 'ক' এক্সিকিউট করা হয় -> MyQuotaPolicy এক্সিকিউট করা হয় এবং এর কাউন্টার = ৩
- ফ্লো 'গ' এক্সিকিউট করা হয় -> MyQuotaPolicy এক্সিকিউট করা হয় এবং এর কাউন্টার = ৪
- ফ্লো 'ক' এক্সিকিউট করা হয় -> MyQuotaPolicy এক্সিকিউট করা হয় এবং এর কাউন্টার = ৫
তিনটি ফ্লোয়ের মধ্যে যেকোনও একটিতে পরবর্তী অনুরোধ বাতিল করা হয়েছে কারণ কোটা কাউন্টার তার সীমায় পৌঁছে গেছে।
API প্রক্সি ফ্লোতে একাধিক জায়গায় একই কোটা নীতি ব্যবহার করলে, তা অনিচ্ছাকৃতভাবে কোটা দ্রুত শেষ হয়ে যাওয়ার কারণ হতে পারে। এটি The Book of Apigee Edge Antipatterns-এ বর্ণিত একটি অ্যান্টি-প্যাটার্ন।
অথবা, আপনি API প্রক্সিতে একাধিক কোটা নীতি নির্ধারণ করতে পারেন এবং প্রতিটি ফ্লোতে আলাদা
নীতি ব্যবহার করতে পারেন। প্রতিটি কোটা নীতি
নীতির name অ্যাট্রিবিউটের উপর ভিত্তি করে নিজস্ব কাউন্টার বজায় রাখে।
অথবা, একটি নীতিতে একাধিক অনন্য কাউন্টারকে সংজ্ঞায়িত করতে, কোটা নীতিতে
<Class> বা <Identifier> এলিমেন্ট ব্যবহার করুন।
এইসব
এলিমেন্ট ব্যবহার করে, অনুরোধকারী অ্যাপ,
অনুরোধকারী অ্যাপ ডেভেলপার, ক্লায়েন্ট আইডি বা অন্যান্য ক্লায়েন্ট শনাক্তকারী এবং আরও অনেক কিছুর উপর ভিত্তি করে একটি নীতি বিভিন্ন কাউন্টার বজায় রাখতে পারে। <Class> বা <Identifier> এলিমেন্ট ব্যবহার করা সম্পর্কে আরও তথ্য পেতে, উপরে দেওয়া
উদাহরণগুলি দেখুন।
সময়ের নোটেশন
সব কোটা টাইম কোঅর্ডিনেটেড ইউনিভার্সাল টাইম (UTC) টাইম জোনে সেট করা আছে।
কোটা টাইম নোটেশন আন্তর্জাতিক স্ট্যান্ডার্ড তারিখ নোটেশন মেনে চলে যা ইন্টারন্যাশনাল স্ট্যান্ডার্ড ISO 8601-এ উল্লেখ করা আছে।
তারিখকে বছর, মাস ও দিন হিসেবে নিম্নলিখিত ফর্ম্যাটে সংজ্ঞায়িত করা হয়: YYYY-MM-DD।
যেমন, 2015-02-04 ৪ ফেব্রুয়ারি, ২০১৫ তারিখটি বোঝায়।
দিনের সময়কে নিম্নলিখিত ফর্ম্যাটে ঘণ্টা, মিনিট ও সেকেন্ড হিসেবে দেখানো হয়:
hours:minutes:seconds. যেমন, 23:59:59 দিয়ে মাঝরাতের এক
সেকেন্ড আগের সময় বোঝানো হয়।
মনে রাখবেন, 00:00:00 ও 24:00:00, এই দুটি নোটেশন উপলভ্য আছে যা
একটি তারিখের সাথে যুক্ত হতে পারে এমন দুটি মধ্যরাত্রিকে আলাদা করে। তাই, 2015-02-04
24:00:00 ও 2015-02-05 00:00:00 একই তারিখ ও সময়। পরেরটি সাধারণত
পছন্দের নোটেশন।
API প্রোডাক্ট কনফিগারেশন থেকে কোটা সেটিংস পাওয়া
আপনি API প্রোডাক্ট কনফিগারেশনে কোটা সীমা সেট করতে পারবেন। সেইসব সীমা কোটা অটোমেটিক প্রয়োগ করে না। পরিবর্তে, আপনি কোটা নীতিতে প্রোডাক্ট কোটা সেটিংসের রেফারেন্স দিতে পারেন। কোটা নীতির রেফারেন্সের জন্য প্রোডাক্টে কোটা সেট করার কিছু সুবিধা এখানে দেওয়া হল:
- কোটা নীতি API প্রোডাক্টের সব API প্রক্সি জুড়ে একটি অভিন্ন সেটিং ব্যবহার করতে পারে।
- আপনি কোনও API প্রোডাক্টের কোটা সেটিংসে রানটাইম পরিবর্তন করতে পারেন এবং কোটা নীতি যেগুলি অটোমেটিক ভ্যালু রেফার করে সেগুলিতে আপডেট করা কোটা ভ্যালু থাকে।
API প্রোডাক্ট থেকে কোটা সেটিংস ব্যবহার করা সম্পর্কে আরও তথ্যের জন্য, উপরে দেওয়া "ডায়নামিক কোটা" উদাহরণ দেখুন।.
কোটা সীমা সহ API প্রোডাক্ট কনফিগার করা সম্পর্কে তথ্য পেতে, API প্রোডাক্ট তৈরি করুন দেখুন।
এলিমেন্ট রেফারেন্স
এই নীতিতে আপনি যেসব এলিমেন্ট ও অ্যাট্রিবিউট কনফিগার করতে পারবেন সেগুলি নিচে উল্লেখ করা হল। মনে রাখবেন, কিছু এলিমেন্ট
কম্বিনেশন পারস্পরিকভাবে এক্সক্লুসিভ বা প্রয়োজন নেই। নির্দিষ্ট ব্যবহারের জন্য স্যাম্পেল দেখুন। অনুরোধে অ্যাপের API কী চেক করার জন্য "VerifyAPIKey" নামের Verify API Key নীতি ব্যবহার করা হলে,
নিচে উল্লেখ করা ভেরিয়েবলগুলি
verifyapikey.VerifyAPIKey.apiproduct.* ডিফল্ট হিসেবে উপলভ্য থাকে।
কী যে API প্রোডাক্টের সাথে যুক্ত, সেটির কোটা সেটিংস থেকে ভেরিয়েবল ভ্যালু পাওয়া যায়।
API প্রোডাক্ট কনফিগারেশন থেকে কোটা সেটিংস পাওয়া
সংক্রান্ত তথ্য দেখুন।
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar"> <DisplayName>Quota 3</DisplayName> <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> <Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow> <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> <Distributed>false</Distributed> <Synchronous>false</ Synchronous> <AsynchronousConfiguration> <SyncIntervalInSeconds>20</ SyncIntervalInSeconds> <SyncMessageCount>5</ SyncMessageCount> </AsynchronousConfiguration> <Identifier/> <MessageWeight/> </Quota>
<Quota> অ্যাট্রিবিউট
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
এই নীতির জন্য নিম্নলিখিত অ্যাট্রিবিউট নির্দিষ্ট করা আছে।
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ধরন |
কোটা কাউন্টার কখন এবং কীভাবে কোটা ব্যবহার চেক করে তা নির্ধারণ করতে ব্যবহার করুন। আরও তথ্যের জন্য কোটা নীতি সংক্রান্ত ধরন দেখুন। আপনি সঠিক ভ্যালুর মধ্যে এগুলি অন্তর্ভুক্ত:
|
ক্যালেন্ডার | ঐচ্ছিক |
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<Allow> এলিমেন্ট
কোটার জন্য গণনা সংক্রান্ত সীমা নির্দিষ্ট করে। নীতি সংক্রান্ত কাউন্টার এই সীমা ভ্যালুতে পৌঁছে গেলে, কাউন্টার রিসেট না হওয়া পর্যন্ত পরবর্তী কল বাতিল করা হয়।
<Allow> এলিমেন্ট সেট করার তিনটি উপায় নিচে দেখানো হল:
<Allow count="2000"/>
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
আপনি count ও countRef, দুটিই উল্লেখ করলে, countRef
অগ্রাধিকার পাবে। রানটাইমে countRef সমাধান না হলে, count-এর ভ্যালু ব্যবহার করা হয়।
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
অ্যাট্রিবিউট
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| গণনা |
কোটার জন্য মেসেজের সংখ্যা নির্দিষ্ট করতে ব্যবহার করা হয়। যেমন, |
২০০০ | ঐচ্ছিক |
| countRef |
কোটার জন্য মেসেজের সংখ্যা থাকা ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করা হয়।
|
কিছুই নয় | ঐচ্ছিক |
<Allow>/<Class> এলিমেন্ট
ফ্লো ভেরিয়েবলের মানের উপর ভিত্তি করে <Allow> এলিমেন্টের মান
কন্ডিশনাল করার সুবিধা <Class> এলিমেন্ট দেয়। প্রতিটি
আলাদা <Allow> চাইল্ড ট্যাগ <Class>-এর জন্য,
নীতি আলাদা আলাদা কাউন্টার বজায় রাখে।
<Class> এলিমেন্ট ব্যবহার করতে, <Class> ট্যাগেref অ্যাট্রিবিউট ব্যবহার করে ফ্লো ভেরিয়েবল নির্দিষ্ট করুন।
Edge তারপর
ফ্লো ভেরিয়েবলের ভ্যালু ব্যবহার করে <Allow> চাইল্ড ট্যাগগুলির মধ্যে একটি বেছে নেয় যাতে অনুমোদিত
নীতির সংখ্যা নির্ধারণ করা যায়। নিচে দেখানো class
<Allow> ট্যাগ অ্যাট্রিবিউটের সাথে Edge ফ্লো ভেরিয়েবলের ভ্যালু ম্যাচ করে:
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
এই উদাহরণে, বর্তমান কোটা কাউন্টারটি প্রতিটি অনুরোধের সাথে পাস করা
time_variable কোয়েরি প্যারামিটারের ভ্যালু দ্বারা নির্ধারিত হয়। এই ভেরিয়েবেলের ভ্যালু peak_time বা off_peak_time
হতে পারে। কোয়েরি প্যারামিটারে ভুল
ভ্যালু থাকলে, নীতি কোটা লঙ্ঘন সংক্রান্ত সমস্যা দেখায়।
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | প্রযোজ্য নয় |
অ্যাট্রিবিউট
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ref |
কোটার জন্য কোটা ক্লাস সহ ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করা হয়। |
কিছুই নয় | প্রয়োজনীয় |
<Allow>/<Class>/<Allow> এলিমেন্ট
<Allow> এলিমেন্ট, <Class> এলিমেন্ট দ্বারা সংজ্ঞায়িত কোটা কাউন্টারের
সীমা নির্দিষ্ট করে। প্রতিটি
আলাদা <Allow> চাইল্ড ট্যাগের <Class> জন্য, নীতি আলাদা আলাদা কাউন্টার বজায় রাখে।
যেমন:
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
এই উদাহরণে, কোটা নীতিতে peak_time ও off_peak_time নামের দুটি কোটা কাউন্টার আছে।
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | প্রযোজ্য নয় |
অ্যাট্রিবিউট
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ক্লাস |
কোটা কাউন্টারের নাম নির্ধারণ করে। |
কিছুই নয় | প্রয়োজনীয় |
| গণনা | কাউন্টারের জন্য কোটার সীমা নির্দিষ্ট করে। | কিছুই নয় | প্রয়োজনীয় |
<Interval> এলিমেন্ট
একটি পূর্ণসংখ্যা (যেমন, ১, ২, ৫, ৬০ ইত্যাদি) নির্দিষ্ট করতে ব্যবহার করুন যা
TimeUnitআপনি নির্দিষ্ট করেছেন (মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস) তার সাথে পেয়ার করা হবে যাতে একটি সময়
সীমা নির্ধারণ করা যায় যার মধ্যে Edge কোটা ব্যবহার গণনা করে।
যেমন, Interval-এর 24-এর সাথে
TimeUnit-এর hour-এর অর্থ হল যে কোটা
২৪ ঘণ্টা ধরে হিসেব করা হবে।
<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
| ডিফল্ট: | কিছুই নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| টাইপ: | পূর্ণসংখ্যা |
অ্যাট্রিবিউট
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ref |
কোটার জন্য ইন্টার্ভাল সহ ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করা হয়।
|
কিছুই নয় | ঐচ্ছিক |
<TimeUnit> এলিমেন্ট
কোটার ক্ষেত্রে প্রযোজ্য সময়ের একক নির্দিষ্ট করতে ব্যবহার করা হয়।
যেমন, Interval-এর 24-এর সাথে
TimeUnit-এর hour-এর অর্থ হল যে কোটা
২৪ ঘণ্টা ধরে হিসেব করা হবে।
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
| ডিফল্ট: | কিছুই নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| টাইপ: |
স্ট্রিং। |
অ্যাট্রিবিউট
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ref | কোটার জন্য সময়ের একক সহ ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করা হয়। ref
স্পষ্টভাবে উল্লেখ করা ইন্টারভ্যাল ভ্যালুর চেয়ে বেশি অগ্রাধিকার পায়। রানটাইমে ref সমাধান না হলে, ভ্যালু ব্যবহার করা হয়। |
কিছুই নয় | ঐচ্ছিক |
<StartTime> এলিমেন্ট
type-এর মান calendar, হিসেবে সেট করা থাকলে, কোটা কাউন্টার কবে থেকে গণনা শুরু করবে সেই তারিখ
ও সময় নির্দিষ্ট করা হয়। কোনও অ্যাপ থেকে কোনও অনুরোধ পাওয়া গেছে কিনা তা নির্বিশেষে
এই গণনা শুরু হয়।
যেমন:
<StartTime>2017-7-16 12:00:00</StartTime>
| ডিফল্ট: | কিছুই নয় |
| উপস্থিতি: | type-এর মান calendar হিসেবে সেট করা থাকলে এটি প্রয়োজন। |
| টাইপ: |
ISO 8601 তারিখ ও সময়ের ফর্ম্যাটে স্ট্রিং। |
<Distributed> এলিমেন্ট
Edge-এর কোনও ইনস্টলেশন অনুরোধ প্রসেস করার জন্য এক বা একাধিক মেসেজ প্রসেসর ব্যবহার করতে পারে। এই
এলিমেন্টকে true হিসেবে সেট করে নির্দিষ্ট করুন যে নীতিকে একটি সেন্ট্রাল
কাউন্টার বজায় রাখতে হবে এবং সব মেসেজ প্রসেসর জুড়ে সেটি ক্রমাগত সিঙ্ক করতে হবে। মেসেজ প্রসেসর
উপলভ্যতা জোন এবং/অথবা অঞ্চল জুড়ে থাকতে পারে।
আপনি false-এর ডিফল্ট ভ্যালু ব্যবহার করলে, আপনার কোটা অতিক্রম করে যেতে পারেন কারণ
প্রতিটি মেসেজ প্রসেসরের জন্য গণনা শেয়ার করা হয় না:
<Distributed>true</Distributed>
কাউন্টার সিঙ্ক্রোনাইজ করা এবং প্রতিটি অনুরোধে আপডেট করা হয়েছে তা নিশ্চিত করতে,
<Distributed> এবং <Synchronous>-এর মান true হিসেবে সেট করুন:
<Distributed>true</Distributed> <Synchronous>true</Synchronous>
| ডিফল্ট: | মিথ্যা |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | বুলিয়ান |
<Synchronous> এলিমেন্ট
ডিস্ট্রিবিউট করা কোটা কাউন্টার সিঙ্ক্রোনাসভাবে আপডেট করতে true-এ সেট করুন। এর
অর্থ হল, API-তে কোনও অনুরোধের জন্য কোটা চেক করার সময় একই সাথে কাউন্টার আপডেট করা
হয়। কোটা শেষ হয়ে যাওয়ার পরে কোনও API কল
করা যাবে না, এটি গুরুত্বপূর্ণ হলে true হিসেবে সেট করুন।
কোটা কাউন্টার অ্যাসিঙ্ক্রোনাসভাবে আপডেট করতে false-এ সেট করুন। এর অর্থ হল
কোটা অতিক্রমকারী কিছু API কল পাস হয়ে যেতে পারে, এটি নির্ভর করে কখন
সেন্ট্রাল রিপোজিটরিতে কোটা কাউন্টার অ্যাসিঙ্ক্রোনাসভাবে আপডেট করা হয় তার উপর। তবে, সিঙ্ক্রোনাস আপডেটের সাথে যুক্ত সম্ভাব্য পারফর্ম্যান্সের প্রভাব
আপনার উপর পড়বে না।
অ্যাসিঙ্ক্রোনাস আপডেটের ডিফল্ট ইন্টার্ভেল হল ১০ সেকেন্ড। এই অ্যাসিঙ্ক্রোনাস আচরণ কনফিগার করতে
AsynchronousConfiguration এলিমেন্ট ব্যবহার করুন।
<Synchronous>false</Synchronous>
| ডিফল্ট: | মিথ্যা |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | বুলিয়ান |
<AsynchronousConfiguration> এলিমেন্ট
নীতি
কনফিগারেশন এলিমেন্ট <Synchronous> না থাকলে অথবা থাকলে এবং false হিসেবে সেট করা
থাকলে, ডিস্ট্রিবিউট করা কোটা কাউন্টারগুলির মধ্যে সিঙ্ক্রোনাইজেশন ইন্টারভ্যাল কনফিগার করে।
আপনি
SyncIntervalInSeconds বা SyncMessageCount চাইল্ড এলিমেন্ট ব্যবহার করে নির্দিষ্ট সময়সীমা বা মেসেজের সংখ্যার পরে সিঙ্ক্রোনাইজ করতে পারবেন।
এগুলি পারস্পরিকভাবে এক্সক্লুসিভ। যেমন,
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
অথবা
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
| ডিফল্ট: | SyncIntervalInSeconds = ১০ সেকেন্ড |
| উপস্থিতি: | ঐচ্ছিক; <Synchronous>
true-এ সেট করা থাকলে উপেক্ষা করা হয়। |
| টাইপ: |
কম্পাউন্ড |
<AsynchronousConfiguration>/<SyncIntervalInSeconds> এলিমেন্ট
ডিফল্ট আচরণ ওভাররাইড করতে এটি ব্যবহার করুন, যেখানে ১০ সেকেন্ডের ব্যবধানের পরে অ্যাসিঙ্ক্রোনাস আপডেট পারফর্ম করা হয়।
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
সিঙ্ক ইন্টারভ্যাল অবশ্যই ১০ সেকেন্ডের বেশি হতে হবে, যা সীমা টপিকে বর্ণনা করা আছে।
| ডিফল্ট: | 10 |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: |
পূর্ণসংখ্যা |
<AsynchronousConfiguration>/<SyncMessageCount> এলিমেন্ট
কোটা আপডেট হওয়ার মধ্যে সব Apigee মেসেজ প্রসেসর জুড়ে অনুরোধের সংখ্যা নির্দিষ্ট করে।
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
এই উদাহরণে উল্লেখ করা হয়েছে যে প্রতিটি Apigee Edge মেসেজ প্রসেসর জুড়ে প্রতি ৫টি অনুরোধের পরে কোটা কাউন্ট আপডেট করা হয়।
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: |
পূর্ণসংখ্যা |
<Identifier> এলিমেন্ট
ফ্লো ভেরিয়েবলের উপর ভিত্তি করে অনন্য
কাউন্টার তৈরি করতে, নীতি কনফিগার করার জন্য <Identifier> এলিমেন্ট ব্যবহার করুন।
আপনি এই এলিমেন্ট ব্যবহার না করলে, নীতি একটি কাউন্টার ব্যবহার করে যা কোটার বিরুদ্ধে প্রয়োগ করা হয়।
এই এলিমেন্টটি নিম্নলিখিত Apigee কমিউনিটি পোস্টেও আলোচনা করা হয়েছে: বিভিন্ন নীতি জুড়ে কোটা শনাক্তকারী।
<Identifier ref="verifyapikey.verify-api-key.client_id"/>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: |
স্ট্রিং |
অ্যাট্রিবিউট
| অ্যাট্রিবিউট | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| ref |
অনুরোধের জন্য ব্যবহার করার কাউন্টারকে শনাক্ত করে এমন ফ্লো ভেরিয়েবল নির্দিষ্ট করে। HTTP হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার বা মেসেজ কন্টেন্ট হতে পারে যা প্রতিটি অ্যাপ, অ্যাপ ব্যবহারকারী, অ্যাপ ডেভেলপার, API প্রোডাক্ট বা অন্যান্য বৈশিষ্ট্যের জন্য অনন্য। অ্যাপকে অনন্যভাবে শনাক্ত করার জন্য কিছু পরিস্থিতিতে, কোটা সেটিংস অবশ্যই পুনরুদ্ধার করতে হবে যেখানে কোনও
|
প্রযোজ্য নয় | ঐচ্ছিক |
<MessageWeight> এলিমেন্ট
প্রতিটি মেসেজকে অ্যাসাইন করা ওজন নির্দিষ্ট করতে ব্যবহার করা হয়। অনুরোধ মেসেজের প্রভাব বাড়াতে মেসেজ ওয়েট ব্যবহার করুন। যেমন, যে মেসেজগুলি অন্যদের তুলনায় বেশি কম্পিউটেশনাল রিসোর্স ব্যবহার করে।
যেমন, আপনি POST মেসেজকে GET
মেসেজের তুলনায় দ্বিগুণ "ভারী" বা দামি হিসেবে গণনা করতে চান। তাই, POST-এর জন্য MessageWeight-এর মান ২ এবং GET-এর জন্য ১
সেট করুন। এমনকি, আপনি MessageWeight-এর মান ০ হিসেবে সেট করতে পারেন, যাতে অনুরোধটি কাউন্টারে
প্রভাব না ফেলে। এই উদাহরণে, কোটা যদি প্রতি মিনিটে ১০টি মেসেজ হয় এবং
POST অনুরোধের জন্য MessageWeight হল 2, তাহলে কোটা
যেকোনও ১০ মিনিটের ব্যবধানে ৫টি POST অনুরোধের অনুমতি দেবে। কাউন্টার রিসেট করার আগে কোনও অতিরিক্ত অনুরোধ, POST বা GET,
প্রত্যাখ্যান করা হয়।
MessageWeight-এর মান ফ্লো ভেরিয়েবল দ্বারা নির্দিষ্ট করতে হবে
এবং HTTP হেডার, কোয়েরি প্যারামিটার, XML বা JSON অনুরোধ
পে-লোড বা অন্য যেকোনও ফ্লো ভেরিয়েবল থেকে এক্সট্র্যাক্ট করা যেতে পারে। যেমন, আপনি এটি
weightনামের হেডারে সেট করেছেন:
<MessageWeight ref="message_weight"/>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: |
পূর্ণসংখ্যা |
ফ্লো ভেরিয়েবল
কোটা নীতি এক্সিকিউট করলে, নিম্নলিখিত পূর্বনির্ধারিত ফ্লো ভেরিয়েবল অটোমেটিক পূরণ হয়ে যায়। ফ্লো ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।
| ভেরিয়েবল | ধরন | অনুমতি | বিবরণ |
|---|---|---|---|
| ratelimit.{policy_name}.allowed.count | দীর্ঘ | রিড-অনলি | অনুমোদিত কোটার সংখ্যা রিটার্ন করে |
| ratelimit.{policy_name}.used.count | দীর্ঘ | রিড-অনলি | কোটা ইন্টারভ্যালের মধ্যে ব্যবহৃত বর্তমান কোটা রিটার্ন করে |
| ratelimit.{policy_name}.available.count | দীর্ঘ | রিড-অনলি | কোটা ইন্টারভ্যালে উপলভ্য কোটার সংখ্যা রিটার্ন করে |
| ratelimit.{policy_name}.exceed.count | দীর্ঘ | রিড-অনলি | কোটা পেরিয়ে গেলে ১ রিটার্ন করে। |
| ratelimit.{policy_name}.total.exceed.count | দীর্ঘ | রিড-অনলি | কোটা পেরিয়ে গেলে ১ রিটার্ন করে। |
| ratelimit.{policy_name}.expiry.time | দীর্ঘ | রিড-অনলি |
কোটা কখন শেষ হবে এবং নতুন কোটা ইন্টার্ভাল কখন শুরু হবে তা নির্ধারণ করে এমন মিলিসেকেন্ডে UTC সময় রিটার্ন করে। কোটা নীতির ধরন |
| ratelimit.{policy_name}.identifier | স্ট্রিং | রিড-অনলি | নীতিতে অ্যাটাচ করা (ক্লায়েন্ট) শনাক্তকারী রেফারেন্স রিটার্ন করে |
| ratelimit.{policy_name}.class | স্ট্রিং | রিড-অনলি | ক্লায়েন্ট আইডেন্টিফায়ারের সাথে যুক্ত ক্লাস রিটার্ন করে |
| ratelimit.{policy_name}.class.allowed.count | দীর্ঘ | রিড-অনলি | ক্লাসে সংজ্ঞায়িত অনুমোদিত কোটার সংখ্যা দেখায় |
| ratelimit.{policy_name}.class.used.count | দীর্ঘ | রিড-অনলি | ক্লাসের মধ্যে ব্যবহৃত কোটা রিটার্ন করে |
| ratelimit.{policy_name}.class.available.count | দীর্ঘ | রিড-অনলি | ক্লাসে উপলভ্য কোটার সংখ্যা দেখায় |
| ratelimit.{policy_name}.class.exceed.count | দীর্ঘ | রিড-অনলি | বর্তমান কোটা ইন্টারভ্যালে ক্লাসে সীমা অতিক্রম করা অনুরোধের সংখ্যা রিটার্ন করে |
| ratelimit.{policy_name}.class.total.exceed.count | দীর্ঘ | রিড-অনলি | সব কোটা ইন্টারভ্যাল জুড়ে ক্লাসে সীমা অতিক্রম করা অনুরোধের মোট সংখ্যা রিটার্ন করে, তাই এটি হল সব কোটা ইন্টারভ্যালের জন্য class.exceed.count-এর যোগফল।
|
| ratelimit.{policy_name}.failed | বুলিয়ান | রিড-অনলি |
নীতি প্রয়োগ করা যায়নি কিনা তা নির্দেশ করে (ট্রু বা ফলস)। |
সমস্যার রেফারেন্স
এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।
রানটাইম সমস্যা
নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।
| সমস্যার কোড | HTTP স্ট্যাটাস | কারণ | এর সমাধান করুন |
|---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 | কোটা নীতিতে <Interval> এলিমেন্ট নির্দিষ্ট করা না থাকলে এটি ঘটে। এই এলিমেন্ট
বাধ্যতামূলক এবং কোটার ক্ষেত্রে প্রযোজ্য সময়ের ব্যবধান নির্দিষ্ট করতে এটি ব্যবহার করা হয়। <TimeUnit> এলিমেন্টে যেভাবে উল্লেখ করা হয়েছে, সেই অনুযায়ী সময়সীমা মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস হতে পারে। |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 | কোটা নীতিতে <TimeUnit> এলিমেন্ট নির্দিষ্ট করা না থাকলে এটি ঘটে। এই এলিমেন্ট
বাধ্যতামূলক এবং কোটার ক্ষেত্রে প্রযোজ্য সময়ের একক নির্দিষ্ট করতে ব্যবহার করা হয়। সময়সীমা
মিনিট, ঘণ্টা, দিন, সপ্তাহ বা মাস হতে পারে। |
build |
policies.ratelimit.InvalidMessageWeight |
500 | ফ্লো ভেরিয়েবলের মাধ্যমে নির্দিষ্ট করা <MessageWeight> এলিমেন্টের ভ্যালু
ভুল হলে (পূর্ণসংখ্যা নয় এমন ভ্যালু) এটি ঘটে। |
build |
policies.ratelimit.QuotaViolation |
500 | কোটার সর্বাধিক সীমা পেরিয়ে গেছে। | প্রযোজ্য নয় |
ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা
| সমস্যার নাম | কারণ | এর সমাধান করুন |
|---|---|---|
InvalidQuotaInterval |
<Interval> এলিমেন্টে উল্লেখ করা কোটা ইন্টারভ্যাল
পূর্ণসংখ্যা না হলে, API প্রক্সি ডেপ্লয় করা যায় না। যেমন, <Interval> এলিমেন্টে কোটা ইন্টারভ্যাল
০.১ হিসেবে নির্দিষ্ট করা থাকলে, API প্রক্সি
ডেপ্লয় করা যায় না।
|
build |
InvalidQuotaTimeUnit |
<TimeUnit> এলিমেন্টে উল্লেখ করা সময় একক কাজ না করলে,
API প্রক্সি ডিপ্লয় করা যায় না। যেসব সময় একক কাজ করে সেগুলি হল minute,
hour, day, week এবং month।
|
build |
InvalidQuotaType |
<Quota>
এলিমেন্টে type অ্যাট্রিবিউট দ্বারা নির্দিষ্ট কোটার ধরন ভুল হলে, API প্রক্সি ডেপ্লয় করা যায় না। এইসব
কোটা ধরন কাজ করে: default, calendar, flexi এবং rollingwindow।
|
build |
InvalidStartTime |
<StartTime> এলিমেন্টে উল্লেখ করা সময়ের ফর্ম্যাট
ভুল হলে, API প্রক্সি ডেপ্লয় করা যায় না। সঠিক ফর্ম্যাট হল yyyy-MM-dd HH:mm:ss,
যা হল ISO 8601 তারিখ ও সময়ের ফর্ম্যাট। যেমন, <StartTime> এলিমেন্টে উল্লেখ করা সময় যদি
7-16-2017 12:00:00 হয়, তাহলে API প্রক্সি
ডিপ্লয় করা যাবে না।
|
build |
StartTimeNotSupported |
<StartTime> এলিমেন্ট নির্দিষ্ট করা থাকলে, যার কোটার ধরন
calendar ধরন নয়, তাহলে API প্রক্সি ডেপ্লয় করা যায় না। <StartTime> এলিমেন্টটি
শুধুমাত্র calendar কোটার ধরনের ক্ষেত্রে কাজ করে। যেমন, <Quota> এলিমেন্টে type অ্যাট্রিবিউট flexi বা rolling window হিসেবে সেট করা থাকলে, API প্রক্সি ডেপ্লয় করা যায় না।
|
build |
InvalidTimeUnitForDistributedQuota |
<Distributed> এলিমেন্ট true হিসেবে সেট করা থাকলে এবং <TimeUnit> এলিমেন্ট second হিসেবে সেট করা থাকলে
API প্রক্সি ডেপ্লয় করা যায় না। ডিস্ট্রিবিউট করা কোটার জন্য second timeunit সঠিক নয়।
|
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
কোটা নীতির মধ্যে <SyncIntervalInSeconds> এলিমেন্টের জন্য নির্দিষ্ট করা ভ্যালু
<AsynchronousConfiguration> এলিমেন্টের মধ্যে শূন্যের থেকে কম হলে, API প্রক্সি ডেপ্লয়মেন্ট ব্যর্থ হয়। |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
কোটা নীতিতে <AsynchronousConfiguration> এলিমেন্টের ভ্যালু true হিসেবে সেট করা থাকলে, যা
<AsynchronousConfiguration> এলিমেন্ট ব্যবহার করে অ্যাসিঙ্ক্রোনাস কনফিগারেশনও সংজ্ঞায়িত করে, তাহলে
API প্রক্সি ডেপ্লয় করা যায় না। |
build |
ফল্ট ভেরিয়েবল
এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, এইসব ভেরিয়েবল সেট করা হয়। আরও তথ্যের জন্য, নীতি সংক্রান্ত সমস্যার ব্যাপারে আপনার কী জানা প্রয়োজন দেখুন।
| ভেরিয়েবল | কোথায় | উদাহরণ |
|---|---|---|
fault.name="fault_name" |
fault_name হল সমস্যার নাম, যা উপরে দেওয়া রানটাইম সংক্রান্ত সমস্যা সারণীতে তালিকাভুক্ত করা আছে। ফল্ট কোডের শেষ অংশটি হল ফল্টের নাম। | fault.name Matches "QuotaViolation" |
ratelimit.policy_name.failed |
policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। | ratelimit.QT-QuotaPolicy.failed = true |
সমস্যার উত্তরের উদাহরণ
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.QuotaViolation" }, "faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default" } }
ভুল নিয়মের উদাহরণ
<FaultRules>
<FaultRule name="Quota Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "QuotaViolation") </Condition>
</Step>
<Condition>ratelimit.Quota-1.failed=true</Condition>
</FaultRule>
</FaultRules>স্কিমা
সম্পর্কিত বিষয়
কোটা, স্পাইক অ্যারেস্ট ও কনকারেন্ট রেট লিমিট সংক্রান্ত নীতিগুলির তুলনা করা