কোটা নীতি

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

কি

একটি এপিআই প্রক্সি একটি নির্দিষ্ট সময়ের জন্য, যেমন একটি মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাস অনুমতি দেয় এমন অনুরোধ বার্তাগুলির সংখ্যা কনফিগার করতে কোটা নীতি ব্যবহার করুন৷ আপনি 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 কী যাচাই করতে verify-api-key নামে একটি VerifyAPIKey নীতি ব্যবহার করে। কোটা নীতি তারপর API পণ্যে সেট করা কোটা মান পড়তে VerifyAPIKey নীতি থেকে ফ্লো ভেরিয়েবল অ্যাক্সেস করে। 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>

calendar সেট করা type সহ একটি কোটার জন্য, আপনাকে অবশ্যই একটি স্পষ্ট <StartTime> মান নির্ধারণ করতে হবে। সময়ের মান হল GMT সময়, স্থানীয় সময় নয়। আপনি যদি calendar টাইপ নীতির জন্য <StartTime> মান প্রদান না করেন, এজ একটি ত্রুটি ইস্যু করে।

প্রতিটি অ্যাপের জন্য কোটা কাউন্টারটি <StartTime> , <Interval> , এবং <TimeUnit> মানের উপর ভিত্তি করে রিফ্রেশ করা হয়েছে। এই উদাহরণের জন্য, 18 ফেব্রুয়ারি, 2017 তারিখে GMT সকাল 10:30 এ কোটা গণনা শুরু হয় এবং প্রতি 5 ঘণ্টায় রিফ্রেশ হয়। অতএব, পরবর্তী রিফ্রেশ হবে 18 ফেব্রুয়ারি, 2017 তারিখে 3:30 pm GMT-এ৷

অ্যাক্সেস কাউন্টার

<Quota name="QuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

কোটা নীতি দ্বারা সেট করা ফ্লো ভেরিয়েবলগুলিতে একটি 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>

প্রতি এক ঘন্টায় 10,000 কলের কোটা প্রয়োগ করতে এই নমুনা কোডটি ব্যবহার করুন৷ নীতি প্রতিটি ঘন্টার শীর্ষে কোটা কাউন্টার পুনরায় সেট করে। ঘণ্টা শেষ হওয়ার আগে যদি কাউন্টারটি 10,000-কল-কোটায় পৌঁছে, 10,000-এর বেশি কল প্রত্যাখ্যান করা হয়।

উদাহরণস্বরূপ, যদি কাউন্টারটি 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> এর সমন্বয়ের উপর ভিত্তি করে। উদাহরণস্বরূপ, যদি আপনি <Interval> <TimeUnit> ঘণ্টার জন্য 12 এ সেট করেন, তাহলে প্রতি বারো ঘণ্টায় কাউন্টার রিসেট করে। আপনি <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> ট্যাগটি 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 অনুরোধের মধ্যে সীমাবদ্ধ করতে পারেন৷

উদাহরণস্বরূপ, যদি একটি কোটা প্রতি মাসে 10,000 বার্তা হিসাবে সংজ্ঞায়িত করা হয়, 10,000 তম বার্তার পরে হার-সীমাবদ্ধতা শুরু হয়৷ 10,000 বার্তা সেই সময়ের প্রথম দিনে বা শেষ দিনে গণনা করা হয়েছিল তা বিবেচ্য নয়; নির্দিষ্ট সময়ের ব্যবধানের শেষে কোটা কাউন্টার স্বয়ংক্রিয়ভাবে রিসেট না হওয়া পর্যন্ত বা কোটা রিসেট কোটা নীতি ব্যবহার করে স্পষ্টভাবে রিসেট না হওয়া পর্যন্ত কোনো অতিরিক্ত অনুরোধের ক্ষেত্র অনুমোদিত নয়।

স্পাইকআরেস্ট নামক কোটার একটি ভিন্নতা ট্রাফিক স্পাইক (বা বিস্ফোরণ) প্রতিরোধ করে যা ব্যবহারে হঠাৎ বৃদ্ধি, বগি ক্লায়েন্ট বা দূষিত আক্রমণের কারণে হতে পারে। স্পাইক অ্যারেস্ট সম্পর্কে আরও তথ্যের জন্য, স্পাইক অ্যারেস্ট নীতি দেখুন।

কোটা পৃথক API প্রক্সিগুলিতে প্রযোজ্য এবং API প্রক্সিগুলির মধ্যে বিতরণ করা হয় না। উদাহরণস্বরূপ, যদি আপনার একটি API পণ্যে তিনটি API প্রক্সি থাকে, তবে তিনটিই একই কোটা নীতি কনফিগারেশন ব্যবহার করলেও তিনটিতে একটি একক কোটা ভাগ করা হয় না৷

