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

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

এজ UI থেকে স্পাইক অ্যারেস্ট আইকন

স্পাইক অ্যারেস্ট নীতি <Rate> উপাদানের সাহায্যে ট্র্যাফিক বৃদ্ধির বিরুদ্ধে সুরক্ষা দেয়। এই উপাদানটি একটি API প্রক্সি দ্বারা প্রক্রিয়াকৃত এবং ব্যাকএন্ডে পাঠানো অনুরোধের সংখ্যা নিয়ন্ত্রণ করে, কর্মক্ষমতা বিলম্ব এবং ডাউনটাইম থেকে রক্ষা করে।

<SpikeArrest> এলিমেন্ট

স্পাইক অ্যারেস্ট নীতি সংজ্ঞায়িত করে।

ডিফল্ট মান নিচে ডিফল্ট নীতি ট্যাব দেখুন।
প্রয়োজন? ঐচ্ছিক
আদর্শ জটিল বস্তু
মূল উপাদান প্রযোজ্য নয়
শিশু উপাদান <Identifier>
<MessageWeight>
<Rate> (প্রয়োজনীয়)
<UseEffectiveCount>

বাক্য গঠন

<SpikeArrest> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <DisplayName>display_name</DisplayName>
  <Properties/>
  <Identifier ref="flow_variable"/>
  <MessageWeight ref="flow_variable"/>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
  <UseEffectiveCount>[false|true]</UseEffectiveCount>
</SpikeArrest>

ডিফল্ট নীতি

Edge UI-তে আপনার প্রবাহে একটি Spike Arrest নীতি যোগ করার সময় নিম্নলিখিত উদাহরণটি ডিফল্ট সেটিংস দেখায়:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest-1">
  <DisplayName>Spike Arrest-1</DisplayName>
  <Properties/>
  <Identifier ref="request.header.some-header-name"/>
  <MessageWeight ref="request.header.weight"/>
  <Rate>30ps</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

এই উপাদানটির নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে যা সমস্ত নীতিতে সাধারণ:

বৈশিষ্ট্য ডিফল্ট প্রয়োজন? বর্ণনা
name N/A প্রয়োজন

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

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

continueOnError মিথ্যা ঐচ্ছিক একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে "false" এ সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও প্রবাহ সম্পাদন অব্যাহত রাখতে "সত্য" তে সেট করুন৷
enabled সত্য ঐচ্ছিক নীতি প্রয়োগ করতে "সত্য" এ সেট করুন। নীতিটি "বন্ধ" করতে "মিথ্যা" এ সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।
async মিথ্যা অবচয় এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

উদাহরণ

নিম্নলিখিত উদাহরণগুলি স্পাইক অ্যারেস্ট নীতি কীভাবে ব্যবহার করতে পারেন তার কিছু উপায় দেখায়:

উদাহরণ ১

নিম্নলিখিত উদাহরণটি প্রতি সেকেন্ডে পাঁচটি হার নির্ধারণ করে:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>5ps</Rate>
</SpikeArrest>

এই নীতিটি প্রতি ২০০ মিলিসেকেন্ডে (১০০০/৫) অনুমোদিত একটি অনুরোধের হারকে মসৃণ করে।

উদাহরণ ২

নিম্নলিখিত উদাহরণটি প্রতি মিনিটে রেট 300 নির্ধারণ করে:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</Rate>
</SpikeArrest>

কার্যকর হার হল 300pm, অর্থাৎ প্রতি 200 মিলিসেকেন্ডে বাকেটে একটি নতুন টোকেন যোগ করা হয়। বাকেটের আকার সর্বদা messagesPerPeriod এর 10% হিসাবে কনফিগার করা হয়। অতএব, 300 এর messagesPerPeriod সহ, বাকেটের আকার 30 টোকেন হয়।

উদাহরণ ৩

