আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
একটি API প্রক্সি নির্দিষ্ট সময়ের মধ্যে, যেমন এক মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাস, কতগুলি অনুরোধ বার্তা অনুমোদন করে তা কনফিগার করতে কোটা নীতি ব্যবহার করুন। আপনি API প্রক্সি অ্যাক্সেসকারী সমস্ত অ্যাপের জন্য একই কোটা সেট করতে পারেন, অথবা আপনি নিম্নলিখিতগুলির উপর ভিত্তি করে কোটা সেট করতে পারেন:
- যে পণ্যটিতে API প্রক্সি রয়েছে
- API অনুরোধকারী অ্যাপ
- অ্যাপ ডেভেলপার
- আরও অনেক মানদণ্ড
সামগ্রিক ট্র্যাফিক বৃদ্ধি থেকে রক্ষা পেতে কোটা ব্যবহার করবেন না। এর জন্য, স্পাইক অ্যারেস্ট নীতি ব্যবহার করুন। স্পাইক অ্যারেস্ট নীতি দেখুন।
ভিডিও
এই ভিডিওগুলিতে কোটা নীতির সাথে কোটা ব্যবস্থাপনার পরিচয় করিয়ে দেওয়া হয়েছে:
ভূমিকা (নতুন প্রান্ত)
ভূমিকা (ক্লাসিক এজ)
গতিশীল কোটা
বিতরণকৃত এবং সমলয়যুক্ত
বার্তার ওজন
ক্যালেন্ডার
ঘূর্ণায়মান জানালা
ফ্লেক্সি
শর্তসাপেক্ষ কোটা
প্রবাহ ভেরিয়েবল
ত্রুটি পরিচালনা
নমুনা
এই নীতিমালা কোডের নমুনাগুলি কোটা পিরিয়ডগুলি কীভাবে শুরু এবং শেষ করতে হয় তা ব্যাখ্যা করে:
আরও গতিশীল কোটা
<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 প্রক্সিটি একটি অনুরোধে পাস করা API কী যাচাই করার জন্য verifyAPIKey নীতি, verify-api-key নামক একটি VerifyAPIKey নীতি ব্যবহার করে। এরপর কোটা নীতিটি API পণ্যে সেট করা কোটা মানগুলি পড়ার জন্য VerifyAPIKey নীতি থেকে ফ্লো ভেরিয়েবলগুলি অ্যাক্সেস করে। VerifyAPIKey ফ্লো ভেরিয়েবল সম্পর্কে আরও জানতে, Verify API Key নীতি দেখুন।
আরেকটি বিকল্প হল পৃথক ডেভেলপার বা অ্যাপের জন্য কাস্টম অ্যাট্রিবিউট সেট করা, এবং তারপর কোটা নীতিতে সেই মানগুলি পড়া। উদাহরণস্বরূপ, আপনি প্রতিটি ডেভেলপারের জন্য আলাদা কোটা মান সেট করতে চান। এই ক্ষেত্রে, আপনি সীমা, সময় ইউনিট এবং ব্যবধান ধারণকারী ডেভেলপারের জন্য কাস্টম অ্যাট্রিবিউট সেট করেন। তারপর আপনি নীচে দেখানো হিসাবে কোটা নীতিতে এই মানগুলি উল্লেখ করেন:
<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>
calendar type সেট করা কোটার জন্য, আপনাকে একটি স্পষ্ট <StartTime> মান নির্ধারণ করতে হবে। সময়ের মান হল GMT সময়, স্থানীয় সময় নয়। যদি আপনি calendar টাইপের নীতির জন্য একটি <StartTime> মান প্রদান না করেন, তাহলে 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 নীতি ব্যবহার করে Quota flow ভেরিয়েবলের মানগুলি রেসপন্স হেডার হিসেবে ফেরত পাঠাতে পারেন:
<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 (শুরু হওয়ার সময় থেকে 1 ঘন্টা) এ 0 এ রিসেট হবে। যদি প্রথম বার্তাটি 2017-07-08 07:35:28 এ গৃহীত হয় এবং বার্তার সংখ্যা 2017-07-08 08:00:00 এর আগে 10,000 এ পৌঁছায়, তাহলে এই সংখ্যার বাইরের কলগুলি বাতিল করা হবে যতক্ষণ না ঘন্টার শেষে গণনাটি রিসেট হয়।
কাউন্টার রিসেট করার সময় <Interval> এবং <TimeUnit> এর সংমিশ্রণের উপর ভিত্তি করে। উদাহরণস্বরূপ, যদি আপনি <TimeUnit> ঘন্টার জন্য <Interval> কে 12 এ সেট করেন, তাহলে কাউন্টারটি প্রতি বারো ঘন্টা পর পর রিসেট হবে। আপনি <TimeUnit> কে মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাসে সেট করতে পারেন।
আপনি আপনার API প্রক্সিতে একাধিক স্থানে এই নীতিটি উল্লেখ করতে পারেন। উদাহরণস্বরূপ, আপনি এটিকে Proxy PreFlow-এ রাখতে পারেন যাতে এটি প্রতিটি অনুরোধে কার্যকর হয়। অথবা, আপনি এটি 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> ট্যাগটি verify-api-key নামক একটি VerifyAPIKey নীতির client_id ফ্লো ভেরিয়েবল ব্যবহার করে:
<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 কলের সংখ্যার উপর সীমা প্রয়োগ করতে সক্ষম করে। কোটা নীতি ব্যবহার করে, উদাহরণস্বরূপ, আপনি প্রতি মিনিটে অ্যাপগুলিকে 1টি অনুরোধ বা প্রতি মাসে 10,000টি অনুরোধের মধ্যে সীমাবদ্ধ করতে পারেন।
উদাহরণস্বরূপ, যদি একটি কোটা প্রতি মাসে ১০,০০০ বার্তা হিসাবে সংজ্ঞায়িত করা হয়, তাহলে ১০,০০০তম বার্তার পরে হার-সীমাবদ্ধকরণ শুরু হয়। সেই সময়ের প্রথম দিন বা শেষ দিনে ১০,০০০ বার্তা গণনা করা হয়েছিল কিনা তা বিবেচ্য নয়; নির্দিষ্ট সময়ের ব্যবধানের শেষে কোটা কাউন্টার স্বয়ংক্রিয়ভাবে রিসেট না হওয়া পর্যন্ত, অথবা রিসেট কোটা নীতি ব্যবহার করে কোটা স্পষ্টভাবে রিসেট না হওয়া পর্যন্ত কোনও অতিরিক্ত অনুরোধের ক্ষেত্র অনুমোদিত নয়।
কোটার একটি ভিন্নতা যা স্পাইকআরেস্ট নামে পরিচিত, তা ট্র্যাফিক স্পাইক (বা বিস্ফোরণ) প্রতিরোধ করে যা হঠাৎ ব্যবহার বৃদ্ধি, বগি ক্লায়েন্ট বা দূষিত আক্রমণের কারণে হতে পারে। স্পাইকআরেস্ট সম্পর্কে আরও তথ্যের জন্য, স্পাইক অ্যারেস্ট নীতি দেখুন।
কোটা পৃথক API প্রক্সিতে প্রযোজ্য এবং API প্রক্সিগুলির মধ্যে বিতরণ করা হয় না। উদাহরণস্বরূপ, যদি আপনার একটি API পণ্যে তিনটি API প্রক্সি থাকে, তাহলে তিনটি একই কোটা নীতি কনফিগারেশন ব্যবহার করলেও তিনটির মধ্যে একটি একক কোটা ভাগ করা হয় না।
কোটা নীতির ধরণ
কোটা নীতি বিভিন্ন ধরণের নীতি সমর্থন করে: ডিফল্ট, calendar , flexi এবং rollingwindow । প্রতিটি প্রকার নির্ধারণ করে যে কোটা কাউন্টার কখন শুরু হয় এবং কখন এটি রিসেট হয়, যেমনটি নিম্নলিখিত সারণীতে দেখানো হয়েছে:
| সময় একক | ডিফল্ট (অথবা নাল) রিসেট | ক্যালেন্ডার রিসেট | ফ্লেক্সি রিসেট |
|---|---|---|---|
| মিনিট | পরের মিনিটের শুরু | <StartTime> এক মিনিট পরে | প্রথম অনুরোধের এক মিনিট পর |
| ঘন্টা | পরবর্তী ঘন্টার শেষের দিকে | <StartTime> এক ঘন্টা পরে> | প্রথম অনুরোধের এক ঘন্টা পরে |
| দিন | বর্তমান দিনের মধ্যরাত GMT | <StartTime> ২৪ ঘন্টা পরে | প্রথম অনুরোধের ২৪ ঘন্টা পরে |
| সপ্তাহ | সপ্তাহের শেষে রবিবার মধ্যরাত GMT | <StartTime> এক সপ্তাহ পরে | প্রথম অনুরোধের এক সপ্তাহ পর |
| মাস | মাসের শেষ দিনের মধ্যরাত GMT | <StartTime> এক মাস (২৮ দিন) পরে | প্রথম অনুরোধের এক মাস (২৮ দিন) পর |
type="calendar" এর জন্য, আপনাকে <StartTime> এর মান নির্দিষ্ট করতে হবে।
টেবিলটিতে rollingwindow ধরণের মান তালিকাভুক্ত করা হয়নি। রোলিং উইন্ডো কোটাগুলি কোটা "উইন্ডো" এর আকার নির্ধারণ করে কাজ করে, যেমন এক ঘন্টা বা একদিনের উইন্ডো। যখন একটি নতুন অনুরোধ আসে, তখন নীতি নির্ধারণ করে যে কোটাটি অতীতের "উইন্ডো" সময়ের মধ্যে অতিক্রম করা হয়েছে কিনা।
উদাহরণস্বরূপ, আপনি দুই ঘন্টার একটি সময়সীমা নির্ধারণ করেন যেখানে ১০০০টি অনুরোধ অনুমোদিত হয়। একটি নতুন অনুরোধ বিকেল ৪:৪৫ টায় আসে। নীতিটি গত দুই ঘন্টার সময়সীমার কোটা গণনা করে, অর্থাৎ দুপুর ২:৪৫ টার পর থেকে অনুরোধের সংখ্যা। যদি সেই দুই ঘন্টার সময়সীমা অতিক্রম না করা হয়, তাহলে অনুরোধটি অনুমোদিত হবে।
এক মিনিট পরে, বিকাল ৪:৪৬ মিনিটে, আরেকটি অনুরোধ আসে। এখন নীতিমালাটি বিকাল ২:৪৬ মিনিট থেকে কোটার গণনা গণনা করে নির্ধারণ করে যে সীমা অতিক্রম করা হয়েছে কিনা।
rollingwindow ধরণের জন্য, কাউন্টারটি কখনই রিসেট হয় না, তবে প্রতিটি অনুরোধে পুনরায় গণনা করা হয়।
কোটা কাউন্টার বোঝা
ডিফল্টরূপে, একটি কোটা নীতি একটি একক কাউন্টার বজায় রাখে, আপনি এটি একটি API প্রক্সিতে কতবার উল্লেখ করেন তা নির্বিশেষে। কোটা কাউন্টারের নাম নীতির name বৈশিষ্ট্যের উপর ভিত্তি করে।
উদাহরণস্বরূপ, আপনি MyQuotaPolicy নামে একটি কোটা নীতি তৈরি করেন যার সীমা ৫টি অনুরোধের সাথে থাকে এবং এটি API প্রক্সিতে একাধিক প্রবাহে (ফ্লো A, B, এবং C) স্থাপন করেন। যদিও এটি একাধিক প্রবাহে ব্যবহৃত হয়, এটি একটি একক কাউন্টার বজায় রাখে যা নীতির সমস্ত উদাহরণ দ্বারা আপডেট করা হয়:
- ফ্লো A কার্যকর করা হয়েছে -> MyQuotaPolicy কার্যকর করা হয়েছে এবং এর কাউন্টার = 1
- ফ্লো বি কার্যকর করা হয়েছে -> MyQuotaPolicy কার্যকর করা হয়েছে এবং এর কাউন্টার = 2
- ফ্লো A কার্যকর করা হয়েছে -> MyQuotaPolicy কার্যকর করা হয়েছে এবং এর কাউন্টার = 3
- ফ্লো সি কার্যকর করা হয়েছে -> MyQuotaPolicy কার্যকর করা হয়েছে এবং এর কাউন্টার = 4
- ফ্লো A কার্যকর করা হয়েছে -> MyQuotaPolicy কার্যকর করা হয়েছে এবং এর কাউন্টার = 5
কোটা কাউন্টারটি তার সীমায় পৌঁছে যাওয়ায় তিনটি প্রবাহের যেকোনো একটির পরবর্তী অনুরোধ প্রত্যাখ্যান করা হবে।
একটি API প্রক্সি প্রবাহে একাধিক স্থানে একই কোটা নীতি ব্যবহার করা, যা অনিচ্ছাকৃতভাবে আপনার প্রত্যাশার চেয়ে দ্রুত কোটা শেষ করে দিতে পারে, এটি The Book of Apigee Edge Antipatterns- এ বর্ণিত একটি অ্যান্টি-প্যাটার্ন।
বিকল্পভাবে, আপনি আপনার API প্রক্সিতে একাধিক কোটা নীতি সংজ্ঞায়িত করতে পারেন এবং প্রতিটি প্রবাহে একটি ভিন্ন নীতি ব্যবহার করতে পারেন। প্রতিটি কোটা নীতি নীতির name বৈশিষ্ট্যের উপর ভিত্তি করে নিজস্ব কাউন্টার বজায় রাখে।
অথবা, একটি একক নীতিতে একাধিক, অনন্য কাউন্টার সংজ্ঞায়িত করতে কোটা নীতিতে <Class> অথবা <Identifier> উপাদানগুলি ব্যবহার করুন। এই উপাদানগুলি ব্যবহার করে, একটি একক নীতি অনুরোধকারী অ্যাপ, অনুরোধকারী অ্যাপ ডেভেলপার, একটি ক্লায়েন্ট আইডি বা অন্যান্য ক্লায়েন্ট শনাক্তকারী এবং আরও অনেক কিছুর উপর ভিত্তি করে বিভিন্ন কাউন্টার বজায় রাখতে পারে। <Class> অথবা <Identifier> উপাদানগুলি ব্যবহার সম্পর্কে আরও তথ্যের জন্য উপরের উদাহরণগুলি দেখুন।
সময়ের স্বরলিপি
সমস্ত কোটা সময় সমন্বিত সর্বজনীন সময় (UTC) সময় অঞ্চলে সেট করা হয়।
কোটা সময়ের স্বরলিপি আন্তর্জাতিক মান ISO 8601 এ সংজ্ঞায়িত আন্তর্জাতিক মান তারিখ স্বরলিপি অনুসরণ করে।
তারিখগুলিকে বছর, মাস এবং দিন হিসাবে নিম্নলিখিত বিন্যাসে সংজ্ঞায়িত করা হয়েছে: YYYY-MM-DD । উদাহরণস্বরূপ, 2015-02-04 4 ফেব্রুয়ারী, 2015 কে প্রতিনিধিত্ব করে।
দিনের সময়কে ঘন্টা, মিনিট এবং সেকেন্ড হিসাবে নিম্নলিখিত বিন্যাসে সংজ্ঞায়িত করা হয়েছে: 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 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 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 এর মান ব্যবহার করা হবে।
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | পূর্ণসংখ্যা |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| গণনা | কোটার জন্য একটি বার্তা গণনা নির্দিষ্ট করতে ব্যবহার করুন। উদাহরণস্বরূপ, ১০০ এর একটি | ২০০০ | ঐচ্ছিক |
| কাউন্ট রেফ | একটি কোটার জন্য বার্তা গণনা ধারণকারী একটি প্রবাহ ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। | কেউ না | ঐচ্ছিক |
<অ্যালাউ>/<ক্লাস> এলিমেন্ট
<Class> উপাদানটি আপনাকে একটি ফ্লো ভেরিয়েবলের মানের উপর ভিত্তি করে <Allow> উপাদানের মান শর্তসাপেক্ষ করতে দেয়। <Class> এর প্রতিটি ভিন্ন <Allow> শিশু ট্যাগের জন্য, নীতিটি একটি ভিন্ন কাউন্টার বজায় রাখে।
<Class> এলিমেন্ট ব্যবহার করতে, <Class> ট্যাগে ref অ্যাট্রিবিউট ব্যবহার করে একটি ফ্লো ভ্যারিয়েবল নির্দিষ্ট করুন। এরপর Edge ফ্লো ভ্যারিয়েবলের মান ব্যবহার করে <Allow> চাইল্ড ট্যাগগুলির মধ্যে একটি নির্বাচন করে পলিসির অনুমোদিত গণনা নির্ধারণ করে। Edge ফ্লো ভ্যারিয়েবলের মান <Allow> ট্যাগের class অ্যাট্রিবিউটের সাথে মেলে, যেমনটি নিচে দেখানো হয়েছে:
<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 হতে পারে। যদি কোয়েরি প্যারামিটারে একটি অবৈধ মান থাকে, তাহলে নীতিটি একটি কোটা লঙ্ঘন ত্রুটি প্রদান করে।
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | একটি কোটার জন্য কোটা ক্লাস ধারণকারী একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। | কেউ না | প্রয়োজনীয় |
<অ্যালাউ>/<ক্লাস>/<অ্যালাউ> এলিমেন্ট
<Allow> উপাদানটি <Class> উপাদান দ্বারা নির্ধারিত কোটা কাউন্টারের সীমা নির্দিষ্ট করে। <Class> এর প্রতিটি ভিন্ন <Allow> শিশু ট্যাগের জন্য, নীতিটি একটি ভিন্ন কাউন্টার বজায় রাখে।
উদাহরণস্বরূপ:
<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 ।
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | নিষিদ্ধ |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| শ্রেণী | কোটা কাউন্টারের নাম নির্ধারণ করে। | কেউ না | প্রয়োজনীয় |
| গণনা | কাউন্টারের জন্য কোটার সীমা নির্দিষ্ট করে। | কেউ না | প্রয়োজনীয় |
<ইন্টারভাল> উপাদান
একটি পূর্ণসংখ্যা (উদাহরণস্বরূপ, 1, 2, 5, 60, ইত্যাদি) নির্দিষ্ট করতে ব্যবহার করুন যা আপনার নির্দিষ্ট করা TimeUnit সাথে যুক্ত হবে (মিনিট, ঘন্টা, দিন, সপ্তাহ, বা মাস) যাতে একটি সময়কাল নির্ধারণ করা যায় যার মধ্যে Edge কোটা ব্যবহার গণনা করে।
উদাহরণস্বরূপ, hour TimeUnit সাথে 24 Interval অর্থ হল কোটা 24 ঘন্টা ধরে গণনা করা হবে।
<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
| ডিফল্ট: | কেউ না |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | পূর্ণসংখ্যা |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | একটি কোটার জন্য ব্যবধান ধারণকারী একটি প্রবাহ ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। একটি স্পষ্ট ব্যবধান মানের উপর | কেউ না | ঐচ্ছিক |
<টাইমইউনিট> এলিমেন্ট
কোটার ক্ষেত্রে প্রযোজ্য সময়ের একক নির্দিষ্ট করতে ব্যবহার করুন।
উদাহরণস্বরূপ, hour TimeUnit সাথে 24 Interval অর্থ হল কোটা 24 ঘন্টা ধরে গণনা করা হবে।
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
| ডিফল্ট: | কেউ না |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | স্ট্রিং। |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | একটি কোটার জন্য সময় একক ধারণকারী একটি প্রবাহ ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। একটি স্পষ্ট ব্যবধান মানের উপর ref অগ্রাধিকার নেয়। যদি রানটাইমে ref সমাধান না করে, তাহলে মানটি ব্যবহার করা হয়। | কেউ না | ঐচ্ছিক |
<StartTime> এলিমেন্ট
যখন type calendar, তখন কোটা কাউন্টার কখন গণনা শুরু করবে তার তারিখ এবং সময় নির্দিষ্ট করে, কোনও অ্যাপ থেকে কোনও অনুরোধ গৃহীত হয়েছে কিনা তা নির্বিশেষে।
উদাহরণস্বরূপ:
<StartTime>2017-7-16 12:00:00</StartTime>
| ডিফল্ট: | কেউ না |
| উপস্থিতি: | type calendar সেট করা থাকলে প্রয়োজন। |
| প্রকার: | ISO 8601 তারিখ এবং সময় বিন্যাসে স্ট্রিং। |
<ডিস্ট্রিবিউটেড> এলিমেন্ট
Edge এর একটি ইনস্টলেশন অনুরোধ প্রক্রিয়া করার জন্য এক বা একাধিক মেসেজ প্রসেসর ব্যবহার করতে পারে। নীতিটি একটি কেন্দ্রীয় কাউন্টার বজায় রাখবে এবং সমস্ত মেসেজ প্রসেসরের মধ্যে এটি ক্রমাগত সিঙ্ক্রোনাইজ করবে তা নির্দিষ্ট করার জন্য এই উপাদানটিকে true সেট করুন। মেসেজ প্রসেসরগুলি প্রাপ্যতা অঞ্চল এবং/অথবা অঞ্চল জুড়ে থাকতে পারে।
যদি আপনি false এর ডিফল্ট মান ব্যবহার করেন, তাহলে আপনার কোটা অতিক্রম করতে পারে কারণ প্রতিটি Message Processor এর গণনা ভাগ করা হয়নি:
<Distributed>true</Distributed>
প্রতিটি অনুরোধে কাউন্টারগুলি সিঙ্ক্রোনাইজ এবং আপডেট করার নিশ্চয়তা দিতে, <Distributed> এবং <Synchronous> কে true তে সেট করুন:
<Distributed>true</Distributed> <Synchronous>true</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>
| ডিফল্ট: | সিঙ্কইন্টারভালইনসেকেন্ড = ১০ সেকেন্ড |
| উপস্থিতি: | ঐচ্ছিক; <Synchronous> কে true তে সেট করা থাকলে উপেক্ষা করা হয়। |
| প্রকার: | যৌগ |
<AsynchronousConfiguration>/<SyncIntervalInSeconds> উপাদান
১০ সেকেন্ডের ব্যবধানের পরে অ্যাসিঙ্ক্রোনাস আপডেট সম্পাদিত ডিফল্ট আচরণকে ওভাররাইড করতে এটি ব্যবহার করুন।
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
" সীমা" বিষয়ে বর্ণিত সিঙ্ক ব্যবধানটি >= ১০ সেকেন্ড হতে হবে।
| ডিফল্ট: | ১০ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | পূর্ণসংখ্যা |
<AsynchronousConfiguration>/<SyncMessageCount> উপাদান
কোটা আপডেটের মধ্যে সমস্ত Apigee মেসেজ প্রসেসরের অনুরোধের সংখ্যা নির্দিষ্ট করে।
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
এই উদাহরণটি নির্দিষ্ট করে যে প্রতিটি Apigee Edge মেসেজ প্রসেসর জুড়ে প্রতি 5টি অনুরোধে কোটা গণনা আপডেট করা হয়।
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | পূর্ণসংখ্যা |
<আইডেন্টিফায়ার> উপাদান
একটি ফ্লো ভেরিয়েবলের উপর ভিত্তি করে অনন্য কাউন্টার তৈরি করতে নীতি কনফিগার করতে <Identifier> উপাদানটি ব্যবহার করুন।
যদি আপনি এই উপাদানটি ব্যবহার না করেন, তাহলে নীতিটি একটি একক কাউন্টার ব্যবহার করে যা কোটার বিপরীতে প্রয়োগ করা হয়।
এই উপাদানটি নিম্নলিখিত Apigee কমিউনিটি পোস্টেও আলোচনা করা হয়েছে: বিভিন্ন নীতিমালা জুড়ে কোটা শনাক্তকারী ।
<Identifier ref="verifyapikey.verify-api-key.client_id"/>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
গুণাবলী
| বৈশিষ্ট্য | বিবরণ | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| রেফারেন্স | অনুরোধের জন্য ব্যবহারযোগ্য কাউন্টার শনাক্তকারী একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করে। শনাক্তকারীটি একটি HTTP হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার, অথবা বার্তা সামগ্রী হতে পারে যা প্রতিটি অ্যাপ, অ্যাপ ব্যবহারকারী, অ্যাপ ডেভেলপার, API পণ্য, অথবা অন্যান্য বৈশিষ্ট্যের জন্য অনন্য। কিছু পরিস্থিতিতে, যেখানে কোনও | নিষিদ্ধ | ঐচ্ছিক |
<মেসেজওজন> উপাদান
প্রতিটি বার্তার জন্য নির্ধারিত ওজন নির্দিষ্ট করতে ব্যবহার করুন। অনুরোধ বার্তাগুলির প্রভাব বাড়াতে বার্তার ওজন ব্যবহার করুন, উদাহরণস্বরূপ, অন্যদের তুলনায় বেশি গণনামূলক সংস্থান গ্রহণ করে।
উদাহরণস্বরূপ, আপনি POST বার্তাগুলিকে GET বার্তাগুলির দ্বিগুণ "ভারী" বা ব্যয়বহুল হিসাবে গণনা করতে চান। অতএব, আপনি POST এর জন্য MessageWeight 2 এবং GET এর জন্য 1 সেট করেন। আপনি MessageWeight 0 তেও সেট করতে পারেন যাতে অনুরোধটি কাউন্টারকে প্রভাবিত না করে। এই উদাহরণে, যদি কোটা প্রতি মিনিটে 10টি বার্তা হয় এবং POST অনুরোধের জন্য MessageWeight 2 হয়, তাহলে কোটা যেকোনো 10 মিনিটের ব্যবধানে 5টি POST অনুরোধের অনুমতি দেবে। কাউন্টার রিসেট প্রত্যাখ্যান করার আগে যেকোনো অতিরিক্ত অনুরোধ, POST বা GET।
MessageWeight প্রতিনিধিত্বকারী একটি মান অবশ্যই একটি ফ্লো ভেরিয়েবল দ্বারা নির্দিষ্ট করা উচিত এবং HTTP হেডার, কোয়েরি প্যারামিটার, একটি XML বা JSON অনুরোধ পেলোড, অথবা অন্য কোনও ফ্লো ভেরিয়েবল থেকে এটি বের করা যেতে পারে। উদাহরণস্বরূপ, আপনি এটিকে weight নামে একটি হেডারে সেট করেছেন:
<MessageWeight ref="message_weight"/>
| ডিফল্ট: | নিষিদ্ধ |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | পূর্ণসংখ্যা |
প্রবাহ ভেরিয়েবল
কোটা নীতি কার্যকর হলে নিম্নলিখিত পূর্বনির্ধারিত ফ্লো ভেরিয়েবলগুলি স্বয়ংক্রিয়ভাবে পূরণ করা হয়। ফ্লো ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য, ভেরিয়েবল রেফারেন্স দেখুন।
| ভেরিয়েবল | আদর্শ | অনুমতিসমূহ | বিবরণ |
|---|---|---|---|
| হারসীমা।{policy_name}.allowed.count | দীর্ঘ | কেবল পঠনযোগ্য | অনুমোদিত কোটা গণনা ফেরত পাঠায় |
| হারসীমা।{policy_name}.used.count | দীর্ঘ | কেবল পঠনযোগ্য | একটি কোটা ব্যবধানের মধ্যে ব্যবহৃত বর্তমান কোটা প্রদান করে। |
| হারসীমা।{policy_name}.available.count | দীর্ঘ | কেবল পঠনযোগ্য | কোটা ব্যবধানে উপলব্ধ কোটা গণনা প্রদান করে। |
| হারসীমা।{policy_name}.exceed.count | দীর্ঘ | কেবল পঠনযোগ্য | কোটা অতিক্রম করার পরে 1 প্রদান করে। |
| হারসীমা।{policy_name}.total.exceed.count | দীর্ঘ | কেবল পঠনযোগ্য | কোটা অতিক্রম করার পরে 1 প্রদান করে। |
| হারসীমা।{policy_name}.expiry.time | দীর্ঘ | কেবল পঠনযোগ্য | কোটার মেয়াদ শেষ হওয়া এবং নতুন কোটার ব্যবধান শুরু হওয়ার সময় মিলিসেকেন্ডে UTC সময় প্রদান করে। যখন কোটা নীতির ধরণ |
| হারসীমা।{policy_name}.identifier | স্ট্রিং | কেবল পঠনযোগ্য | পলিসির সাথে সংযুক্ত (ক্লায়েন্ট) শনাক্তকারী রেফারেন্স ফেরত দেয়। |
| হারসীমা।{policy_name}.class | স্ট্রিং | কেবল পঠনযোগ্য | ক্লায়েন্ট আইডেন্টিফায়ারের সাথে যুক্ত ক্লাসটি রিটার্ন করে। |
| হারসীমা।{policy_name}.class.allowed.count | দীর্ঘ | কেবল পঠনযোগ্য | ক্লাসে সংজ্ঞায়িত অনুমোদিত কোটা গণনা প্রদান করে। |
| হারসীমা।{policy_name}.class.used.count | দীর্ঘ | কেবল পঠনযোগ্য | একটি ক্লাসের মধ্যে ব্যবহৃত কোটা রিটার্ন করে। |
| হারসীমা।{policy_name}.class.available.count | দীর্ঘ | কেবল পঠনযোগ্য | ক্লাসে উপলব্ধ কোটার সংখ্যা ফেরত পাঠায়। |
| হারসীমা।{policy_name}.class.exceed.count | দীর্ঘ | কেবল পঠনযোগ্য | বর্তমান কোটা ব্যবধানে ক্লাসের সীমা অতিক্রমকারী অনুরোধের সংখ্যা ফেরত পাঠায়। |
| হারসীমা।{policy_name}.class.total.exceed.count | দীর্ঘ | কেবল পঠনযোগ্য | সমস্ত কোটা ব্যবধানে ক্লাসের সীমা অতিক্রমকারী অনুরোধের মোট সংখ্যা ফেরত দেয়, তাই এটি সমস্ত কোটা ব্যবধানের জন্য class.exceed.count এর যোগফল। |
| হারসীমা।{policy_name}.ব্যর্থ | বুলিয়ান | কেবল পঠনযোগ্য | নীতিটি ব্যর্থ হয়েছে কিনা তা নির্দেশ করে (সত্য না মিথ্যা)। |
ত্রুটির উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ | ঠিক করুন |
|---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference | 500 | কোটা নীতির মধ্যে <Interval> উপাদানটি সংজ্ঞায়িত না হলে ঘটে। এই উপাদানটি বাধ্যতামূলক এবং কোটার জন্য প্রযোজ্য সময়ের ব্যবধান নির্দিষ্ট করতে ব্যবহৃত হয়। সময়ের ব্যবধান মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাস হতে পারে যেমন <TimeUnit> উপাদানের সাথে সংজ্ঞায়িত করা হয়েছে। | build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference | 500 | কোটা নীতির মধ্যে <TimeUnit> উপাদানটি সংজ্ঞায়িত না হলে ঘটে। এই উপাদানটি বাধ্যতামূলক এবং কোটার ক্ষেত্রে প্রযোজ্য সময়ের একক নির্দিষ্ট করতে ব্যবহৃত হয়। সময়ের ব্যবধান মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাসে হতে পারে। | build |
policies.ratelimit.InvalidMessageWeight | 500 | একটি ফ্লো ভেরিয়েবলের মাধ্যমে নির্দিষ্ট করা <MessageWeight> উপাদানটির মানটি অবৈধ হলে (একটি অ-পূর্ণসংখ্যা মান) ঘটে। | build |
policies.ratelimit.QuotaViolation | 500 | কোটার সীমা ছাড়িয়ে গেছে। | N/A |
স্থাপনার ত্রুটি
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
InvalidQuotaInterval | যদি <Interval> উপাদানে উল্লেখ করা কোটা ব্যবধানটি একটি পূর্ণসংখ্যা না হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। উদাহরণস্বরূপ, যদি <Interval> উপাদানে উল্লেখিত কোটা ব্যবধান 0.1 হয়, তাহলে 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 কোটার প্রকারের জন্য সমর্থিত। উদাহরণস্বরূপ, যদি type অ্যাট্রিবিউটটি <Quota> এলিমেন্টে flexi বা rolling window সেট করা থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। | build |
InvalidTimeUnitForDistributedQuota | যদি <Distributed> উপাদানটি true সেট করা হয় এবং <TimeUnit> উপাদানটি second সেট করা হয় তবে API প্রক্সির স্থাপনা ব্যর্থ হয়। টাইমইউনিট second একটি বিতরণ করা কোটার জন্য অবৈধ৷ | 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>স্কিমা
সম্পর্কিত বিষয়
কোটা, স্পাইক অ্যারেস্ট এবং সমকালীন হারের সীমা নীতির তুলনা করা