কোটা নীতির ধরন

কোটা নীতি বিভিন্ন ধরনের নীতি সমর্থন করে: ডিফল্ট, calendar , flexi এবং rollingwindow । প্রতিটি প্রকার নির্ধারণ করে কখন কোটা কাউন্টার শুরু হয় এবং কখন এটি পুনরায় সেট হয়, যেমনটি নিম্নলিখিত টেবিলে দেখানো হয়েছে:

টাইম ইউনিট ডিফল্ট (বা নাল) রিসেট ক্যালেন্ডার রিসেট ফ্লেক্সি রিসেট
মিনিট পরের মিনিটের শুরু <StartTime> এক মিনিট পর প্রথম অনুরোধের এক মিনিট পর
ঘন্টা পরবর্তী ঘন্টার শীর্ষে এক ঘন্টা পরে <StartTime> প্রথম অনুরোধের এক ঘণ্টা পর
দিন বর্তমান দিনের মধ্যরাতের GMT 24 ঘন্টা পরে <StartTime> প্রথম অনুরোধের 24 ঘন্টা পরে
সপ্তাহ সপ্তাহের শেষে মধ্যরাত GMT রবিবার এক সপ্তাহ পরে <StartTime> প্রথম অনুরোধের এক সপ্তাহ পর
মাস মাসের শেষ দিনের মধ্যরাতের GMT <StartTime> পরে এক মাস (২৮ দিন) প্রথম অনুরোধের পর এক মাস (28 দিন)

type="calendar" এর জন্য, আপনাকে অবশ্যই <StartTime> -এর মান নির্দিষ্ট করতে হবে।

টেবিলটি rollingwindow প্রকারের মান তালিকাভুক্ত করে না। রোলিং উইন্ডো কোটা একটি কোটার আকার "উইন্ডো" সেট করে কাজ করে, যেমন এক ঘন্টা বা একদিনের উইন্ডো। যখন একটি নতুন অনুরোধ আসে, নীতি নির্ধারণ করে যে কোটাটি সময়ের অতীত "উইন্ডো" অতিক্রম করেছে কিনা।

উদাহরণস্বরূপ, আপনি একটি দুই ঘন্টার উইন্ডো সংজ্ঞায়িত করেন যা 1000টি অনুরোধের অনুমতি দেয়। বিকাল ৪:৪৫ মিনিটে একটি নতুন অনুরোধ আসে। নীতি গত দুই ঘণ্টার উইন্ডোর কোটা গণনা করে, মানে 2:45 PM থেকে অনুরোধের সংখ্যা। সেই দুই ঘণ্টার উইন্ডোতে যদি কোটার সীমা অতিক্রম না করা হয়, তাহলে অনুরোধটি অনুমোদিত।

এক মিনিট পরে, 4:46 PM-এ, আরেকটি অনুরোধ আসে। এখন নীতিটি সীমা অতিক্রম করেছে কিনা তা নির্ধারণ করতে 2:46 PM থেকে কোটা গণনা করে।

rollingwindow টাইপের জন্য, কাউন্টারটি কখনই রিসেট হয় না, তবে প্রতিটি অনুরোধে পুনরায় গণনা করা হয়।

কোটা কাউন্টার বোঝা

ডিফল্টরূপে, একটি কোটা নীতি একটি একক কাউন্টার বজায় রাখে, আপনি এটিকে একটি API প্রক্সিতে কতবার উল্লেখ করুন না কেন। কোটা কাউন্টারের নাম নীতির name বৈশিষ্ট্যের উপর ভিত্তি করে।

উদাহরণস্বরূপ, আপনি 5টি অনুরোধের সীমা সহ 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 পণ্য তৈরি করুন দেখুন।

উপাদান রেফারেন্স

নিম্নলিখিত উপাদান এবং বৈশিষ্ট্যগুলি আপনি এই নীতিতে কনফিগার করতে পারেন৷ মনে রাখবেন যে কিছু উপাদান সমন্বয় পারস্পরিক একচেটিয়া বা প্রয়োজন হয় না। নির্দিষ্ট ব্যবহারের জন্য নমুনা দেখুন. verifyapikey.VerifyAPIKey.apiproduct.* নীচের ভেরিয়েবলগুলি ডিফল্টরূপে উপলব্ধ থাকে যখন "VerifyAPIKey" নামক একটি যাচাই API কী নীতি অনুরোধে অ্যাপের API কী পরীক্ষা করতে ব্যবহার করা হয়৷ পরিবর্তনশীল মানগুলি 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">

নিম্নলিখিত গুণাবলী এই নীতি নির্দিষ্ট.

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
টাইপ