নিম্নলিখিত উদাহরণটি প্রতি মিনিটে ১২টি অনুরোধের মধ্যে সীমাবদ্ধ রাখে (প্রতি পাঁচ সেকেন্ডে একটি অনুরোধ অনুমোদিত, অথবা ৬০/১২):

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request.header.weight" />
</SpikeArrest>

এছাড়াও, <MessageWeight> উপাদানটি একটি কাস্টম মান ( weight শিরোনাম) গ্রহণ করে যা নির্দিষ্ট অ্যাপ বা ক্লায়েন্টের জন্য বার্তার ওজন সামঞ্জস্য করে। এটি <Identifier> উপাদান দিয়ে চিহ্নিত সত্তাগুলির জন্য থ্রটলিংয়ের উপর অতিরিক্ত নিয়ন্ত্রণ প্রদান করে।

উদাহরণ ৪

নিম্নলিখিত উদাহরণটি স্পাইক অ্যারেস্টকে অনুরোধের মাধ্যমে একটি রানটাইম মান সেট অনুসন্ধান করার নির্দেশ দেয় যা request.header.runtime_rate ফ্লো ভেরিয়েবল হিসাবে পাস করা হয়:

<SpikeArrest name="Spike-Arrest-1">
  <Rate ref="request.header.runtime_rate" />
</SpikeArrest>

ফ্লো ভেরিয়েবলের মান অবশ্যই int pm অথবা int ps আকারে হতে হবে।

এই উদাহরণটি চেষ্টা করার জন্য, নিম্নলিখিতটির মতো একটি অনুরোধ কার্যকর করুন:

curl http://myorg-myenv.apigee.net/price -H 'runtime_rate:30ps'

চাইল্ড এলিমেন্ট রেফারেন্স

এই বিভাগটি <SpikeArrest> এর চাইল্ড এলিমেন্টগুলি বর্ণনা করে।

<DisplayName>

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

<DisplayName> উপাদানটি সকল নীতিতে সাধারণ।

ডিফল্ট মান n/a
প্রয়োজন? ঐচ্ছিক। আপনি <DisplayName> বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হয়
টাইপ স্ট্রিং
অভিভাবক উপাদান < PolicyElement >
শিশু উপাদান কোনোটিই নয়

<DisplayName> উপাদানটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্স

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

উদাহরণ

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> উপাদানটির কোনো বৈশিষ্ট্য বা শিশু উপাদান নেই।

<Identifier>

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

অনুরোধ থ্রটলিংয়ের উপর আরও সূক্ষ্ম নিয়ন্ত্রণের জন্য <MessageWeight> এলিমেন্টের সাথে একত্রে ব্যবহার করুন।

যদি আপনি <Identifier> এলিমেন্টটি খালি রাখেন, তাহলে সেই API প্রক্সিতে সমস্ত অনুরোধের জন্য একটি রেট সীমা বলবৎ করা হবে।

ডিফল্ট মান প্রযোজ্য নয়
প্রয়োজন? ঐচ্ছিক
আদর্শ স্ট্রিং
মূল উপাদান <SpikeArrest>
শিশু উপাদান কোনটিই নয়

বাক্য গঠন

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Identifier ref="flow_variable"/>
</SpikeArrest>
        

উদাহরণ ১

নিম্নলিখিত উদাহরণটি প্রতিটি ডেভেলপার আইডির জন্য স্পাইক অ্যারেস্ট নীতি প্রয়োগ করে:

<SpikeArrest name="Spike-Arrest-1">
  <Identifier ref="developer.id"/>
  <Rate>42pm</Rate/>
</SpikeArrest>

নিম্নলিখিত টেবিলে <Identifier> এর বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে:

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

এই উপাদানটি নিম্নলিখিত Apigee কমিউনিটি পোস্টেও আলোচনা করা হয়েছে: বিভিন্ন নীতিমালা জুড়ে কোটা আইডেন্টিফায়ার

<MessageWeight>

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

