আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
স্পাইক অ্যারেস্ট পলিসি <Rate> এলিমেন্টের মাধ্যমে ট্র্যাফিকের আকস্মিক বৃদ্ধি থেকে সুরক্ষা প্রদান করে। এই এলিমেন্টটি একটি এপিআই প্রক্সি দ্বারা প্রসেস করা এবং ব্যাকএন্ডে পাঠানো রিকোয়েস্টের সংখ্যা নিয়ন্ত্রণ করে, যা পারফরম্যান্সের ধীরগতি এবং ডাউনটাইম থেকে রক্ষা করে।
<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>
ডিফল্ট নীতি
নিম্নলিখিত উদাহরণটি এজ UI-তে আপনার ফ্লো-তে একটি স্পাইক অ্যারেস্ট পলিসি যোগ করার সময় ডিফল্ট সেটিংস দেখায়:
<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 | প্রয়োজন | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে |
continueOnError | মিথ্যা | ঐচ্ছিক | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে "false" এ সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ। একটি নীতি ব্যর্থ হওয়ার পরেও প্রবাহ সম্পাদন অব্যাহত রাখতে "সত্য" তে সেট করুন৷ |
enabled | সত্য | ঐচ্ছিক | নীতি প্রয়োগ করতে "সত্য" এ সেট করুন। নীতিটি "বন্ধ" করতে "মিথ্যা" এ সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না। |
async | মিথ্যা | অবচয় | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ |
উদাহরণ
নিম্নলিখিত উদাহরণগুলিতে স্পাইক অ্যারেস্ট নীতি ব্যবহারের কয়েকটি উপায় দেখানো হয়েছে:
উদাহরণ ১
নিম্নলিখিত উদাহরণটি প্রতি সেকেন্ডে পাঁচটি হারে সেট করে:
<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>
কার্যকরী হার হলো 300pm, অর্থাৎ প্রতি 200 মিলিসেকেন্ডে বাকেটে একটি নতুন টোকেন যুক্ত হয়। বাকেটের আকার সর্বদা messagesPerPeriod এর 10% হিসাবে কনফিগার করা হয়। সুতরাং, messagesPerPeriod 300 হলে, বাকেটের আকার হবে 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> এলিমেন্টটি খালি রাখেন, তাহলে সেই এপিআই প্রক্সিতে আসা সমস্ত অনুরোধের জন্য একটিমাত্র রেট লিমিট কার্যকর হবে।
| ডিফল্ট মান | প্রযোজ্য নয় |
| প্রয়োজন? | ঐচ্ছিক |
| প্রকার | স্ট্রিং |
| মূল উপাদান | <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 পলিসিতে উপলব্ধ ভেরিয়েবলগুলো। এছাড়াও আপনি JavaScript পলিসি বা AssignMessage পলিসি ব্যবহার করে কাস্টম ভেরিয়েবল সেট করতে পারেন। | প্রযোজ্য নয় | প্রয়োজনীয় |
এই উপাদানটি নিম্নলিখিত Apigee কমিউনিটি পোস্টেও আলোচনা করা হয়েছে: Quota Identifier Across Different Policies ।
<MessageWeight>
প্রতিটি বার্তার জন্য নির্ধারিত ওয়েটিং নির্দিষ্ট করে। মেসেজ ওয়েট স্পাইক অ্যারেস্ট রেট গণনার উপর একটি একক অনুরোধের প্রভাব পরিবর্তন করে। মেসেজ ওয়েট যেকোনো ফ্লো ভ্যারিয়েবল হতে পারে, যেমন একটি HTTP হেডার, কোয়েরি প্যারামিটার, ফর্ম প্যারামিটার, বা মেসেজ বডির কন্টেন্ট। আপনি জাভাস্ক্রিপ্ট পলিসি বা অ্যাসাইনমেসেজ পলিসি ব্যবহার করে কাস্টম ভ্যারিয়েবলও ব্যবহার করতে পারেন।
নির্দিষ্ট ক্লায়েন্ট বা অ্যাপের অনুরোধ আরও সীমিত করতে <Identifier> এর সাথে একত্রে ব্যবহার করুন।
উদাহরণস্বরূপ, যদি স্পাইক অ্যারেস্ট <Rate> 10pm হয়, এবং কোনো অ্যাপ 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 কোয়েরি প্যারাম, হেডার বা মেসেজ বডির কন্টেন্ট। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন। এছাড়াও আপনি জাভাস্ক্রিপ্ট পলিসি অথবা অ্যাসাইনমেসেজ পলিসি ব্যবহার করে কাস্টম ভেরিয়েবল সেট করতে পারেন। | প্রয়োজনীয় | প্রযোজ্য নয় |
<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>
এই উদাহরণ নীতিটি প্রতি পাঁচ সেকেন্ডে একটি অনুরোধ (৬০/১২) অনুমোদনের হারকে সামঞ্জস্যপূর্ণ করে।
নিম্নলিখিত সারণিতে <Rate> এর বৈশিষ্ট্যগুলো বর্ণনা করা হলো:
| বৈশিষ্ট্য | বর্ণনা | উপস্থিতি | ডিফল্ট |
|---|---|---|---|
ref | একটি ফ্লো ভেরিয়েবল শনাক্ত করে যা হার নির্দিষ্ট করে। এটি যেকোনো ফ্লো ভেরিয়েবল হতে পারে, যেমন একটি HTTP কোয়েরি প্যারামিটার, হেডার, বা মেসেজ বডির বিষয়বস্তু, অথবা KVM-এর মতো কোনো ভ্যালু। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন। আপনি জাভাস্ক্রিপ্ট পলিসি অথবা অ্যাসাইনমেসেজ পলিসি ব্যবহার করে কাস্টম ভেরিয়েবলও ব্যবহার করতে পারেন। যদি আপনি এই এলিমেন্টের উদাহরণস্বরূপ: <Rate ref="request.header.custom_rate">1pm</Rate> এই উদাহরণে, যদি ক্লায়েন্ট 'custom_rate' হেডারটি না পাঠায়, তাহলে এপিআই প্রক্সির জন্য সমস্ত ক্লায়েন্টের রেট হবে প্রতি মিনিটে ১টি রিকোয়েস্ট। যদি ক্লায়েন্ট 'custom_rate' হেডারটি পাঠায়, তাহলে প্রক্সিতে থাকা সমস্ত ক্লায়েন্টের জন্য রেট লিমিট হয়ে যাবে প্রতি সেকেন্ডে ১০টি রিকোয়েস্ট — যতক্ষণ না 'custom_rate' হেডার ছাড়া কোনো রিকোয়েস্ট পাঠানো হয়। বিভিন্ন ধরনের ক্লায়েন্টের জন্য স্বতন্ত্র রেট প্রয়োগ করতে, আপনি অনুরোধগুলোকে একত্রিত করার জন্য যদি আপনি | ঐচ্ছিক | প্রযোজ্য নয় |
Rate এর সেই বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে যা ট্র্যাফিক থ্রটলিং আচরণ নির্ধারণ করে:| বৈশিষ্ট্য | বর্ণনা |
|---|---|
messagesPerPeriod | একটি নির্দিষ্ট সময়সীমার মধ্যে অনুমোদিত বার্তার সংখ্যা নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি কোনো পলিসি '10ps' (প্রতি সেকেন্ডে ১০টি) এর জন্য কনফিগার করা থাকে, তাহলে messagesPerPeriod এর মান হবে ১০। |
periodInMicroseconds | এটি সেই সময়কালকে (মাইক্রোসেকেন্ডে) নির্ধারণ করে, যার উপর ভিত্তি করে messagesPerPeriod গণনা করা হয়। '10ps' কনফিগারেশনের জন্য, এই মান হবে ১,০০০,০০০, যা এক সেকেন্ডের সমতুল্য। |
maxBurstMessageCount | এটি নতুন বিরতির শুরুতে তাৎক্ষণিকভাবে বা অল্প সময়ের জন্য অনুমোদিত অনুরোধের সর্বোচ্চ সংখ্যাকে বোঝায়। |
<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 কোয়েরি প্যারাম, হেডার, বা মেসেজ বডির কন্টেন্ট। আরও তথ্যের জন্য, ফ্লো ভেরিয়েবল রেফারেন্স দেখুন। এছাড়াও আপনি জাভাস্ক্রিপ্ট পলিসি বা অ্যাসাইনমেসেজ পলিসি ব্যবহার করে কাস্টম ভেরিয়েবল সেট করতে পারেন। | প্রযোজ্য নয় | ঐচ্ছিক |
<UseEffectiveCount> -এর প্রভাব এর মানের উপর নির্ভর করে:
-
true: একটি MP-এর স্পাইক রেট লিমিট হলো<Rate>কে একই পডের বর্তমান MP সংখ্যা দিয়ে ভাগ করে পাওয়া মান। অ্যাগ্রিগেট লিমিট হলো<Rate>এর মান। যখন MP-গুলিকে ডাইনামিকভাবে যোগ করা (বা সরানো) হয়, তখন তাদের স্বতন্ত্র স্পাইক রেট লিমিট বাড়বে (বা কমবে), কিন্তু অ্যাগ্রিগেট লিমিট একই থাকবে। -
false: প্রতিটি এমপি-র স্পাইক রেট লিমিট হলো তার<Rate>এর মান। সামগ্রিক লিমিট হলো সমস্ত এমপি-র রেটগুলোর যোগফল। যখন এমপি যোগ করা হয় (বা সরানো হয়), তাদের স্বতন্ত্র স্পাইক রেট লিমিট একই থাকবে, কিন্তু সামগ্রিক লিমিট বাড়বে (বা কমবে)।
SpikeArrest পলিসি একটি " টোকেন বাকেট " অ্যালগরিদম ব্যবহার করে, যা আপনার নির্দিষ্ট করা রেট লিমিটকে ছোট ছোট ব্যবধানে ভাগ করে ট্র্যাফিকের আকস্মিক বৃদ্ধিকে মসৃণ করে। এই পদ্ধতির একটি অসুবিধা হলো, অল্প সময়ের ব্যবধানে আসা একাধিক বৈধ অনুরোধ সম্ভাব্যভাবে প্রত্যাখ্যাত হতে পারে।
উদাহরণস্বরূপ, ধরুন আপনি 30pm (প্রতি মিনিটে ৩০টি অনুরোধ) রেটটি প্রবেশ করালেন। পরীক্ষা করার সময়, আপনার মনে হতে পারে যে আপনি ১ সেকেন্ডে ৩০টি অনুরোধ পাঠাতে পারবেন, যদি সেগুলো এক মিনিটের মধ্যে আসে। কিন্তু পলিসিটি এভাবে সেটিংটি প্রয়োগ করে না। ভেবে দেখলে, কিছু পরিবেশে ১ সেকেন্ডের মধ্যে ৩০টি অনুরোধকে একটি ছোটখাটো স্পাইক হিসেবে বিবেচনা করা যেতে পারে।
- প্রতি মিনিটের হারগুলোকে সেকেন্ডের ব্যবধানে অনুমোদিত সম্পূর্ণ অনুরোধের সংখ্যায় রূপান্তরিত করা হয়।
উদাহরণস্বরূপ, 30pm এইভাবে মসৃণ করা হয়:
৬০ সেকেন্ড (১ মিনিট) / ৩০ মিনিট = ২-সেকেন্ডের ব্যবধান, অর্থাৎ প্রতি ২ সেকেন্ডে ১টি অনুরোধ করা যাবে। ২ সেকেন্ডের মধ্যে দ্বিতীয় অনুরোধটি ব্যর্থ হবে। এছাড়াও, এক মিনিটের মধ্যে ৩১তম অনুরোধটিও ব্যর্থ হবে। - প্রতি সেকেন্ডের হারগুলোকে মসৃণ করে মিলিসেকেন্ডের ব্যবধানে অনুমোদিত সম্পূর্ণ অনুরোধের সংখ্যায় পরিণত করা হয়।
উদাহরণস্বরূপ, 10ps এইভাবে মসৃণ করা হয়:
১০০০ মিলিসেকেন্ড (১ সেকেন্ড) / ১০ পিকোসেকেন্ড = ১০০-মিলিসেকেন্ডের ব্যবধান, অর্থাৎ প্রতি ১০০ মিলিসেকেন্ডে ১টি অনুরোধ অনুমোদিত। ১০০ মিলিসেকেন্ডের মধ্যে দ্বিতীয় অনুরোধটি ব্যর্থ হবে। এছাড়াও, এক সেকেন্ডের মধ্যে ১১তম অনুরোধটিও ব্যর্থ হবে।
নিম্নলিখিত সারণিতে প্রতিটি এমপি-এর কার্যকর হার সীমার উপর <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 আকারে স্পাইক গ্রেফতারের হার নির্দিষ্ট করতে ব্যবহৃত হয়। | build |
policies.ratelimit.InvalidMessageWeight | 500 | একটি ফ্লো ভেরিয়েবলের মাধ্যমে <MessageWeight> উপাদানের জন্য নির্দিষ্ট করা মানটি অবৈধ (একটি অ-পূর্ণসংখ্যা মান) হলে এই ত্রুটিটি ঘটে। | build |
policies.ratelimit.SpikeArrestViolation | 429 | হার সীমা অতিক্রম করা হয়েছে. |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
InvalidAllowedRate | যদি স্পাইক অ্যারেস্ট নীতির <Rate> উপাদানে নির্দিষ্ট করা স্পাইক অ্যারেস্ট রেট একটি পূর্ণসংখ্যা না হয় বা যদি প্রত্যয় হিসাবে হারে ps বা pm না থাকে, তাহলে API প্রক্সির স্থাপনা ব্যর্থ হয়। | build |
ফল্ট ভেরিয়েবল
রানটাইম ত্রুটি ঘটলে এই ভেরিয়েবলগুলি সেট করা হয়। আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
| ভেরিয়েবল | যেখানে | উদাহরণ |
|---|---|---|
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 (Too Many Requests)। HTTP স্ট্যাটাস কোডটি 500 (Internal Server Error)-এ পরিবর্তন করতে, Update organization properties 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 ) দ্বারা সংজ্ঞায়িত করা হয়। তথ্যের জন্য, পলিসি স্কিমাগুলো গিটহাবে পাওয়া যাবে।
সম্পর্কিত বিষয়
- কোটা নীতি : স্বতন্ত্র ক্লায়েন্টদের ট্র্যাফিক সীমিত করার জন্য কোটা নীতি।
- রেট-সীমাবদ্ধকরণের একটি সংক্ষিপ্ত বিবরণের জন্য রেট-সীমাবদ্ধকরণ
- কোটা এবং স্পাইকঅ্যারেস্ট নীতির তুলনা
- এপিআই প্রক্সির কার্যকরী নমুনা