কোটা কাউন্টার কখন এবং কিভাবে কোটা ব্যবহার পরীক্ষা করে তা নির্ধারণ করতে ব্যবহার করুন। আরও তথ্যের জন্য কোটা নীতির ধরন দেখুন।

যদি আপনি একটি type মান বাদ দেন, কাউন্টারটি মিনিট/ঘন্টা/দিন/সপ্তাহ/মাসের শুরুতে শুরু হয়।

বৈধ মান অন্তর্ভুক্ত:

  • calendar : একটি সুস্পষ্ট শুরুর সময়ের উপর ভিত্তি করে একটি কোটা কনফিগার করুন। প্রতিটি অ্যাপের জন্য কোটা কাউন্টারটি আপনার সেট করা <StartTime> , <Interval> , এবং <TimeUnit> মানগুলির উপর ভিত্তি করে রিফ্রেশ করা হয়।
  • rollingwindow : একটি কোটা কনফিগার করুন যা কোটা ব্যবহার নির্ধারণ করতে "রোলিং উইন্ডো" ব্যবহার করে। rollingwindow এর সাহায্যে আপনি <Interval> এবং <TimeUnit> উপাদানগুলির সাহায্যে উইন্ডোর আকার নির্ধারণ করেন; উদাহরণস্বরূপ, 1 দিন। যখন একটি অনুরোধ আসে, Edge অনুরোধের সঠিক সময় দেখে (বলুন 5:01pm), আগের দিন (1 দিন) তারপর থেকে 5:01pm এর মধ্যে আসা অনুরোধের সংখ্যা গণনা করে এবং কোটা কিনা তা নির্ধারণ করে। যে উইন্ডো সময় অতিক্রম করা হয়েছে.
  • flexi : একটি কোটা কনফিগার করুন যার ফলে একটি অ্যাপ থেকে প্রথম অনুরোধ বার্তাটি প্রাপ্ত হলে কাউন্টারটি শুরু হয় এবং <Interval>, এবং <TimeUnit> মানগুলির উপর ভিত্তি করে পুনরায় সেট করা হয়।
ক্যালেন্ডার ঐচ্ছিক

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
name

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

N/A প্রয়োজন
continueOnError

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<অনুমতি> উপাদান

কোটার জন্য গণনার সীমা নির্দিষ্ট করে। যদি পলিসির কাউন্টার এই সীমা মান পর্যন্ত পৌঁছায়, তাহলে কাউন্টার রিসেট না হওয়া পর্যন্ত পরবর্তী কলগুলি প্রত্যাখ্যান করা হয়।

<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 মান ব্যবহার করা হয়।

ডিফল্ট: N/A
উপস্থিতি: ঐচ্ছিক
প্রকার: পূর্ণসংখ্যা

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
গণনা

কোটার জন্য একটি বার্তা সংখ্যা নির্দিষ্ট করতে ব্যবহার করুন।

উদাহরণস্বরূপ, 100 এর একটি count বৈশিষ্ট্যের মান, 1 এর Interval এবং মাসের একটি TimeUnit প্রতি মাসে 100টি বার্তার একটি কোটা নির্দিষ্ট করে৷

2000 ঐচ্ছিক
গণনা রেফ

একটি কোটার জন্য বার্তা গণনা ধারণকারী একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। countRef count বৈশিষ্ট্যের উপর অগ্রাধিকার নেয়।

কোনটি ঐচ্ছিক

<অনুমতি>/<ক্লাস> উপাদান

<Class> উপাদানটি আপনাকে একটি ফ্লো ভেরিয়েবলের মানের উপর ভিত্তি করে <Allow> উপাদানটির মান শর্তযুক্ত করতে দেয়। <Class> -এর প্রতিটি আলাদা <Allow> চাইল্ড ট্যাগের জন্য, নীতি আলাদা কাউন্টার বজায় রাখে।

<Class> এলিমেন্ট ব্যবহার করতে, <Class> ট্যাগের ref এট্রিবিউট ব্যবহার করে একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করুন। নীতির অনুমোদিত গণনা নির্ধারণ করতে এজ তারপর <Allow> চাইল্ড ট্যাগগুলির একটি নির্বাচন করতে ফ্লো ভেরিয়েবলের মান ব্যবহার করে। এজ ফ্লো ভেরিয়েবলের মান <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 এর মান থাকতে পারে। যদি কোয়েরি প্যারামে একটি অবৈধ মান থাকে, তাহলে নীতিটি একটি কোটা লঙ্ঘন ত্রুটি প্রদান করে।

ডিফল্ট: N/A
উপস্থিতি: ঐচ্ছিক
প্রকার: N/A

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
রেফ

একটি কোটার জন্য কোটা শ্রেণী ধারণকারী একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন।

কোনটি প্রয়োজন

<অনুমতি>/<শ্রেণী>/<অনুমতি> উপাদান