নির্দিষ্ট ক্লায়েন্ট বা অ্যাপের অনুরোধগুলিকে আরও থ্রোটল করতে <Identifier> এর সাথে একত্রে ব্যবহার করুন।

উদাহরণস্বরূপ, যদি Spike Arrest <Rate> 10pm হয়, এবং একটি অ্যাপ 2 ওজনের অনুরোধ জমা দেয়, তাহলে সেই ক্লায়েন্ট থেকে প্রতি মিনিটে মাত্র পাঁচটি বার্তা অনুমোদিত হবে কারণ প্রতিটি অনুরোধ 2 হিসাবে গণনা করা হবে।

ডিফল্ট মান প্রযোজ্য নয়
প্রয়োজন? ঐচ্ছিক
আদর্শ পূর্ণসংখ্যা
মূল উপাদান <SpikeArrest>
শিশু উপাদান কোনটিই নয়

বাক্য গঠন

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <MessageWeight ref="flow_variable"/>
</SpikeArrest>

উদাহরণ ১

নিম্নলিখিত উদাহরণটি প্রতি মিনিটে ১২টি অনুরোধের মধ্যে সীমাবদ্ধ রাখে (প্রতি পাঁচ সেকেন্ডে একটি অনুরোধ অনুমোদিত, অথবা ৬০/১২):

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request.header.weight" />
</SpikeArrest>

এই উদাহরণে, <MessageWeight> একটি কাস্টম মান (অনুরোধের weight শিরোনাম) গ্রহণ করে যা নির্দিষ্ট ক্লায়েন্টদের জন্য বার্তার ওজন সামঞ্জস্য করে। এটি <Identifier> উপাদান দিয়ে চিহ্নিত সত্তাগুলির জন্য থ্রোটলিংয়ের উপর অতিরিক্ত নিয়ন্ত্রণ প্রদান করে।

নিম্নলিখিত টেবিলে <MessageWeight> এর বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে:

বৈশিষ্ট্য বিবরণ উপস্থিতি ডিফল্ট
ref নির্দিষ্ট ক্লায়েন্টের জন্য বার্তার ওজন ধারণকারী ফ্লো ভেরিয়েবল সনাক্ত করে। এটি যেকোনো ফ্লো ভেরিয়েবল হতে পারে, যেমন HTTP কোয়েরি প্যারামিটার, হেডার, অথবা বার্তার মূল বিষয়বস্তু। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন। আপনি জাভাস্ক্রিপ্ট নীতি বা AssignMessage নীতি ব্যবহার করে কাস্টম ভেরিয়েবল সেট করতে পারেন। প্রয়োজনীয় নিষিদ্ধ

<Rate>

প্রতি মিনিট বা প্রতি সেকেন্ডের ব্যবধানে অনুমোদিত অনুরোধের সংখ্যা নির্ধারণ করে ট্র্যাফিক স্পাইক (বা বার্স্ট) সীমাবদ্ধ করার হার নির্দিষ্ট করে। ক্লায়েন্ট থেকে মান গ্রহণ করে রানটাইমে ট্র্যাফিককে মসৃণভাবে থ্রোটল করতে আপনি এই উপাদানটি <Identifier> এবং <MessageWeight> এর সাথেও ব্যবহার করতে পারেন।

ডিফল্ট মান প্রযোজ্য নয়
প্রয়োজন? প্রয়োজনীয়
আদর্শ পূর্ণসংখ্যা
মূল উপাদান <SpikeArrest>
শিশু উপাদান কোনটিই নয়

বাক্য গঠন

আপনি নিম্নলিখিত যেকোনো একটি উপায়ে হার নির্দিষ্ট করতে পারেন:

  • একটি স্ট্যাটিক রেট যা আপনি <Rate> এলিমেন্টের বডি হিসেবে নির্দিষ্ট করেন
  • একটি ভেরিয়েবল মান, যা ক্লায়েন্ট দ্বারা পাস করা যেতে পারে; ref অ্যাট্রিবিউট ব্যবহার করে ফ্লো ভেরিয়েবলের নাম সনাক্ত করুন।
<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
</SpikeArrest>

বৈধ হার মান (হয় একটি পরিবর্তনশীল মান হিসাবে সংজ্ঞায়িত অথবা উপাদানের মূল অংশে) নিম্নলিখিত বিন্যাসের সাথে সঙ্গতিপূর্ণ হতে হবে:

  • int ps (প্রতি সেকেন্ডে অনুরোধের সংখ্যা, মিলিসেকেন্ডের ব্যবধানে মসৃণ করা হয়েছে)
  • int pm (প্রতি মিনিটে অনুরোধের সংখ্যা, সেকেন্ডের ব্যবধানে মসৃণ করা হয়েছে)

int এর মান অবশ্যই একটি ধনাত্মক, শূন্য নয় এমন পূর্ণসংখ্যা হতে হবে।

উদাহরণ ১

নিম্নলিখিত উদাহরণটি প্রতি সেকেন্ডে পাঁচটি অনুরোধের হার নির্ধারণ করে:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>5ps</Rate>
</SpikeArrest>

এই নীতিটি প্রতি ২০০ মিলিসেকেন্ডে (১০০০/৫) অনুমোদিত একটি অনুরোধের হারকে মসৃণ করে।

উদাহরণ ২

নিম্নলিখিত উদাহরণটি প্রতি মিনিটে ১২টি অনুরোধের হার নির্ধারণ করে:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</Rate>
</SpikeArrest>

এই উদাহরণ নীতিটি প্রতি পাঁচ সেকেন্ডে (60/12) অনুমোদিত একটি অনুরোধের হারকে মসৃণ করে।

নিম্নলিখিত টেবিলে <Rate> এর বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে:

বৈশিষ্ট্য বিবরণ উপস্থিতি ডিফল্ট
ref একটি ফ্লো ভেরিয়েবল সনাক্ত করে যা রেট নির্দিষ্ট করে। এটি যেকোনো ফ্লো ভেরিয়েবল হতে পারে, যেমন HTTP কোয়েরি প্যারামিটার, হেডার, অথবা মেসেজের বডি কন্টেন্ট, অথবা KVM এর মতো মান। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন।

আপনি জাভাস্ক্রিপ্ট নীতি অথবা AssignMessage নীতি ব্যবহার করে কাস্টম ভেরিয়েবল ব্যবহার করতে পারেন।

যদি আপনি এই এলিমেন্টের ref এবং বডি উভয়ই সংজ্ঞায়িত করেন, তাহলে ref মান প্রয়োগ করা হবে এবং অনুরোধে ফ্লো ভেরিয়েবল সেট করা হলে প্রাধান্য পাবে। (যখন অনুরোধে ref এ চিহ্নিত ভেরিয়েবল সেট করা না থাকে তখন বিপরীতটি সত্য হয়।)

উদাহরণস্বরূপ:

<Rate ref="request.header.custom_rate">1pm</Rate>

এই উদাহরণে, যদি ক্লায়েন্ট "custom_rate" হেডার পাস না করে, তাহলে API প্রক্সির জন্য রেট হবে সকল ক্লায়েন্টের জন্য প্রতি মিনিটে ১টি অনুরোধ। যদি ক্লায়েন্ট "custom_rate" হেডার পাস করে, তাহলে প্রক্সির সকল ক্লায়েন্টের জন্য রেট সীমা প্রতি সেকেন্ডে ১০টি অনুরোধ হয়ে যায় — যতক্ষণ না "custom_rate" হেডার ছাড়া একটি অনুরোধ পাঠানো হয়।

বিভিন্ন ধরণের ক্লায়েন্টের জন্য কাস্টম রেট প্রয়োগ করার জন্য আপনি অনুরোধগুলিকে গ্রুপ করতে <Identifier> ব্যবহার করতে পারেন।