<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 নামে দুটি কোটা কাউন্টার বজায় রাখে।

ডিফল্ট: N/A
উপস্থিতি: ঐচ্ছিক
প্রকার: N/A

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
ক্লাস

কোটা কাউন্টারের নাম সংজ্ঞায়িত করে।

কোনটি প্রয়োজন
গণনা কাউন্টারের জন্য কোটার সীমা নির্দিষ্ট করে। কোনটি প্রয়োজন

<ব্যবধান> উপাদান

একটি পূর্ণসংখ্যা নির্দিষ্ট করতে ব্যবহার করুন (উদাহরণস্বরূপ, 1, 2, 5, 60, এবং আরও) যা আপনার নির্দিষ্ট করা TimeUnit (মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাস) এর সাথে যুক্ত করা হবে একটি সময়কাল নির্ধারণ করার জন্য যেটি এজ কোটা ব্যবহার গণনা করে।

উদাহরণস্বরূপ, hour একটি TimeUnit সহ 24 এর একটি Interval অর্থ হল কোটাটি 24 ঘন্টার মধ্যে গণনা করা হবে।

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
ডিফল্ট: কোনটি
উপস্থিতি: প্রয়োজন
প্রকার: পূর্ণসংখ্যা

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
রেফ

একটি কোটার জন্য ব্যবধান ধারণকারী একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। ref একটি সুস্পষ্ট ব্যবধান মানের উপর অগ্রাধিকার নেয়। যদি রেফারেন্স এবং মান উভয়ই নির্দিষ্ট করা হয়, তাহলে রেফারেন্স অগ্রাধিকার পায়। যদি ref রানটাইমে সমাধান না হয়, তাহলে মানটি ব্যবহার করা হয়।

কোনটি ঐচ্ছিক

<TimeUnit> উপাদান

কোটার জন্য প্রযোজ্য সময়ের একক উল্লেখ করতে ব্যবহার করুন।

উদাহরণস্বরূপ, hour একটি TimeUnit সহ 24 এর একটি Interval অর্থ হল কোটাটি 24 ঘন্টার মধ্যে গণনা করা হবে।

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
ডিফল্ট: কোনটি
উপস্থিতি: প্রয়োজন
প্রকার:

স্ট্রিং minute , hour , day , week বা month থেকে নির্বাচন করুন।

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
রেফ একটি কোটার জন্য সময় একক ধারণকারী একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করতে ব্যবহার করুন। ref একটি সুস্পষ্ট ব্যবধান মানের উপর অগ্রাধিকার নেয়। যদি ref রানটাইমে সমাধান না করে, তাহলে মানটি ব্যবহার করা হয়। কোনটি ঐচ্ছিক

<StartTime> উপাদান

যখন type calendar, তখন তারিখ এবং সময় নির্দিষ্ট করে যখন কোটা কাউন্টার গণনা শুরু করবে, কোনো অ্যাপ থেকে কোনো অনুরোধ গৃহীত হয়েছে কিনা তা নির্বিশেষে।

ক্যালেন্ডারে type স্পষ্টভাবে সেট করা হলে আপনাকে অবশ্যই একটি স্পষ্ট StartTime প্রদান করতে হবে calendar, আপনি একটি ফ্লো ভেরিয়েবলের একটি রেফারেন্স ব্যবহার করতে পারবেন না, যদি আপনি একটি StartTime মান নির্দিষ্ট করেন যখন কোনো type মান সেট না থাকে, তাহলে আপনি একটি ত্রুটি পাবেন।

যেমন:

<StartTime>2017-7-16 12:00:00</StartTime>
ডিফল্ট: কোনটি
উপস্থিতি: type calendar সেট করা হলে প্রয়োজনীয়।
প্রকার:

ISO 8601 তারিখ এবং সময় বিন্যাসে স্ট্রিং।

<ডিস্ট্রিবিউটেড> উপাদান

এজ এর ইনস্টলেশন অনুরোধগুলি প্রক্রিয়া করতে এক বা একাধিক বার্তা প্রসেসর ব্যবহার করতে পারে। নীতির একটি কেন্দ্রীয় কাউন্টার বজায় রাখা এবং সমস্ত বার্তা প্রসেসর জুড়ে ক্রমাগত সিঙ্ক্রোনাইজ করা উচিত তা নির্দিষ্ট করতে এই উপাদানটিকে true সেট করুন৷ বার্তা প্রসেসরগুলি প্রাপ্যতা অঞ্চল এবং/অথবা অঞ্চল জুড়ে হতে পারে।

আপনি যদি false এর ডিফল্ট মান ব্যবহার করেন, তাহলে আপনি আপনার কোটা অতিক্রম করতে পারেন কারণ প্রতিটি বার্তা প্রসেসরের গণনা ভাগ করা হয় না:

<Distributed>true</Distributed>

কাউন্টারগুলি সিঙ্ক্রোনাইজ করা হয়েছে এবং প্রতিটি অনুরোধে আপডেট করা হয়েছে তার নিশ্চয়তা দিতে, <Distributed> এবং <Synchronous> সত্যে সেট করুন:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
ডিফল্ট: মিথ্যা
উপস্থিতি: ঐচ্ছিক
প্রকার: বুলিয়ান

<সিঙ্ক্রোনাস> উপাদান

সিঙ্ক্রোনাসভাবে বিতরণ করা কোটা কাউন্টার আপডেট করতে true সেট করুন। এর মানে হল যে কাউন্টারে আপডেট করা হয় একই সময়ে কোটা চেক করা হয় API-এর অনুরোধে। true সেট করুন যদি এটি অপরিহার্য হয় যে আপনি কোটার উপর কোনো API কলের অনুমতি দেবেন না।

অ্যাসিঙ্ক্রোনাসভাবে কোটা কাউন্টার আপডেট করতে false সেট করুন। এর মানে হল যে কেন্দ্রীয় সংগ্রহস্থলের কোটা কাউন্টারটি অ্যাসিঙ্ক্রোনাসভাবে আপডেট করা হয় তার উপর নির্ভর করে কোটা অতিক্রম করা কিছু API কল করা সম্ভব। যাইহোক, আপনি সিঙ্ক্রোনাস আপডেটের সাথে সম্পর্কিত সম্ভাব্য কর্মক্ষমতা প্রভাবের সম্মুখীন হবেন না।

ডিফল্ট অ্যাসিঙ্ক্রোনাস আপডেটের ব্যবধান 10 সেকেন্ড। এই অ্যাসিঙ্ক্রোনাস আচরণ কনফিগার করতে AsynchronousConfiguration উপাদান ব্যবহার করুন।

<Synchronous>false</Synchronous>
ডিফল্ট: মিথ্যা
উপস্থিতি: ঐচ্ছিক
প্রকার: বুলিয়ান

<অ্যাসিনক্রোনাস কনফিগারেশন> উপাদান

যখন নীতি কনফিগারেশন উপাদান <Synchronous> হয় উপস্থিত না থাকে বা উপস্থিত থাকে এবং false সেট থাকে তখন বিতরণ করা কোটা কাউন্টারগুলির মধ্যে সিঙ্ক্রোনাইজেশন ব্যবধান কনফিগার করে।

আপনি SyncIntervalInSeconds বা SyncMessageCount চাইল্ড উপাদানগুলি ব্যবহার করে একটি সময়কাল বা একটি বার্তা গণনার পরে সিঙ্ক্রোনাইজ করতে পারেন৷ তারা পারস্পরিক একচেটিয়া. যেমন,

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

বা

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
ডিফল্ট: SyncIntervalInSeconds = 10 সেকেন্ড
উপস্থিতি: ঐচ্ছিক; উপেক্ষা করা হয় যখন <Synchronous> true সেট করা হয়।
প্রকার:

যৌগ

<অ্যাসিনক্রোনাস কনফিগারেশন>/<SyncIntervalInSeconds> উপাদান

ডিফল্ট আচরণকে ওভাররাইড করতে এটি ব্যবহার করুন যেখানে 10 সেকেন্ডের ব্যবধানের পরে অ্যাসিঙ্ক্রোনাস আপডেটগুলি সঞ্চালিত হয়।

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

সিঙ্কের ব্যবধানটি হতে হবে >= 10 সেকেন্ড যেমন সীমা বিষয়ে বর্ণিত হয়েছে।

ডিফল্ট: 10
উপস্থিতি: ঐচ্ছিক
প্রকার:

পূর্ণসংখ্যা

<অ্যাসিনক্রোনাস কনফিগারেশন>/<SyncMessageCount> উপাদান

কোটা আপডেটের মধ্যে সমস্ত Apigee বার্তা প্রসেসর জুড়ে অনুরোধের সংখ্যা নির্দিষ্ট করে।

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>

এই উদাহরণটি উল্লেখ করে যে প্রতিটি Apigee Edge মেসেজ প্রসেসর জুড়ে প্রতি 5টি অনুরোধে কোটা গণনা আপডেট করা হয়।

ডিফল্ট: n/a
উপস্থিতি: ঐচ্ছিক
প্রকার:

পূর্ণসংখ্যা

<আইডেন্টিফায়ার> উপাদান

একটি ফ্লো ভেরিয়েবলের উপর ভিত্তি করে অনন্য কাউন্টার তৈরি করতে নীতি কনফিগার করতে <Identifier> উপাদানটি ব্যবহার করুন।

আপনি একটি ফ্লো ভেরিয়েবল দ্বারা সংজ্ঞায়িত বৈশিষ্ট্যগুলির জন্য অনন্য কাউন্টার তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি নির্দিষ্ট বিকাশকারীর সাথে একটি কোটা বাঁধতে বিকাশকারীর ইমেল ঠিকানা ব্যবহার করতে পারেন। আপনি একটি কোটা শনাক্ত করতে বিভিন্ন ভেরিয়েবল ব্যবহার করতে পারেন, আপনি কাস্টম ভেরিয়েবল বা পূর্বনির্ধারিত ভেরিয়েবল ব্যবহার করছেন, যেমন যাচাই API কী নীতিতে উপলব্ধ। এছাড়াও ভেরিয়েবল রেফারেন্স দেখুন।

আপনি যদি এই উপাদানটি ব্যবহার না করেন তবে নীতিটি একটি একক কাউন্টার ব্যবহার করে যা কোটার বিরুদ্ধে প্রয়োগ করা হয়।

এই উপাদানটি নিম্নলিখিত Apigee কমিউনিটি পোস্টেও আলোচনা করা হয়েছে: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
ডিফল্ট: N/A
উপস্থিতি: ঐচ্ছিক
প্রকার:

স্ট্রিং

গুণাবলী

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
রেফ

একটি ফ্লো ভেরিয়েবল নির্দিষ্ট করে যা অনুরোধের জন্য ব্যবহার করার জন্য কাউন্টারকে চিহ্নিত করে। শনাক্তকারী একটি HTTP শিরোনাম, ক্যোয়ারী প্যারামিটার, ফর্ম প্যারামিটার বা বার্তা সামগ্রী হতে পারে যা প্রতিটি অ্যাপ, অ্যাপ ব্যবহারকারী, অ্যাপ বিকাশকারী, API পণ্য বা অন্যান্য বৈশিষ্ট্যের জন্য অনন্য।

অ্যাপ্লিকেশানগুলিকে স্বতন্ত্রভাবে শনাক্ত করতে সবচেয়ে বেশি ব্যবহৃত <Identifier> হল client_idclient_id হল এপিআই কী, বা ভোক্তা কী-এর আরেকটি নাম, যেটি অ্যাপের জন্য তৈরি হয় যখন এটি অ্যাপিজি এজ-এ একটি সংস্থায় নিবন্ধিত হয়। আপনি যদি আপনার API-এর জন্য API কী বা OAuth অনুমোদন নীতিগুলি সক্ষম করে থাকেন তবে আপনি এই শনাক্তকারীটি ব্যবহার করতে পারেন৷

কিছু পরিস্থিতিতে, কোটা সেটিংস পুনরুদ্ধার করা আবশ্যক যেখানে কোনো client_id উপলব্ধ নেই, যেমন যখন কোনো নিরাপত্তা নীতি নেই। এই পরিস্থিতিতে, আপনি উপযুক্ত API পণ্য সেটিংস পুনরুদ্ধার করতে অ্যাক্সেস সত্তা নীতি ব্যবহার করতে পারেন, তারপর ExtractVariables ব্যবহার করে মানগুলি বের করতে পারেন, এবং তারপর কোটা নীতিতে নিষ্কাশিত প্রসঙ্গ ভেরিয়েবল ব্যবহার করতে পারেন৷ আরও তথ্যের জন্য, অ্যাক্সেস সত্তা নীতি দেখুন।

N/A ঐচ্ছিক

<মেসেজওয়েট> উপাদান

প্রতিটি বার্তার জন্য নির্ধারিত ওজন নির্দিষ্ট করতে ব্যবহার করুন। অনুরোধের বার্তাগুলির প্রভাব বাড়ানোর জন্য বার্তার ওজন ব্যবহার করুন যেগুলি, উদাহরণস্বরূপ, অন্যদের তুলনায় বেশি গণনামূলক সংস্থানগুলি ব্যবহার করে৷

উদাহরণস্বরূপ, আপনি POST বার্তাগুলিকে GET বার্তা হিসাবে দ্বিগুণ "ভারী" বা ব্যয়বহুল হিসাবে গণনা করতে চান৷ অতএব, আপনি একটি পোস্টের জন্য MessageWeight 2 এবং একটি GET-এর জন্য 1 সেট করুন৷ এমনকি আপনি MessageWeight 0 এ সেট করতে পারেন যাতে অনুরোধটি কাউন্টারকে প্রভাবিত না করে। এই উদাহরণে, যদি কোটা হয় 10টি বার্তা প্রতি মিনিটে এবং POST অনুরোধের জন্য MessageWeight 2 হয়, তাহলে কোটা 10 মিনিটের ব্যবধানে 5টি POST অনুরোধের অনুমতি দেবে৷ কাউন্টার রিসেট প্রত্যাখ্যান করার আগে কোনো অতিরিক্ত অনুরোধ, পোস্ট করুন বা GET করুন।