যদি আপনি ref জন্য একটি মান নির্দিষ্ট করেন কিন্তু <Rate> এলিমেন্টের বডিতে রেট সেট না করেন এবং ক্লায়েন্ট কোনও মান পাস না করে, তাহলে স্পাইক অ্যারেস্ট নীতি একটি ত্রুটি ছুঁড়ে দেয়।

ঐচ্ছিক প্রযোজ্য নয়

<UseEffectiveCount>

অটো-স্কেলিং গ্রুপ ব্যবহার করার সময় আপনার স্পাইক অ্যারেস্ট কাউন্টগুলি মেসেজ প্রসেসর (এমপি) জুড়ে বিতরণ করে।

বাক্য গঠন

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <UseEffectiveCount>[false|true]</UseEffectiveCount>
</SpikeArrest>

উদাহরণ ১

নিচের উদাহরণটি <UseEffectiveCount> কে true তে সেট করে:

<SpikeArrest name='Spike-Arrest-1'>
  <Rate>40ps</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

<UseEffectiveCount> উপাদানটি ঐচ্ছিক। আপনার স্পাইক অ্যারেস্ট নীতি থেকে উপাদানটি বাদ দিলে ডিফল্ট মানটি false বলে।

ডিফল্ট মান মিথ্যা
প্রয়োজন? ঐচ্ছিক
আদর্শ বুলিয়ান
মূল উপাদান <SpikeArrest>
শিশু উপাদান কোনটিই নয়

নিম্নলিখিত টেবিলে <UseEffectiveCount> এলিমেন্টের বৈশিষ্ট্যগুলি বর্ণনা করা হয়েছে:

বৈশিষ্ট্য বিবরণ ডিফল্ট উপস্থিতি
ref <UseEffectiveCount> এর মান ধারণকারী ভেরিয়েবল সনাক্ত করে। এটি যেকোনো ফ্লো ভেরিয়েবল হতে পারে, যেমন HTTP কোয়েরি প্যারামিটার, হেডার, অথবা মেসেজের বডি কন্টেন্ট। আরও তথ্যের জন্য, Flow ভেরিয়েবল রেফারেন্স দেখুন। আপনি JavaScript নীতি বা AssignMessage নীতি ব্যবহার করে কাস্টম ভেরিয়েবল সেট করতে পারেন। প্রযোজ্য নয় ঐচ্ছিক

<UseEffectiveCount> এর প্রভাব এর মানের উপর নির্ভর করে:

  • true : একজন এমপির স্পাইক রেট সীমা হল <Rate> কে একই পডে বর্তমান এমপি সংখ্যা দিয়ে ভাগ করলে। সমষ্টিগত সীমা হল <Rate> এর মান। যখন এমপিদের গতিশীলভাবে যোগ করা হয় (বা সরানো হয়), তখন তাদের পৃথক স্পাইক রেট সীমা বৃদ্ধি (বা হ্রাস) পাবে, কিন্তু সমষ্টিগত সীমা একই থাকবে।
  • false (বাদ দিলে ডিফল্ট): প্রতিটি এমপির স্পাইক রেট সীমা হল কেবল তার <Rate> এর মান। সমষ্টিগত সীমা হল সমস্ত এমপির হারের যোগফল। যখন এমপিদের যোগ করা হয় (বা সরানো হয়), তখন তাদের পৃথক স্পাইক রেট সীমা একই থাকবে, তবে সমষ্টিগত সীমা বৃদ্ধি পাবে (বা হ্রাস পাবে)।

স্পাইকআরেস্ট নীতিতে একটি " টোকেন বাকেট " অ্যালগরিদম ব্যবহার করা হয়েছে যা আপনার নির্দিষ্ট হারের সীমাকে ছোট বিরতিতে ভাগ করে ট্র্যাফিক স্পাইকগুলিকে মসৃণ করে। এই পদ্ধতির একটি অসুবিধা হল যে অল্প সময়ের ব্যবধানে আসা একাধিক বৈধ অনুরোধ সম্ভাব্যভাবে প্রত্যাখ্যান করা যেতে পারে।