MessageWeight প্রতিনিধিত্বকারী একটি মান অবশ্যই একটি ফ্লো ভেরিয়েবল দ্বারা নির্দিষ্ট করা উচিত এবং HTTP শিরোনাম, ক্যোয়ারী প্যারামিটার, একটি XML বা JSON অনুরোধ পেলোড বা অন্য কোনো ফ্লো ভেরিয়েবল থেকে বের করা যেতে পারে। উদাহরণস্বরূপ, আপনি weight নামক একটি শিরোনামে এটি সেট করুন:

<MessageWeight ref="message_weight"/>
ডিফল্ট: N/A
উপস্থিতি: ঐচ্ছিক
প্রকার:

পূর্ণসংখ্যা

ফ্লো ভেরিয়েবল

একটি কোটা নীতি কার্যকর হলে নিম্নলিখিত পূর্বনির্ধারিত ফ্লো ভেরিয়েবলগুলি স্বয়ংক্রিয়ভাবে পপুলেট হয়৷ ফ্লো ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য, ভেরিয়েবল রেফারেন্স দেখুন।

ভেরিয়েবল টাইপ অনুমতি বর্ণনা
রেটলিমিট।নীতি_নাম}.allowed.count লম্বা শুধুমাত্র পঠনযোগ্য অনুমোদিত কোটা গণনা প্রদান করে
হারসীমা।{policy_name}.used.count লম্বা শুধুমাত্র পঠনযোগ্য একটি কোটা ব্যবধানের মধ্যে ব্যবহৃত বর্তমান কোটা প্রদান করে
ratelimit।policy_name}.available.count লম্বা শুধুমাত্র পঠনযোগ্য কোটা ব্যবধানে উপলব্ধ কোটা গণনা প্রদান করে
ratelimit।policy_name}.exceed.count লম্বা শুধুমাত্র পঠনযোগ্য কোটা অতিক্রম করার পরে 1 রিটার্ন করে।
রেটলিমিট।পলিসি_নাম}.total.exceed.count লম্বা শুধুমাত্র পঠনযোগ্য কোটা অতিক্রম করার পরে 1 রিটার্ন করে।
হারসীমা।{policy_name}.expiry.time লম্বা শুধুমাত্র পঠনযোগ্য

মিলিসেকেন্ডে UTC সময় ফেরত দেয় যা কোটার মেয়াদ কখন শেষ হবে এবং নতুন কোটার ব্যবধান শুরু হবে তা নির্ধারণ করে।

যখন কোটা নীতির ধরন rollingwindow হয়, তখন এই মানটি বৈধ নয় কারণ কোটার ব্যবধান কখনই শেষ হয় না।

হারসীমা।{policy_name}.identifier স্ট্রিং শুধুমাত্র পঠনযোগ্য নীতির সাথে সংযুক্ত (ক্লায়েন্ট) শনাক্তকারী রেফারেন্স প্রদান করে
হারসীমা।{policy_name}.শ্রেণী স্ট্রিং শুধুমাত্র পঠনযোগ্য ক্লায়েন্ট শনাক্তকারীর সাথে যুক্ত শ্রেণী প্রদান করে
রেটলিমিট।পলিসি_নাম}.class.allowed.count লম্বা শুধুমাত্র পঠনযোগ্য ক্লাসে সংজ্ঞায়িত অনুমোদিত কোটা গণনা প্রদান করে
হারসীমা।{policy_name}.class.used.count লম্বা শুধুমাত্র পঠনযোগ্য একটি ক্লাসের মধ্যে ব্যবহৃত কোটা প্রদান করে
রেটসীমা।{policy_name}.class.available.count লম্বা শুধুমাত্র পঠনযোগ্য ক্লাসে উপলব্ধ কোটা গণনা প্রদান করে
রেটলিমিট।পলিসি_নাম}.class.exceed.count লম্বা শুধুমাত্র পঠনযোগ্য বর্তমান কোটা ব্যবধানে ক্লাসের সীমা ছাড়িয়ে যাওয়া অনুরোধের গণনা প্রদান করে
রেটলিমিট।পলিসি_নাম}.class.total.exceed.count লম্বা শুধুমাত্র পঠনযোগ্য সমস্ত কোটা ব্যবধানে ক্লাসের সীমা ছাড়িয়ে যাওয়া অনুরোধের মোট গণনা প্রদান করে, তাই এটি সমস্ত কোটা ব্যবধানের জন্য class.exceed.count এর যোগফল।
ratelimit৷policy_name}.failed৷ বুলিয়ান শুধুমাত্র পঠনযোগ্য

নীতি ব্যর্থ হয়েছে কিনা তা নির্দেশ করে (সত্য বা মিথ্যা)।

ত্রুটি উল্লেখ

এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 কোটা নীতির মধ্যে <Interval> উপাদানটি সংজ্ঞায়িত না হলে ঘটে। এই উপাদানটি বাধ্যতামূলক এবং কোটার জন্য প্রযোজ্য সময়ের ব্যবধান নির্দিষ্ট করতে ব্যবহৃত হয়। সময়ের ব্যবধান মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাস হতে পারে যেমন <TimeUnit> উপাদানের সাথে সংজ্ঞায়িত করা হয়েছে।
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 কোটা নীতির মধ্যে <TimeUnit> উপাদানটি সংজ্ঞায়িত না হলে ঘটে। এই উপাদানটি বাধ্যতামূলক এবং কোটার ক্ষেত্রে প্রযোজ্য সময়ের একক নির্দিষ্ট করতে ব্যবহৃত হয়। সময়ের ব্যবধান মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাসে হতে পারে।
policies.ratelimit.InvalidMessageWeight 500 একটি ফ্লো ভেরিয়েবলের মাধ্যমে নির্দিষ্ট করা <MessageWeight> উপাদানটির মানটি অবৈধ হলে (একটি অ-পূর্ণসংখ্যা মান) ঘটে।
policies.ratelimit.QuotaViolation 500 কোটার সীমা ছাড়িয়ে গেছে। N/A

স্থাপনার ত্রুটি

ত্রুটির নাম কারণ ঠিক করুন
InvalidQuotaInterval যদি <Interval> উপাদানে উল্লেখ করা কোটা ব্যবধানটি একটি পূর্ণসংখ্যা না হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। উদাহরণস্বরূপ, যদি <Interval> উপাদানে উল্লেখিত কোটা ব্যবধান 0.1 হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
InvalidQuotaTimeUnit যদি <TimeUnit> উপাদানে নির্দিষ্ট সময় ইউনিট অসমর্থিত হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। সমর্থিত সময়ের একক হল minute , hour , day , week এবং month
InvalidQuotaType যদি <Quota> উপাদানে type অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা কোটার ধরনটি অবৈধ হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। সমর্থিত কোটার প্রকারগুলি হল default , calendar , flexi এবং rollingwindow
InvalidStartTime যদি <StartTime> উপাদানে নির্দিষ্ট সময়ের বিন্যাসটি অবৈধ হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। বৈধ বিন্যাস হল yyyy-MM-dd HH:mm:ss , যা ISO 8601 তারিখ এবং সময় বিন্যাস৷ উদাহরণস্বরূপ, যদি <StartTime> উপাদানে নির্দিষ্ট সময় 7-16-2017 12:00:00 হয় তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
StartTimeNotSupported যদি <StartTime> উপাদানটি নির্দিষ্ট করা হয় যার কোটার ধরন calendar প্রকার নয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। <StartTime> উপাদানটি শুধুমাত্র calendar কোটার প্রকারের জন্য সমর্থিত। উদাহরণস্বরূপ, যদি type অ্যাট্রিবিউটটি <Quota> এলিমেন্টে flexi বা rolling window সেট করা থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
InvalidTimeUnitForDistributedQuota যদি <Distributed> উপাদানটি true সেট করা হয় এবং <TimeUnit> উপাদানটি second সেট করা হয় তবে API প্রক্সির স্থাপনা ব্যর্থ হয়। টাইমইউনিট second একটি বিতরণ করা কোটার জন্য অবৈধ৷
InvalidSynchronizeIntervalForAsyncConfiguration যদি একটি কোটা নীতিতে <SyncIntervalInSeconds> উপাদানের <AsynchronousConfiguration> উপাদানের জন্য নির্দিষ্ট করা মান শূন্যের কম হয়, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।
InvalidAsynchronizeConfigurationForSynchronousQuota যদি <AsynchronousConfiguration> > উপাদানটির মান একটি কোটা নীতিতে true হিসাবে সেট করা হয়, যেটিতে <AsynchronousConfiguration> > উপাদান ব্যবহার করে সংজ্ঞায়িত অ্যাসিঙ্ক্রোনাস কনফিগারেশনও রয়েছে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।

ফল্ট ভেরিয়েবল

যখন এই নীতি একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।

ভেরিয়েবল যেখানে উদাহরণ
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>

স্কিমাস

সম্পর্কিত বিষয়

কোটা নীতি রিসেট করুন

স্পাইক অ্যারেস্ট নীতি

কোটা, স্পাইক অ্যারেস্ট, এবং সমসাময়িক হার সীমা নীতির তুলনা করা