উদাহরণস্বরূপ, ধরুন আপনি ৩০pm (প্রতি মিনিটে ৩০টি অনুরোধ) হারে প্রবেশ করেন। পরীক্ষায়, আপনি হয়তো ভাবতে পারেন যে আপনি ১ সেকেন্ডে ৩০টি অনুরোধ পাঠাতে পারবেন, যতক্ষণ না সেগুলি এক মিনিটের মধ্যে আসে। কিন্তু নীতিটি সেভাবে সেটিংটি প্রয়োগ করে না। যদি আপনি এটি সম্পর্কে চিন্তা করেন, তাহলে কিছু পরিবেশে ১-সেকেন্ডের মধ্যে ৩০টি অনুরোধকে একটি ছোট স্পাইক হিসাবে বিবেচনা করা যেতে পারে।

  • প্রতি মিনিটের হারগুলি সেকেন্ডের ব্যবধানে সম্পূর্ণ অনুমোদিত অনুরোধগুলিতে মসৃণ করা হয়।

    উদাহরণস্বরূপ, রাত ৩০টা এভাবে মসৃণ করা হয়:
    ৬০ সেকেন্ড (১ মিনিট) / রাত ৩০টা = ২-সেকেন্ডের ব্যবধান, অথবা প্রতি ২ সেকেন্ডে ১টি অনুরোধ অনুমোদিত। ২ সেকেন্ডের মধ্যে দ্বিতীয় অনুরোধ ব্যর্থ হবে। এছাড়াও, এক মিনিটের মধ্যে ৩১তম অনুরোধ ব্যর্থ হবে।

  • প্রতি-সেকেন্ডের হার মিলিসেকেন্ডের ব্যবধানে অনুমোদিত সম্পূর্ণ অনুরোধে মসৃণ করা হয়।

    উদাহরণস্বরূপ, 10ps এভাবে মসৃণ করা হয়:
    ১০০০ মিলিসেকেন্ড (১ সেকেন্ড) / ১০ps = ১০০-মিলিসেকেন্ড ব্যবধান, অথবা প্রতি ১০০ মিলিসেকেন্ডে ১টি অনুরোধ অনুমোদিত। ১০০ মিলিসেকেন্ডের মধ্যে দ্বিতীয় অনুরোধ ব্যর্থ হবে। এছাড়াও, এক সেকেন্ডের মধ্যে ১১তম অনুরোধ ব্যর্থ হবে।

নিম্নলিখিত সারণীতে প্রতিটি এমপির কার্যকর হার সীমার উপর <UseEffectiveCount> এর প্রভাব দেখানো হয়েছে:

<UseEffectiveCount> এর মান
false false false true true true
# জন সংসদ সদস্য
<Rate> এর মান ১০ ১০ ১০ ৪০ ৪০ ৪০
প্রতি এমপির কার্যকর হার ১০ ১০ ১০ ১০ ২০
মোট সীমা ৮০ ৪০ ২০ ৪০* ৪০* ৪০*
* <Rate> এর মতোই।

এই উদাহরণে, লক্ষ্য করুন যে যখন এমপির সংখ্যা ৪ থেকে ২ এ কমানো হয় এবং <UseEffectiveCount> false হয়, তখন প্রতি এমপির কার্যকর হার একই থাকে (১০ এ)। কিন্তু যখন <UseEffectiveCount> true হয়, তখন প্রতি এমপির কার্যকর হার ১০ থেকে ২০ এ চলে যায় যখন এমপির সংখ্যা ৪ থেকে ২ এ কমানো হয়।

প্রবাহ ভেরিয়েবল

যখন একটি স্পাইক অ্যারেস্ট নীতি কার্যকর করা হয়, তখন নিম্নলিখিত ফ্লো ভেরিয়েবলটি পূরণ করা হয়:

পরিবর্তনশীল আদর্শ অনুমতি বিবরণ
ratelimit. policy_name .failed বুলিয়ান কেবল পঠনযোগ্য নীতিটি ব্যর্থ হয়েছে কিনা তা নির্দেশ করে ( true না false )।

আরও তথ্যের জন্য, ফ্লো ভেরিয়েবলের রেফারেন্স দেখুন।

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

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

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

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

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
policies.ratelimit.FailedToResolveSpikeArrestRate 500 এই ত্রুটিটি ঘটবে যদি <Rate> উপাদানের মধ্যে রেট সেটিং ধারণকারী ভেরিয়েবলের রেফারেন্স স্পাইক অ্যারেস্ট নীতির মধ্যে একটি মান সমাধান করা না যায়। এই উপাদানটি বাধ্যতামূলক এবং int pm বা int ps আকারে স্পাইক গ্রেফতারের হার নির্দিষ্ট করতে ব্যবহৃত হয়।
policies.ratelimit.InvalidMessageWeight 500 একটি ফ্লো ভেরিয়েবলের মাধ্যমে <MessageWeight> উপাদানের জন্য নির্দিষ্ট করা মানটি অবৈধ (একটি অ-পূর্ণসংখ্যা মান) হলে এই ত্রুটিটি ঘটে।
policies.ratelimit.SpikeArrestViolation 429

হার সীমা অতিক্রম করা হয়েছে.

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

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

ত্রুটির নাম কারণ ঠিক করুন
InvalidAllowedRate যদি স্পাইক অ্যারেস্ট নীতির <Rate> উপাদানে নির্দিষ্ট করা স্পাইক অ্যারেস্ট রেট একটি পূর্ণসংখ্যা না হয় বা যদি প্রত্যয় হিসাবে হারে ps বা pm না থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়।

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

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

ভেরিয়েবল যেখানে উদাহরণ
fault.name=" fault_name " fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। fault.name Matches "SpikeArrestViolation"
ratelimit. policy_name .failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। ratelimit.SA-SpikeArrestPolicy.failed = true

উদাহরণ ত্রুটি প্রতিক্রিয়া

নীচে একটি উদাহরণ ত্রুটি প্রতিক্রিয়া দেখানো হয়েছে:

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.SpikeArrestViolation"
      },
      "faultstring":"Spike arrest violation. Allowed rate : 10ps"
   }
}

উদাহরণ দোষ নিয়ম

SpikeArrestViolation লঙ্ঘন ফল্ট পরিচালনা করার জন্য একটি উদাহরণ ফল্ট নিয়ম নীচে দেখানো হয়েছে:

<FaultRules>
    <FaultRule name="Spike Arrest Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "SpikeArrestViolation") </Condition>
        </Step>
        <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

কোটা বা স্পাইক অ্যারেস্ট নীতি দ্বারা নির্ধারিত হারের সীমা অতিক্রম করার জন্য বর্তমান HTTP স্ট্যাটাস কোড হল 429 (অনেক অনুরোধ)। HTTP স্ট্যাটাস কোড 500 (অভ্যন্তরীণ সার্ভার ত্রুটি) এ পরিবর্তন করতে, আপডেট অর্গানাইজেশন প্রোপার্টিজ API ব্যবহার করে features.isHTTPStatusTooManyRequestEnabled প্রোপার্টিটিকে false সেট করুন।

উদাহরণস্বরূপ:

curl -u email:password -X POST -H "Content-type:application/xml" http://api.enterprise.apigee.com/v1/organizations/myorg -d \
"<Organization type="trial" name="MyOrganization">
    <Properties>
        <Property name="features.isHTTPStatusTooManyRequestEnabled">true</Property>
        . . .
    </Properties>
</Organization>"

স্কিমা

প্রতিটি নীতির ধরণ একটি XML স্কিমা ( .xsd ) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি স্কিমাগুলি GitHub-এ উপলব্ধ।

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