আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
এজ মাইক্রোগেটওয়ে v. 3.3.x
শ্রোতা
এই বিষয়টি এজ মাইক্রোগেটওয়ে অপারেটরদের উদ্দেশ্যে যারা মাইক্রোগেটওয়েতে ইনস্টল করা বিদ্যমান প্লাগইনগুলি ব্যবহার করতে চান৷ এটি স্পাইক অ্যারেস্ট এবং কোটা প্লাগইনগুলি নিয়ে বিস্তারিত আলোচনা করে (উভয়টিই ইনস্টলেশনের সাথে অন্তর্ভুক্ত)। আপনি যদি একজন বিকাশকারী হন যিনি নতুন প্লাগইনগুলি বিকাশ করতে চান, কাস্টম প্লাগইনগুলি বিকাশ করুন দেখুন৷
একটি এজ মাইক্রোগেটওয়ে প্লাগইন কি?
একটি প্লাগইন হল একটি Node.js মডিউল যা এজ মাইক্রোগেটওয়েতে কার্যকারিতা যোগ করে। প্লাগইন মডিউলগুলি একটি সামঞ্জস্যপূর্ণ প্যাটার্ন অনুসরণ করে এবং এজ মাইক্রোগেটওয়েকে পরিচিত একটি অবস্থানে সংরক্ষণ করা হয়, মাইক্রোগেটওয়েকে সেগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার এবং লোড করতে সক্ষম করে৷ এজ মাইক্রোগেটওয়েতে বেশ কয়েকটি বিদ্যমান প্লাগইন রয়েছে এবং আপনি কাস্টম প্লাগইনগুলিও তৈরি করতে পারেন, যেমনটি ডেভেলপ কাস্টম প্লাগইনগুলিতে ব্যাখ্যা করা হয়েছে।
এজ মাইক্রোগেটওয়ের সাথে বান্ডিল করা বিদ্যমান প্লাগইন
ইনস্টলেশনের সময় এজ মাইক্রোগেটওয়ের সাথে বেশ কয়েকটি প্লাগইন সরবরাহ করা হয়। নিম্নলিখিত সারণীটি সর্বাধিক ব্যবহৃত কিছু প্লাগইন বর্ণনা করে।
প্লাগইন | ডিফল্টরূপে সক্রিয় | বর্ণনা |
---|---|---|
বিশ্লেষণ | হ্যাঁ | এজ মাইক্রোগেটওয়ে থেকে এপিজি এজ-এ বিশ্লেষণ ডেটা পাঠায়। |
শপথ | হ্যাঁ | এজ মাইক্রোগেটওয়েতে OAuth টোকেন এবং API কী যাচাইকরণ যোগ করে। এজ মাইক্রোগেটওয়ে সেট আপ এবং কনফিগার করা দেখুন। |
কোটা | না | এজ মাইক্রোগেটওয়ের অনুরোধে কোটা প্রয়োগ করে। কোটা সংরক্ষণ এবং পরিচালনা করতে Apigee Edge ব্যবহার করে। কোটা প্লাগইন ব্যবহার করা দেখুন। |
spikearrest | না | ট্রাফিক স্পাইক এবং DoS আক্রমণ থেকে রক্ষা করে। স্পাইক অ্যারেস্ট প্লাগইন ব্যবহার করা দেখুন। |
হেডার-বড় হাতের অক্ষর | না | একটি মন্তব্য করা, নমুনা প্রক্সি ডেভেলপারদের কাস্টম প্লাগইন লিখতে সাহায্য করার জন্য একটি নির্দেশিকা হিসাবে অভিপ্রেত। এজ মাইক্রোগেটওয়ে নমুনা প্লাগইন দেখুন। |
accumulate-অনুরোধ | না | প্লাগইন চেইনের পরবর্তী হ্যান্ডলারের কাছে ডেটা পাঠানোর আগে একটি একক বস্তুতে অনুরোধ ডেটা জমা করে। রূপান্তর প্লাগইনগুলি লেখার জন্য দরকারী যা একটি একক, সঞ্চিত অনুরোধ বিষয়বস্তু অবজেক্টে কাজ করতে হবে। |
accumulate- প্রতিক্রিয়া | না | প্লাগইন চেইনের পরবর্তী হ্যান্ডলারের কাছে ডেটা পাস করার আগে একটি একক বস্তুতে প্রতিক্রিয়া ডেটা জমা করে। রূপান্তর প্লাগইনগুলি লেখার জন্য দরকারী যা একটি একক, সঞ্চিত প্রতিক্রিয়া বিষয়বস্তু অবজেক্টে কাজ করতে হবে। |
রূপান্তর-বড় হাতের অক্ষর | না | অনুরোধ বা প্রতিক্রিয়া ডেটা রূপান্তরিত করে। এই প্লাগইনটি রূপান্তর প্লাগইনের একটি সেরা অনুশীলন বাস্তবায়নের প্রতিনিধিত্ব করে। উদাহরণ প্লাগইন একটি তুচ্ছ রূপান্তর সম্পাদন করে (অনুরোধ বা প্রতিক্রিয়া ডেটাকে বড় হাতের অক্ষরে রূপান্তর করে); যাইহোক, XML থেকে JSON-এর মতো অন্য ধরনের রূপান্তর করার জন্য এটি সহজেই অভিযোজিত হতে পারে। |
json2xm l | না | গ্রহণ বা বিষয়বস্তু-টাইপ হেডারের উপর ভিত্তি করে অনুরোধ বা প্রতিক্রিয়া ডেটা রূপান্তরিত করে। বিস্তারিত জানার জন্য, GitHub-এ প্লাগইন ডকুমেন্টেশন দেখুন । |
কোটা-মেমরি | না | এজ মাইক্রোগেটওয়ের অনুরোধে কোটা প্রয়োগ করে। স্থানীয় মেমরিতে কোটা সঞ্চয় ও পরিচালনা করে। |
স্বাস্থ্য পরীক্ষা | না | এজ মাইক্রোগেটওয়ে প্রক্রিয়া সম্পর্কে তথ্য প্রদান করে -- মেমরি ব্যবহার, সিপিইউ ব্যবহার, ইত্যাদি। প্লাগইন ব্যবহার করতে, আপনার এজ মাইক্রোগেটওয়ে দৃষ্টান্তে URL /healthcheck এ কল করুন। এই প্লাগইনটি একটি উদাহরণ হওয়ার উদ্দেশ্যে করা হয়েছে যা আপনি আপনার নিজের স্বাস্থ্য পরীক্ষা প্লাগইন বাস্তবায়ন করতে ব্যবহার করতে পারেন। |
বিদ্যমান প্লাগইনগুলি কোথায় পাবেন
এজ মাইক্রোগেটওয়ের সাথে বান্ডিল করা বিদ্যমান প্লাগইনগুলি এখানে অবস্থিত, যেখানে [prefix]
হল npm
প্রিফিক্স ডিরেক্টরি। আপনি এই ডিরেক্টরিটি সনাক্ত করতে না পারলে এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে তা দেখুন।
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
প্লাগইন যোগ করা এবং কনফিগার করা
প্লাগইন যোগ এবং কনফিগার করতে এই প্যাটার্ন অনুসরণ করুন:
- এজ মাইক্রোগেটওয়ে বন্ধ করুন।
- একটি এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইল খুলুন। বিশদ বিবরণের জন্য, বিকল্পগুলির জন্য কনফিগারেশন পরিবর্তন করা দেখুন।
-
plugins:sequence
উপাদান, নিম্নরূপ। প্লাগইনগুলি এই তালিকায় যে ক্রমে প্রদর্শিত হবে সেই ক্রমেই কার্যকর করা হয়৷
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- প্লাগইন কনফিগার করুন। কিছু প্লাগইনের ঐচ্ছিক প্যারামিটার থাকে যা আপনি কনফিগার ফাইলে কনফিগার করতে পারেন। উদাহরণস্বরূপ, আপনি স্পাইক অ্যারেস্ট প্লাগইন কনফিগার করতে নিম্নলিখিত স্তবক যোগ করতে পারেন। আরও তথ্যের জন্য স্পাইক অ্যারেস্ট প্লাগইন ব্যবহার করা দেখুন।
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- ফাইলটি সংরক্ষণ করুন।
- আপনি কোন কনফিগারেশন ফাইলটি সম্পাদনা করেছেন তার উপর নির্ভর করে এজ মাইক্রোগেটওয়ে পুনরায় চালু বা পুনরায় লোড করুন।
প্লাগইন-নির্দিষ্ট কনফিগারেশন
আপনি এই ডিরেক্টরিতে একটি প্লাগইন-নির্দিষ্ট কনফিগারেশন তৈরি করে কনফিগার ফাইলে নির্দিষ্ট করা প্লাগইন প্যারামিটারগুলিকে ওভাররাইড করতে পারেন:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
যেখানে [prefix]
হল npm
উপসর্গ ডিরেক্টরি। আপনি এই ডিরেক্টরিটি সনাক্ত করতে না পারলে এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে তা দেখুন।
plugins/<plugin_name>/config/default.yaml
। উদাহরণস্বরূপ, আপনি plugins/spikearrest/config/default.yaml
এ এই ব্লকটি রাখতে পারেন এবং তারা অন্য কোন কনফিগার সেটিংস ওভাররাইড করবে।
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
স্পাইক অ্যারেস্ট প্লাগইন ব্যবহার করে
স্পাইক অ্যারেস্ট প্লাগইন ট্রাফিক স্পাইক থেকে রক্ষা করে। এটি একটি এজ মাইক্রোগেটওয়ে উদাহরণ দ্বারা প্রক্রিয়াকৃত অনুরোধের সংখ্যাকে থ্রোটল করে।
স্পাইক অ্যারেস্ট প্লাগইন যোগ করা হচ্ছে
প্লাগইন যোগ করা এবং কনফিগার করা দেখুন।
স্পাইক গ্রেপ্তারের জন্য নমুনা কনফিগারেশন
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
স্পাইক গ্রেফতারের জন্য কনফিগারেশন বিকল্প
- timeUnit : কত ঘন ঘন স্পাইক অ্যারেস্ট এক্সিকিউশন উইন্ডো রিসেট হয়। বৈধ মান দ্বিতীয় বা মিনিট।
- অনুমতি দিন : টাইমইউনিট চলাকালীন অনুমতি দেওয়ার জন্য সর্বাধিক সংখ্যক অনুরোধ। আপনি যদি একাধিক এজ মাইক্রো প্রসেস চালাচ্ছেন তাও দেখুন।
- bufferSize : (ঐচ্ছিক, ডিফল্ট = 0) যদি bufferSize > 0 হয়, স্পাইক অ্যারেস্ট একটি বাফারে এই সংখ্যক অনুরোধ সঞ্চয় করে। পরবর্তী এক্সিকিউশন "উইন্ডো" হওয়ার সাথে সাথে, বাফার করা অনুরোধগুলি প্রথমে প্রক্রিয়া করা হবে। এছাড়াও একটি বাফার যোগ করা দেখুন।
কিভাবে স্পাইক গ্রেফতার কাজ করে?
একটি নির্দিষ্ট সংখ্যক অনুরোধে ট্রাফিক সীমিত করার উপায় হিসাবে না করে সাধারণত ট্রাফিক স্পাইক থেকে রক্ষা করার উপায় হিসাবে স্পাইক অ্যারেস্টকে ভাবুন। আপনার API এবং ব্যাকএন্ড একটি নির্দিষ্ট পরিমাণ ট্র্যাফিক পরিচালনা করতে পারে এবং স্পাইক অ্যারেস্ট নীতি আপনাকে আপনার চাওয়া সাধারণ পরিমাণে ট্র্যাফিক মসৃণ করতে সহায়তা করে।
রানটাইম স্পাইক অ্যারেস্ট আচরণ আপনার প্রবেশ করা আক্ষরিক প্রতি-মিনিট বা প্রতি-সেকেন্ডের মানগুলি থেকে আপনি যা দেখতে আশা করতে পারেন তার থেকে আলাদা।
উদাহরণস্বরূপ, বলুন আপনি প্রতি মিনিটে 30টি অনুরোধের হার নির্দিষ্ট করেছেন, যেমন:
spikearrest: timeUnit: minute allow: 30
পরীক্ষায়, আপনি ভাবতে পারেন যে আপনি 1 সেকেন্ডে 30টি অনুরোধ পাঠাতে পারেন, যতক্ষণ না সেগুলি এক মিনিটের মধ্যে আসে। কিন্তু নীতিটি সেটিংটি কীভাবে প্রয়োগ করে তা নয়। আপনি যদি এটি সম্পর্কে চিন্তা করেন, 1-সেকেন্ড সময়ের মধ্যে 30টি অনুরোধ কিছু পরিবেশে একটি ছোট স্পাইক হিসাবে বিবেচিত হতে পারে।
আসলে কি হয়, তারপর? স্পাইক-এর মতো আচরণ প্রতিরোধ করতে, স্পাইক অ্যারেস্ট আপনার সেটিংসকে ছোট ব্যবধানে বিভক্ত করে অনুমোদিত ট্র্যাফিককে মসৃণ করে, নিম্নরূপ:
প্রতি মিনিটের হার
প্রতি মিনিটের হার সেকেন্ডের ব্যবধানে অনুরোধে মসৃণ হয়ে যায়। উদাহরণস্বরূপ, প্রতি মিনিটে 30টি অনুরোধ এভাবে মসৃণ করা হয়:
60 সেকেন্ড (1 মিনিট) / 30 = 2-সেকেন্ডের ব্যবধান, বা প্রতি 2 সেকেন্ডে প্রায় 1টি অনুরোধ অনুমোদিত৷ 2 সেকেন্ডের মধ্যে একটি দ্বিতীয় অনুরোধ ব্যর্থ হবে। এছাড়াও, এক মিনিটের মধ্যে একটি 31তম অনুরোধ ব্যর্থ হবে।
প্রতি সেকেন্ডের হার
প্রতি-সেকেন্ডের হার মিলিসেকেন্ডের ব্যবধানে অনুমোদিত অনুরোধে মসৃণ হয়ে যায়। উদাহরণস্বরূপ, 10টি অনুরোধ/সেকেন্ড এভাবে মসৃণ করা হয়:
1000 মিলিসেকেন্ড (1 সেকেন্ড) / 10 = 100-মিলিসেকেন্ড ব্যবধান, বা প্রতি 100 মিলিসেকেন্ডে প্রায় 1টি অনুরোধ অনুমোদিত। 100ms এর মধ্যে একটি দ্বিতীয় অনুরোধ ব্যর্থ হবে। এছাড়াও, এক সেকেন্ডের মধ্যে একটি 11 তম অনুরোধ ব্যর্থ হবে।
সীমা ছাড়িয়ে গেলে
যদি অনুরোধের সংখ্যা নির্দিষ্ট সময়ের ব্যবধানের মধ্যে সীমা অতিক্রম করে, তাহলে স্পাইক অ্যারেস্ট একটি HTTP 503 স্ট্যাটাস সহ এই ত্রুটি বার্তাটি ফেরত দেয়:
{"error": "spike arrest policy violated"}
একটি বাফার যোগ করা হচ্ছে
আপনি নীতিতে একটি বাফার যোগ করার একটি বিকল্প আছে. ধরা যাক আপনি বাফারটি 10-এ সেট করেছেন। আপনি দেখতে পাবেন যে যখন আপনি স্পাইক অ্যারেস্ট সীমা অতিক্রম করেন তখন API অবিলম্বে একটি ত্রুটি ফেরত দেয় না। পরিবর্তে, অনুরোধগুলি বাফার করা হয় (নির্দিষ্ট নম্বর পর্যন্ত), এবং পরবর্তী উপযুক্ত এক্সিকিউশন উইন্ডো উপলব্ধ হওয়ার সাথে সাথে বাফার করা অনুরোধগুলি প্রক্রিয়া করা হয়। ডিফল্ট বাফার সাইজ হল 0।
আপনি যদি একাধিক এজ মাইক্রো প্রসেস চালাচ্ছেন
অনুমোদিত অনুরোধের সংখ্যা নির্ভর করে এজ মাইক্রো ওয়ার্কার প্রসেসের সংখ্যার উপর যা চলছে। স্পাইক অ্যারেস্ট প্রতি কর্মী প্রক্রিয়ার অনুমতিযোগ্য সংখ্যক অনুরোধ গণনা করে। ডিফল্টরূপে, এজ মাইক্রো প্রসেসের সংখ্যা মেশিনে CPU-র সংখ্যার সমান যেখানে এজ মাইক্রো ইনস্টল করা আছে। যাইহোক, আপনি start
কমান্ডে --processes
বিকল্পটি ব্যবহার করে এজ মাইক্রো চালু করার সময় কর্মী প্রক্রিয়ার সংখ্যা কনফিগার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি নির্দিষ্ট সময়ের মধ্যে 100টি অনুরোধে স্পাইক অ্যারেস্ট ট্রিগার করতে চান, এবং আপনি যদি --processes 4
বিকল্পের সাথে এজ মাইক্রোগেটওয়ে শুরু করেন, তাহলে স্পাইক অ্যারেস্ট কনফিগারেশনে allow: 25
সেট করুন। সংক্ষিপ্তভাবে, অঙ্গুষ্ঠের নিয়ম হল allow
কনফিগার প্যারামিটারটিকে "কাঙ্খিত স্পাইক অ্যারেস্ট কাউন্ট / প্রসেসের সংখ্যা" মানতে সেট করা।
কোটা প্লাগইন ব্যবহার করে
একটি কোটা একটি ঘন্টা, দিন, সপ্তাহ বা মাসে একটি এপিআই-এ জমা দেওয়ার অনুমতিপ্রাপ্ত অনুরোধ বার্তাগুলির সংখ্যা নির্দিষ্ট করে৷ যখন একটি অ্যাপ তার কোটা সীমায় পৌঁছে যায়, তখন পরবর্তী API কলগুলি প্রত্যাখ্যান করা হয়। আরও দেখুন স্পাইক অ্যারেস্ট এবং কোটার মধ্যে পার্থক্য কী ?
কোটা প্লাগইন যোগ করা হচ্ছে
প্লাগইন যোগ করা এবং কনফিগার করা দেখুন।
Apigee এজ-এ পণ্য কনফিগারেশন
আপনি Apigee Edge UI-তে কোটা কনফিগার করেন যেখানে আপনি API পণ্যগুলি কনফিগার করেন। আপনাকে জানতে হবে কোন পণ্যটিতে মাইক্রোগেটওয়ে-সচেতন প্রক্সি রয়েছে যা আপনি একটি কোটা দিয়ে সীমাবদ্ধ করতে চান৷ এই পণ্যটি অবশ্যই একটি বিকাশকারী অ্যাপে যোগ করতে হবে৷ আপনি যখন ডেভেলপার অ্যাপে কী ব্যবহার করে প্রমাণীকৃত API কল করেন, তখন সেই API কলগুলিতে কোটা প্রয়োগ করা হবে।
- আপনার Apigee Edge প্রতিষ্ঠানের অ্যাকাউন্টে লগ ইন করুন।
- এজ UI-তে, মাইক্রোগেটওয়ে-সচেতন প্রক্সির সাথে যুক্ত পণ্যটি খুলুন যেখানে আপনি কোটা প্রয়োগ করতে চান।
- UI-তে, প্রকাশনা মেনু থেকে পণ্য নির্বাচন করুন।
- আপনি কোটা প্রয়োগ করতে চান এমন API ধারণকারী পণ্যটি খুলুন।
- সম্পাদনা ক্লিক করুন.
- কোটা ক্ষেত্রে, কোটার ব্যবধান উল্লেখ করুন। উদাহরণস্বরূপ, প্রতি এক মিনিটে 100টি অনুরোধ। অথবা প্রতি 2 ঘন্টায় 50000টি অনুরোধ।
- Save এ ক্লিক করুন।
- নিশ্চিত করুন যে পণ্যটি একটি বিকাশকারী অ্যাপে যোগ করা হয়েছে। প্রমাণীকৃত API কল করতে আপনার এই অ্যাপ থেকে কীগুলির প্রয়োজন হবে৷
কোটার জন্য নমুনা কনফিগারেশন
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
কোটার জন্য কনফিগারেশন বিকল্প
কোটা প্লাগইন কনফিগার করতে, আপনার কনফিগারেশন ফাইলে quotas
উপাদান যোগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota quotas: bufferSize: hour: 20000 minute: 500 month: 1 default: 10000 useDebugMpId: true failOpen: true isHTTPStatusTooManyRequestEnabled: true ...
অপশন | বর্ণনা |
---|---|
bufferSize | (পূর্ণসংখ্যা) quotas: bufferSize: minute: 500 default: 10000 useDebugMpId: true failOpen: true ডিফল্টরূপে, মাইক্রোগেটওয়ে প্রতি 5 সেকেন্ডে Apigee এজ এর সাথে তার কোটা কাউন্টার সিঙ্ক করে যদি কোটার ব্যবধান "মিনিট" এ সেট করা থাকে। উপরের কনফিগারেশনে বলা হয়েছে যে যদি API পণ্যে কোটার ব্যবধান "মিনিট"-এ সেট করা থাকে, তাহলে Edge Microgateway প্রতি 500 অনুরোধের পরে বা 5 সেকেন্ডের পরে, যেটি আগে আসে, বর্তমান কোটা গণনা পেতে Edge-এর সাথে সিঙ্ক করবে। আরও তথ্যের জন্য, কোটা কিভাবে গণনা করা হয় তা বোঝা দেখুন। অনুমোদিত সময়ের ইউনিটগুলির মধ্যে রয়েছে: |
isHTTPStatusTooManyRequestEnabled | কোটা লঙ্ঘন হলে স্ট্যাটাস 403 এর পরিবর্তে HTTP 429 প্রতিক্রিয়া স্থিতি ফেরাতে কোটা প্লাগইন কনফিগার করে। ডিফল্ট: যদি পতাকা ডিফল্ট HTTP রিটার্ন স্থিতি edgemicro: ... quotas: isHTTPStatusTooManyRequestEnabled: true... |
failOpen | যখন এই বৈশিষ্ট্যটি সক্ষম করা থাকে, যদি একটি কোটা-প্রক্রিয়াকরণ ত্রুটি ঘটে বা যদি এজ-এ "কোটা প্রযোজ্য" অনুরোধটি দূরবর্তী কোটা কাউন্টারগুলি আপডেট করতে ব্যর্থ হয়, তবে পরবর্তী সফল দূরবর্তী কোটা সিঙ্ক না হওয়া পর্যন্ত কোটা স্থানীয় গণনার ভিত্তিতে প্রক্রিয়া করা হবে৷ এই উভয় ক্ষেত্রেই, অনুরোধ অবজেক্টে একটি quota-failed-open পতাকা সেট করা হয়েছে।কোটা "ফেল ওপেন" বৈশিষ্ট্য সক্রিয় করতে, নিম্নলিখিত কনফিগারেশন সেট করুন: edgemicro: ... quotas: failOpen: true... |
useDebugMpId | কোটা প্রতিক্রিয়াগুলিতে এমপি (বার্তা প্রসেসর) আইডির লগিং সক্ষম করতে এই পতাকাটিকে true হিসাবে সেট করুন৷এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনাকে অবশ্যই নিম্নলিখিত কনফিগারেশন সেট করতে হবে: edgemicro: ... quotas: useDebugMpId: true ... যখন { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis | true হিসাবে সেট করা হলে প্লাগইনটি কোটা ব্যাকিং স্টোরের জন্য Redis ব্যবহার করে। বিস্তারিত জানার জন্য, কোটার জন্য একটি Redis ব্যাকিং স্টোর ব্যবহার করা দেখুন। |
কোটা কিভাবে গণনা করা হয় তা বোঝা
ডিফল্টরূপে, মাইক্রোগেটওয়ে প্রতি 5 সেকেন্ডে Apigee এজ এর সাথে তার কোটা কাউন্টার সিঙ্ক করে যদি কোটার ব্যবধান "মিনিট" এ সেট করা থাকে। যদি ব্যবধানটি "মিনিট" এর চেয়ে বেশি একটি স্তরে সেট করা হয়, যেমন "সপ্তাহ" বা "মাস", ডিফল্ট রিফ্রেশ সময়কাল 1 মিনিট।
এটা মনে রাখা গুরুত্বপূর্ণ যে আপনি API পণ্যগুলিতে কোটা ব্যবধান নির্দিষ্ট করেন যা Apigee Edge-এ সংজ্ঞায়িত করা হয়েছে। একটি মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাসের জন্য কতগুলি অনুরোধ অনুমোদিত তা কোটা ব্যবধানগুলি নির্দিষ্ট করে৷ উদাহরণস্বরূপ, পণ্য A-তে প্রতি মিনিটে 100টি অনুরোধের একটি কোটা ব্যবধান থাকতে পারে এবং পণ্য B-এর প্রতি ঘন্টায় 10,000 অনুরোধের কোটার ব্যবধান থাকতে পারে।
এজ মাইক্রোগেটওয়ে quota
প্লাগইনের YAML কনফিগারেশন কোটা ব্যবধান সেট করে না ; বরং, এটি ফ্রিকোয়েন্সি সামঞ্জস্য করার একটি উপায় প্রদান করে যেখানে একটি স্থানীয় এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স অ্যাপিজি এজ এর সাথে তার কোটা গণনা সিঙ্ক করে।
উদাহরণস্বরূপ, অনুমান করুন যে Apigee Edge-এ নিম্নলিখিত কোটা ব্যবধানের সাথে নির্দিষ্ট করা তিনটি API পণ্য রয়েছে:
- পণ্য A-তে প্রতি মিনিটে 100টি অনুরোধের কোটা রয়েছে
- পণ্য B-এর প্রতি ঘন্টায় 5000টি অনুরোধের কোটা রয়েছে
- পণ্য C এর প্রতি মাসে 1000000 অনুরোধের কোটা রয়েছে
এই কোটা সেটিংসের কথা মাথায় রেখে, এজ মাইক্রোগেটওয়ে quota
প্লাগইন কীভাবে কনফিগার করা উচিত? সেরা অনুশীলন হল এজ মাইক্রোগেটওয়েকে সিঙ্ক ব্যবধানের সাথে কনফিগার করা যা API পণ্যগুলিতে সংজ্ঞায়িত কোটা ব্যবধানের চেয়ে কম। যেমন:
quotas: bufferSize: hour: 2000 minute: 50 month: 1 default: 10000
এই কনফিগারেশনটি পূর্বে বর্ণিত API পণ্যগুলির জন্য নিম্নলিখিত সিঙ্ক ব্যবধানগুলিকে সংজ্ঞায়িত করে:
- পণ্য A "মিনিট" ব্যবধানে সেট করা হয়েছে। Edge Microgateway প্রতি 50 তম অনুরোধ বা 5 সেকেন্ডের পরে, যেটি প্রথমে আসে, Edge-এ সিঙ্ক হবে।
- পণ্য B "ঘন্টা" ব্যবধানে সেট করা হয়েছে। এজ মাইক্রোগেটওয়ে প্রতি 2000 তম অনুরোধ বা 1 মিনিটের পরে, যেটি প্রথমে আসে তা এজের সাথে সিঙ্ক হবে।
- পণ্য C "মাস" ব্যবধানে সেট করা হয়েছে। এজ মাইক্রোগেটওয়ে প্রতিটি একক অনুরোধ বা 1 মিনিটের পরে, যেটি প্রথমে আসে সেগুলির সাথে সিঙ্ক হবে।
প্রতিবার একটি মাইক্রোগেটওয়ে ইনস্ট্যান্স এজ এর সাথে সিঙ্ক হয়, মাইক্রোগেটওয়ের কোটা গণনা পুনরুদ্ধার করা কোটা গণনায় সেট করা হয়।
bufferSize
সেটিংস আপনাকে এজ এর সাথে কোটা কাউন্টার কিভাবে সিঙ্ক করা হয় তা সামঞ্জস্য করতে দেয়। উচ্চ-ট্রাফিক পরিস্থিতিতে, ডিফল্ট সময়-ভিত্তিক সিঙ্ক ট্রিগার হওয়ার আগে bufferSize
সেটিংস বাফার কাউন্টারকে সিঙ্ক করার অনুমতি দেয়।
কোটার সুযোগ বোঝা
কোটা গণনা একটি প্রতিষ্ঠানের একটি পরিবেশে স্কোপ করা হয়. এই সুযোগটি অর্জন করতে, Edge Microgateway একটি কোটা শনাক্তকারী তৈরি করে যা "org + env + appName + productName" এর সংমিশ্রণ।
কোটার জন্য একটি Redis ব্যাকিং স্টোর ব্যবহার করা
কোটার জন্য একটি Redis ব্যাকিং স্টোর ব্যবহার করতে, Synchronizer বৈশিষ্ট্যের জন্য ব্যবহৃত একই কনফিগারেশন ব্যবহার করুন। কোটা স্টোরেজের জন্য Redis ব্যবহার করার জন্য প্রয়োজনীয় মৌলিক কনফিগারেশন নিম্নরূপ:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis*
প্যারামিটারের বিস্তারিত জানার জন্য, সিঙ্ক্রোনাইজার ব্যবহার করা দেখুন।কোটা প্লাগইন পরীক্ষা করা হচ্ছে
কোটা অতিক্রম করা হলে, নিম্নলিখিত বার্তা সহ একটি HTTP 403 স্ট্যাটাস ক্লায়েন্টকে ফেরত দেওয়া হয়:
{"error": "exceeded quota"}
স্পাইক গ্রেফতার এবং কোটার মধ্যে পার্থক্য কি?
হাতে থাকা কাজের জন্য সঠিক টুলটি বেছে নেওয়া গুরুত্বপূর্ণ। কোটা নীতিগুলি এক ঘন্টা, দিন, সপ্তাহ বা মাসের মধ্যে একটি ক্লায়েন্ট অ্যাপকে একটি API এ জমা দেওয়ার অনুমতি দেওয়া অনুরোধ বার্তাগুলির সংখ্যা কনফিগার করে৷ কোটা নীতি একটি বিতরণ করা কাউন্টার বজায় রাখার মাধ্যমে ক্লায়েন্ট অ্যাপগুলিতে খরচের সীমা বলবৎ করে যা আগত অনুরোধগুলিকে সমান করে।
কর্মক্ষম ট্রাফিক ব্যবস্থাপনার পরিবর্তে বিকাশকারী এবং অংশীদারদের সাথে ব্যবসায়িক চুক্তি বা SLA প্রয়োগ করতে একটি কোটা নীতি ব্যবহার করুন। উদাহরণস্বরূপ, একটি বিনামূল্যে পরিষেবার জন্য ট্রাফিক সীমিত করতে একটি কোটা ব্যবহার করা যেতে পারে, যখন অর্থপ্রদানকারী গ্রাহকদের সম্পূর্ণ অ্যাক্সেসের অনুমতি দেয়।
API ট্র্যাফিকের আকস্মিক স্পাইক থেকে রক্ষা করতে স্পাইক অ্যারেস্ট ব্যবহার করুন। সাধারণত, সম্ভাব্য DDoS বা অন্যান্য দূষিত আক্রমণ বন্ধ করতে স্পাইক অ্যারেস্ট ব্যবহার করা হয়।
, আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
এজ মাইক্রোগেটওয়ে v. 3.3.x
শ্রোতা
এই বিষয়টি এজ মাইক্রোগেটওয়ে অপারেটরদের উদ্দেশ্যে যারা মাইক্রোগেটওয়েতে ইনস্টল করা বিদ্যমান প্লাগইনগুলি ব্যবহার করতে চান৷ এটি স্পাইক অ্যারেস্ট এবং কোটা প্লাগইনগুলি নিয়ে বিস্তারিত আলোচনা করে (উভয়টিই ইনস্টলেশনের সাথে অন্তর্ভুক্ত)। আপনি যদি একজন বিকাশকারী হন যিনি নতুন প্লাগইনগুলি বিকাশ করতে চান, কাস্টম প্লাগইনগুলি বিকাশ করুন দেখুন৷
একটি এজ মাইক্রোগেটওয়ে প্লাগইন কি?
একটি প্লাগইন হল একটি Node.js মডিউল যা এজ মাইক্রোগেটওয়েতে কার্যকারিতা যোগ করে। প্লাগইন মডিউলগুলি একটি সামঞ্জস্যপূর্ণ প্যাটার্ন অনুসরণ করে এবং এজ মাইক্রোগেটওয়েকে পরিচিত একটি অবস্থানে সংরক্ষণ করা হয়, মাইক্রোগেটওয়েকে সেগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার এবং লোড করতে সক্ষম করে৷ এজ মাইক্রোগেটওয়েতে বেশ কয়েকটি বিদ্যমান প্লাগইন রয়েছে এবং আপনি কাস্টম প্লাগইনগুলিও তৈরি করতে পারেন, যেমনটি ডেভেলপ কাস্টম প্লাগইনগুলিতে ব্যাখ্যা করা হয়েছে।
এজ মাইক্রোগেটওয়ের সাথে বান্ডিল করা বিদ্যমান প্লাগইন
ইনস্টলেশনের সময় এজ মাইক্রোগেটওয়ের সাথে বেশ কয়েকটি প্লাগইন সরবরাহ করা হয়। নিম্নলিখিত সারণীটি সর্বাধিক ব্যবহৃত কিছু প্লাগইন বর্ণনা করে।
প্লাগইন | ডিফল্টরূপে সক্রিয় | বর্ণনা |
---|---|---|
বিশ্লেষণ | হ্যাঁ | এজ মাইক্রোগেটওয়ে থেকে এপিজি এজ-এ বিশ্লেষণ ডেটা পাঠায়। |
শপথ | হ্যাঁ | এজ মাইক্রোগেটওয়েতে OAuth টোকেন এবং API কী যাচাইকরণ যোগ করে। এজ মাইক্রোগেটওয়ে সেট আপ এবং কনফিগার করা দেখুন। |
কোটা | না | এজ মাইক্রোগেটওয়ের অনুরোধে কোটা প্রয়োগ করে। কোটা সংরক্ষণ এবং পরিচালনা করতে Apigee Edge ব্যবহার করে। কোটা প্লাগইন ব্যবহার করা দেখুন। |
spikearrest | না | ট্রাফিক স্পাইক এবং DoS আক্রমণ থেকে রক্ষা করে। স্পাইক অ্যারেস্ট প্লাগইন ব্যবহার করা দেখুন। |
হেডার-বড় হাতের অক্ষর | না | একটি মন্তব্য করা, নমুনা প্রক্সি ডেভেলপারদের কাস্টম প্লাগইন লিখতে সাহায্য করার জন্য একটি নির্দেশিকা হিসাবে অভিপ্রেত। এজ মাইক্রোগেটওয়ে নমুনা প্লাগইন দেখুন। |
accumulate-অনুরোধ | না | প্লাগইন চেইনের পরবর্তী হ্যান্ডলারের কাছে ডেটা পাঠানোর আগে একটি একক বস্তুতে অনুরোধ ডেটা জমা করে। রূপান্তর প্লাগইনগুলি লেখার জন্য দরকারী যা একটি একক, সঞ্চিত অনুরোধ বিষয়বস্তু অবজেক্টে কাজ করতে হবে। |
accumulate- প্রতিক্রিয়া | না | প্লাগইন চেইনের পরবর্তী হ্যান্ডলারের কাছে ডেটা পাস করার আগে একটি একক বস্তুতে প্রতিক্রিয়া ডেটা জমা করে। রূপান্তর প্লাগইনগুলি লেখার জন্য দরকারী যা একটি একক, সঞ্চিত প্রতিক্রিয়া বিষয়বস্তু অবজেক্টে কাজ করতে হবে। |
রূপান্তর-বড় হাতের অক্ষর | না | অনুরোধ বা প্রতিক্রিয়া ডেটা রূপান্তরিত করে। এই প্লাগইনটি রূপান্তর প্লাগইনের একটি সেরা অনুশীলন বাস্তবায়নের প্রতিনিধিত্ব করে। উদাহরণ প্লাগইন একটি তুচ্ছ রূপান্তর সম্পাদন করে (অনুরোধ বা প্রতিক্রিয়া ডেটাকে বড় হাতের অক্ষরে রূপান্তর করে); যাইহোক, XML থেকে JSON-এর মতো অন্য ধরনের রূপান্তর করার জন্য এটি সহজেই অভিযোজিত হতে পারে। |
json2xm l | না | গ্রহণ বা বিষয়বস্তু-টাইপ হেডারের উপর ভিত্তি করে অনুরোধ বা প্রতিক্রিয়া ডেটা রূপান্তরিত করে। বিস্তারিত জানার জন্য, GitHub-এ প্লাগইন ডকুমেন্টেশন দেখুন । |
কোটা-মেমরি | না | এজ মাইক্রোগেটওয়ের অনুরোধে কোটা প্রয়োগ করে। স্থানীয় মেমরিতে কোটা সঞ্চয় ও পরিচালনা করে। |
স্বাস্থ্য পরীক্ষা | না | এজ মাইক্রোগেটওয়ে প্রক্রিয়া সম্পর্কে তথ্য প্রদান করে -- মেমরি ব্যবহার, সিপিইউ ব্যবহার, ইত্যাদি। প্লাগইন ব্যবহার করতে, আপনার এজ মাইক্রোগেটওয়ে দৃষ্টান্তে URL /healthcheck এ কল করুন। এই প্লাগইনটি একটি উদাহরণ হওয়ার উদ্দেশ্যে করা হয়েছে যা আপনি আপনার নিজের স্বাস্থ্য পরীক্ষা প্লাগইন বাস্তবায়ন করতে ব্যবহার করতে পারেন। |
বিদ্যমান প্লাগইনগুলি কোথায় পাবেন
এজ মাইক্রোগেটওয়ের সাথে বান্ডিল করা বিদ্যমান প্লাগইনগুলি এখানে অবস্থিত, যেখানে [prefix]
হল npm
প্রিফিক্স ডিরেক্টরি। আপনি এই ডিরেক্টরিটি সনাক্ত করতে না পারলে এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে তা দেখুন।
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
প্লাগইন যোগ করা এবং কনফিগার করা
প্লাগইন যোগ এবং কনফিগার করতে এই প্যাটার্ন অনুসরণ করুন:
- এজ মাইক্রোগেটওয়ে বন্ধ করুন।
- একটি এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইল খুলুন। বিশদ বিবরণের জন্য, বিকল্পগুলির জন্য কনফিগারেশন পরিবর্তন করা দেখুন।
-
plugins:sequence
উপাদান, নিম্নরূপ। প্লাগইনগুলি এই তালিকায় যে ক্রমে প্রদর্শিত হবে সেই ক্রমেই কার্যকর করা হয়৷
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- প্লাগইন কনফিগার করুন। কিছু প্লাগইনের ঐচ্ছিক প্যারামিটার থাকে যা আপনি কনফিগার ফাইলে কনফিগার করতে পারেন। উদাহরণস্বরূপ, আপনি স্পাইক অ্যারেস্ট প্লাগইন কনফিগার করতে নিম্নলিখিত স্তবক যোগ করতে পারেন। আরও তথ্যের জন্য স্পাইক অ্যারেস্ট প্লাগইন ব্যবহার করা দেখুন।
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- ফাইলটি সংরক্ষণ করুন।
- আপনি কোন কনফিগারেশন ফাইলটি সম্পাদনা করেছেন তার উপর নির্ভর করে এজ মাইক্রোগেটওয়ে পুনরায় চালু বা পুনরায় লোড করুন।
প্লাগইন-নির্দিষ্ট কনফিগারেশন
আপনি এই ডিরেক্টরিতে একটি প্লাগইন-নির্দিষ্ট কনফিগারেশন তৈরি করে কনফিগার ফাইলে নির্দিষ্ট করা প্লাগইন প্যারামিটারগুলিকে ওভাররাইড করতে পারেন:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
যেখানে [prefix]
হল npm
উপসর্গ ডিরেক্টরি। আপনি এই ডিরেক্টরিটি সনাক্ত করতে না পারলে এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে তা দেখুন।
plugins/<plugin_name>/config/default.yaml
। উদাহরণস্বরূপ, আপনি plugins/spikearrest/config/default.yaml
এ এই ব্লকটি রাখতে পারেন এবং তারা অন্য কোন কনফিগার সেটিংস ওভাররাইড করবে।
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
স্পাইক অ্যারেস্ট প্লাগইন ব্যবহার করে
স্পাইক অ্যারেস্ট প্লাগইন ট্রাফিক স্পাইক থেকে রক্ষা করে। এটি একটি এজ মাইক্রোগেটওয়ে উদাহরণ দ্বারা প্রক্রিয়াকৃত অনুরোধের সংখ্যাকে থ্রোটল করে।
স্পাইক অ্যারেস্ট প্লাগইন যোগ করা হচ্ছে
প্লাগইন যোগ করা এবং কনফিগার করা দেখুন।
স্পাইক গ্রেপ্তারের জন্য নমুনা কনফিগারেশন
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
স্পাইক গ্রেফতারের জন্য কনফিগারেশন বিকল্প
- timeUnit : কত ঘন ঘন স্পাইক অ্যারেস্ট এক্সিকিউশন উইন্ডো রিসেট হয়। বৈধ মান দ্বিতীয় বা মিনিট।
- অনুমতি দিন : টাইমইউনিট চলাকালীন অনুমতি দেওয়ার জন্য সর্বাধিক সংখ্যক অনুরোধ। আপনি যদি একাধিক এজ মাইক্রো প্রসেস চালাচ্ছেন তাও দেখুন।
- bufferSize : (ঐচ্ছিক, ডিফল্ট = 0) যদি bufferSize > 0 হয়, স্পাইক অ্যারেস্ট একটি বাফারে এই সংখ্যক অনুরোধ সঞ্চয় করে। পরবর্তী এক্সিকিউশন "উইন্ডো" হওয়ার সাথে সাথে, বাফার করা অনুরোধগুলি প্রথমে প্রক্রিয়া করা হবে। এছাড়াও একটি বাফার যোগ করা দেখুন।
কিভাবে স্পাইক গ্রেফতার কাজ করে?
একটি নির্দিষ্ট সংখ্যক অনুরোধে ট্রাফিক সীমিত করার উপায় হিসাবে না করে সাধারণত ট্রাফিক স্পাইক থেকে রক্ষা করার উপায় হিসাবে স্পাইক অ্যারেস্টকে ভাবুন। আপনার API এবং ব্যাকএন্ড একটি নির্দিষ্ট পরিমাণ ট্র্যাফিক পরিচালনা করতে পারে এবং স্পাইক অ্যারেস্ট নীতি আপনাকে আপনার চাওয়া সাধারণ পরিমাণে ট্র্যাফিক মসৃণ করতে সহায়তা করে।
রানটাইম স্পাইক অ্যারেস্ট আচরণ আপনার প্রবেশ করা আক্ষরিক প্রতি-মিনিট বা প্রতি-সেকেন্ডের মানগুলি থেকে আপনি যা দেখতে আশা করতে পারেন তার থেকে আলাদা।
উদাহরণস্বরূপ, বলুন আপনি প্রতি মিনিটে 30টি অনুরোধের হার নির্দিষ্ট করেছেন, যেমন:
spikearrest: timeUnit: minute allow: 30
পরীক্ষায়, আপনি ভাবতে পারেন যে আপনি 1 সেকেন্ডে 30টি অনুরোধ পাঠাতে পারেন, যতক্ষণ না সেগুলি এক মিনিটের মধ্যে আসে। কিন্তু নীতিটি সেটিংটি কীভাবে প্রয়োগ করে তা নয়। আপনি যদি এটি সম্পর্কে চিন্তা করেন, 1-সেকেন্ড সময়ের মধ্যে 30টি অনুরোধ কিছু পরিবেশে একটি ছোট স্পাইক হিসাবে বিবেচিত হতে পারে।
আসলে কি হয়, তারপর? স্পাইক-এর মতো আচরণ প্রতিরোধ করতে, স্পাইক অ্যারেস্ট আপনার সেটিংসকে ছোট ব্যবধানে বিভক্ত করে অনুমোদিত ট্র্যাফিককে মসৃণ করে, নিম্নরূপ:
প্রতি মিনিটের হার
প্রতি মিনিটের হার সেকেন্ডের ব্যবধানে অনুরোধে মসৃণ হয়ে যায়। উদাহরণস্বরূপ, প্রতি মিনিটে 30টি অনুরোধ এভাবে মসৃণ করা হয়:
60 সেকেন্ড (1 মিনিট) / 30 = 2-সেকেন্ডের ব্যবধান, বা প্রতি 2 সেকেন্ডে প্রায় 1টি অনুরোধ অনুমোদিত৷ 2 সেকেন্ডের মধ্যে একটি দ্বিতীয় অনুরোধ ব্যর্থ হবে। এছাড়াও, এক মিনিটের মধ্যে একটি 31তম অনুরোধ ব্যর্থ হবে।
প্রতি সেকেন্ডের হার
প্রতি-সেকেন্ডের হার মিলিসেকেন্ডের ব্যবধানে অনুমোদিত অনুরোধে মসৃণ হয়ে যায়। উদাহরণস্বরূপ, 10টি অনুরোধ/সেকেন্ড এভাবে মসৃণ করা হয়:
1000 মিলিসেকেন্ড (1 সেকেন্ড) / 10 = 100-মিলিসেকেন্ড ব্যবধান, বা প্রতি 100 মিলিসেকেন্ডে প্রায় 1টি অনুরোধ অনুমোদিত। 100ms এর মধ্যে একটি দ্বিতীয় অনুরোধ ব্যর্থ হবে। এছাড়াও, এক সেকেন্ডের মধ্যে একটি 11 তম অনুরোধ ব্যর্থ হবে।
সীমা ছাড়িয়ে গেলে
যদি অনুরোধের সংখ্যা নির্দিষ্ট সময়ের ব্যবধানের মধ্যে সীমা অতিক্রম করে, তাহলে স্পাইক অ্যারেস্ট একটি HTTP 503 স্ট্যাটাস সহ এই ত্রুটি বার্তাটি ফেরত দেয়:
{"error": "spike arrest policy violated"}
একটি বাফার যোগ করা হচ্ছে
আপনি নীতিতে একটি বাফার যোগ করার একটি বিকল্প আছে. ধরা যাক আপনি বাফারটি 10-এ সেট করেছেন। আপনি দেখতে পাবেন যে যখন আপনি স্পাইক অ্যারেস্ট সীমা অতিক্রম করেন তখন API অবিলম্বে একটি ত্রুটি ফেরত দেয় না। পরিবর্তে, অনুরোধগুলি বাফার করা হয় (নির্দিষ্ট নম্বর পর্যন্ত), এবং পরবর্তী উপযুক্ত এক্সিকিউশন উইন্ডো উপলব্ধ হওয়ার সাথে সাথে বাফার করা অনুরোধগুলি প্রক্রিয়া করা হয়। ডিফল্ট বাফার সাইজ হল 0।
আপনি যদি একাধিক এজ মাইক্রো প্রসেস চালাচ্ছেন
অনুমোদিত অনুরোধের সংখ্যা নির্ভর করে এজ মাইক্রো ওয়ার্কার প্রসেসের সংখ্যার উপর যা চলছে। স্পাইক অ্যারেস্ট প্রতি কর্মী প্রক্রিয়ার অনুমতিযোগ্য সংখ্যক অনুরোধ গণনা করে। ডিফল্টরূপে, এজ মাইক্রো প্রসেসের সংখ্যা মেশিনে CPU-র সংখ্যার সমান যেখানে এজ মাইক্রো ইনস্টল করা আছে। যাইহোক, আপনি start
কমান্ডে --processes
বিকল্পটি ব্যবহার করে এজ মাইক্রো চালু করার সময় কর্মী প্রক্রিয়ার সংখ্যা কনফিগার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি নির্দিষ্ট সময়ের মধ্যে 100টি অনুরোধে স্পাইক অ্যারেস্ট ট্রিগার করতে চান, এবং আপনি যদি --processes 4
বিকল্পের সাথে এজ মাইক্রোগেটওয়ে শুরু করেন, তাহলে স্পাইক অ্যারেস্ট কনফিগারেশনে allow: 25
সেট করুন। সংক্ষিপ্তভাবে, অঙ্গুষ্ঠের নিয়ম হল allow
কনফিগার প্যারামিটারটিকে "কাঙ্খিত স্পাইক অ্যারেস্ট কাউন্ট / প্রসেসের সংখ্যা" মানতে সেট করা।
কোটা প্লাগইন ব্যবহার করে
একটি কোটা একটি ঘন্টা, দিন, সপ্তাহ বা মাসে একটি এপিআই-এ জমা দেওয়ার অনুমতিপ্রাপ্ত অনুরোধ বার্তাগুলির সংখ্যা নির্দিষ্ট করে৷ যখন একটি অ্যাপ তার কোটা সীমায় পৌঁছে যায়, তখন পরবর্তী API কলগুলি প্রত্যাখ্যান করা হয়। আরও দেখুন স্পাইক অ্যারেস্ট এবং কোটার মধ্যে পার্থক্য কী ?
কোটা প্লাগইন যোগ করা হচ্ছে
প্লাগইন যোগ করা এবং কনফিগার করা দেখুন।
Apigee এজ-এ পণ্য কনফিগারেশন
আপনি Apigee Edge UI-তে কোটা কনফিগার করেন যেখানে আপনি API পণ্যগুলি কনফিগার করেন। আপনাকে জানতে হবে কোন পণ্যটিতে মাইক্রোগেটওয়ে-সচেতন প্রক্সি রয়েছে যা আপনি একটি কোটা দিয়ে সীমাবদ্ধ করতে চান৷ এই পণ্যটি অবশ্যই একটি বিকাশকারী অ্যাপে যোগ করতে হবে৷ আপনি যখন ডেভেলপার অ্যাপে কী ব্যবহার করে প্রমাণীকৃত API কল করেন, তখন সেই API কলগুলিতে কোটা প্রয়োগ করা হবে।
- আপনার Apigee Edge প্রতিষ্ঠানের অ্যাকাউন্টে লগ ইন করুন।
- এজ UI-তে, মাইক্রোগেটওয়ে-সচেতন প্রক্সির সাথে যুক্ত পণ্যটি খুলুন যেখানে আপনি কোটা প্রয়োগ করতে চান।
- UI-তে, প্রকাশনা মেনু থেকে পণ্য নির্বাচন করুন।
- আপনি কোটা প্রয়োগ করতে চান এমন API ধারণকারী পণ্যটি খুলুন।
- সম্পাদনা ক্লিক করুন.
- কোটা ক্ষেত্রে, কোটার ব্যবধান উল্লেখ করুন। উদাহরণস্বরূপ, প্রতি এক মিনিটে 100টি অনুরোধ। অথবা প্রতি 2 ঘন্টায় 50000টি অনুরোধ।
- Save এ ক্লিক করুন।
- নিশ্চিত করুন যে পণ্যটি একটি বিকাশকারী অ্যাপে যোগ করা হয়েছে। প্রমাণীকৃত API কল করতে আপনার এই অ্যাপ থেকে কীগুলির প্রয়োজন হবে৷
কোটার জন্য নমুনা কনফিগারেশন
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
কোটার জন্য কনফিগারেশন বিকল্প
কোটা প্লাগইন কনফিগার করতে, আপনার কনফিগারেশন ফাইলে quotas
উপাদান যোগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota quotas: bufferSize: hour: 20000 minute: 500 month: 1 default: 10000 useDebugMpId: true failOpen: true isHTTPStatusTooManyRequestEnabled: true ...
অপশন | বর্ণনা |
---|---|
bufferSize | (পূর্ণসংখ্যা) quotas: bufferSize: minute: 500 default: 10000 useDebugMpId: true failOpen: true ডিফল্টরূপে, মাইক্রোগেটওয়ে প্রতি 5 সেকেন্ডে Apigee এজ এর সাথে তার কোটা কাউন্টার সিঙ্ক করে যদি কোটার ব্যবধান "মিনিট" এ সেট করা থাকে। উপরের কনফিগারেশনে বলা হয়েছে যে যদি API পণ্যে কোটার ব্যবধান "মিনিট"-এ সেট করা থাকে, তাহলে Edge Microgateway প্রতি 500 অনুরোধের পরে বা 5 সেকেন্ডের পরে, যেটি আগে আসে, বর্তমান কোটা গণনা পেতে Edge-এর সাথে সিঙ্ক করবে। আরও তথ্যের জন্য, কোটা কিভাবে গণনা করা হয় তা বোঝা দেখুন। অনুমোদিত সময়ের ইউনিটগুলির মধ্যে রয়েছে: |
isHTTPStatusTooManyRequestEnabled | কোটা লঙ্ঘন হলে স্ট্যাটাস 403 এর পরিবর্তে HTTP 429 প্রতিক্রিয়া স্থিতি ফেরাতে কোটা প্লাগইন কনফিগার করে। ডিফল্ট: যদি পতাকা ডিফল্ট HTTP রিটার্ন স্থিতি edgemicro: ... quotas: isHTTPStatusTooManyRequestEnabled: true... |
failOpen | যখন এই বৈশিষ্ট্যটি সক্ষম করা থাকে, যদি একটি কোটা-প্রক্রিয়াকরণ ত্রুটি ঘটে বা যদি এজ-এ "কোটা প্রযোজ্য" অনুরোধটি দূরবর্তী কোটা কাউন্টারগুলি আপডেট করতে ব্যর্থ হয়, তবে পরবর্তী সফল দূরবর্তী কোটা সিঙ্ক না হওয়া পর্যন্ত কোটা স্থানীয় গণনার ভিত্তিতে প্রক্রিয়া করা হবে৷ এই উভয় ক্ষেত্রেই, অনুরোধ অবজেক্টে একটি quota-failed-open পতাকা সেট করা হয়েছে।কোটা "ফেল ওপেন" বৈশিষ্ট্য সক্রিয় করতে, নিম্নলিখিত কনফিগারেশন সেট করুন: edgemicro: ... quotas: failOpen: true... |
useDebugMpId | কোটা প্রতিক্রিয়াগুলিতে এমপি (বার্তা প্রসেসর) আইডির লগিং সক্ষম করতে এই পতাকাটিকে true হিসাবে সেট করুন৷এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনাকে অবশ্যই নিম্নলিখিত কনফিগারেশন সেট করতে হবে: edgemicro: ... quotas: useDebugMpId: true ... যখন { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis | true হিসাবে সেট করা হলে প্লাগইনটি কোটা ব্যাকিং স্টোরের জন্য Redis ব্যবহার করে। বিস্তারিত জানার জন্য, কোটার জন্য একটি Redis ব্যাকিং স্টোর ব্যবহার করা দেখুন। |
কোটা কিভাবে গণনা করা হয় তা বোঝা
ডিফল্টরূপে, মাইক্রোগেটওয়ে প্রতি 5 সেকেন্ডে Apigee এজ এর সাথে তার কোটা কাউন্টার সিঙ্ক করে যদি কোটার ব্যবধান "মিনিট" এ সেট করা থাকে। যদি ব্যবধানটি "মিনিট" এর চেয়ে বেশি একটি স্তরে সেট করা হয়, যেমন "সপ্তাহ" বা "মাস", ডিফল্ট রিফ্রেশ সময়কাল 1 মিনিট।
এটা মনে রাখা গুরুত্বপূর্ণ যে আপনি API পণ্যগুলিতে কোটা ব্যবধান নির্দিষ্ট করেন যা Apigee Edge-এ সংজ্ঞায়িত করা হয়েছে। একটি মিনিট, ঘন্টা, দিন, সপ্তাহ বা মাসের জন্য কতগুলি অনুরোধ অনুমোদিত তা কোটা ব্যবধানগুলি নির্দিষ্ট করে৷ উদাহরণস্বরূপ, পণ্য A-তে প্রতি মিনিটে 100টি অনুরোধের একটি কোটা ব্যবধান থাকতে পারে এবং পণ্য B-এর প্রতি ঘন্টায় 10,000 অনুরোধের কোটার ব্যবধান থাকতে পারে।
এজ মাইক্রোগেটওয়ে quota
প্লাগইনের YAML কনফিগারেশন কোটা ব্যবধান সেট করে না ; বরং, এটি ফ্রিকোয়েন্সি সামঞ্জস্য করার একটি উপায় প্রদান করে যেখানে একটি স্থানীয় এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স অ্যাপিজি এজ এর সাথে তার কোটা গণনা সিঙ্ক করে।
উদাহরণস্বরূপ, অনুমান করুন যে Apigee Edge-এ নিম্নলিখিত কোটা ব্যবধানের সাথে নির্দিষ্ট করা তিনটি API পণ্য রয়েছে:
- পণ্য A-তে প্রতি মিনিটে 100টি অনুরোধের কোটা রয়েছে
- পণ্য B-এর প্রতি ঘন্টায় 5000টি অনুরোধের কোটা রয়েছে
- পণ্য C এর প্রতি মাসে 1000000 অনুরোধের কোটা রয়েছে
এই কোটা সেটিংসের কথা মাথায় রেখে, এজ মাইক্রোগেটওয়ে quota
প্লাগইন কীভাবে কনফিগার করা উচিত? সেরা অনুশীলন হল এজ মাইক্রোগেটওয়েকে সিঙ্ক ব্যবধানের সাথে কনফিগার করা যা API পণ্যগুলিতে সংজ্ঞায়িত কোটা ব্যবধানের চেয়ে কম। যেমন:
quotas: bufferSize: hour: 2000 minute: 50 month: 1 default: 10000
এই কনফিগারেশনটি পূর্বে বর্ণিত API পণ্যগুলির জন্য নিম্নলিখিত সিঙ্ক ব্যবধানগুলিকে সংজ্ঞায়িত করে:
- পণ্য A "মিনিট" ব্যবধানে সেট করা হয়েছে। Edge Microgateway প্রতি 50 তম অনুরোধ বা 5 সেকেন্ডের পরে, যেটি প্রথমে আসে, Edge-এ সিঙ্ক হবে।
- পণ্য B "ঘন্টা" ব্যবধানে সেট করা হয়েছে। এজ মাইক্রোগেটওয়ে প্রতি 2000 তম অনুরোধ বা 1 মিনিটের পরে, যেটি প্রথমে আসে তা এজের সাথে সিঙ্ক হবে।
- পণ্য C "মাস" ব্যবধানে সেট করা হয়েছে। এজ মাইক্রোগেটওয়ে প্রতিটি একক অনুরোধ বা 1 মিনিটের পরে, যেটি প্রথমে আসে সেগুলির সাথে সিঙ্ক হবে।
প্রতিবার একটি মাইক্রোগেটওয়ে ইনস্ট্যান্স এজ এর সাথে সিঙ্ক হয়, মাইক্রোগেটওয়ের কোটা গণনা পুনরুদ্ধার করা কোটা গণনায় সেট করা হয়।
bufferSize
সেটিংস আপনাকে এজ এর সাথে কোটা কাউন্টার কিভাবে সিঙ্ক করা হয় তা সামঞ্জস্য করতে দেয়। উচ্চ-ট্রাফিক পরিস্থিতিতে, ডিফল্ট সময়-ভিত্তিক সিঙ্ক ট্রিগার হওয়ার আগে bufferSize
সেটিংস বাফার কাউন্টারকে সিঙ্ক করার অনুমতি দেয়।
কোটার সুযোগ বোঝা
কোটা গণনা একটি প্রতিষ্ঠানের একটি পরিবেশে স্কোপ করা হয়. এই সুযোগটি অর্জন করতে, এজ মাইক্রোগেটওয়ে একটি কোটা শনাক্তকারী তৈরি করে যা "org + env + appName + productName" এর সংমিশ্রণ।
কোটার জন্য একটি Redis ব্যাকিং স্টোর ব্যবহার করা
কোটার জন্য একটি Redis ব্যাকিং স্টোর ব্যবহার করতে, Synchronizer বৈশিষ্ট্যের জন্য ব্যবহৃত একই কনফিগারেশন ব্যবহার করুন। কোটা স্টোরেজের জন্য Redis ব্যবহার করার জন্য প্রয়োজনীয় মৌলিক কনফিগারেশন নিম্নরূপ:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis*
প্যারামিটারের বিস্তারিত জানার জন্য, সিঙ্ক্রোনাইজার ব্যবহার করা দেখুন।কোটা প্লাগইন পরীক্ষা করা হচ্ছে
কোটা অতিক্রম করা হলে, নিম্নলিখিত বার্তা সহ একটি HTTP 403 স্ট্যাটাস ক্লায়েন্টকে ফেরত দেওয়া হয়:
{"error": "exceeded quota"}
স্পাইক গ্রেফতার এবং কোটার মধ্যে পার্থক্য কি?
হাতে থাকা কাজের জন্য সঠিক টুলটি বেছে নেওয়া গুরুত্বপূর্ণ। কোটা নীতিগুলি এক ঘন্টা, দিন, সপ্তাহ বা মাসের মধ্যে একটি ক্লায়েন্ট অ্যাপকে একটি API এ জমা দেওয়ার অনুমতি দেওয়া অনুরোধ বার্তাগুলির সংখ্যা কনফিগার করে৷ কোটা নীতি একটি বিতরণ করা কাউন্টার বজায় রাখার মাধ্যমে ক্লায়েন্ট অ্যাপগুলিতে খরচের সীমা বলবৎ করে যা আগত অনুরোধগুলিকে সমান করে।
কর্মক্ষম ট্রাফিক ব্যবস্থাপনার পরিবর্তে বিকাশকারী এবং অংশীদারদের সাথে ব্যবসায়িক চুক্তি বা SLA প্রয়োগ করতে একটি কোটা নীতি ব্যবহার করুন। উদাহরণস্বরূপ, একটি বিনামূল্যে পরিষেবার জন্য ট্রাফিক সীমিত করতে একটি কোটা ব্যবহার করা যেতে পারে, যখন অর্থপ্রদানকারী গ্রাহকদের সম্পূর্ণ অ্যাক্সেসের অনুমতি দেয়।
API ট্র্যাফিকের আকস্মিক স্পাইক থেকে রক্ষা করতে স্পাইক অ্যারেস্ট ব্যবহার করুন। সাধারণত, সম্ভাব্য DDoS বা অন্যান্য দূষিত আক্রমণ বন্ধ করতে স্পাইক অ্যারেস্ট ব্যবহার করা হয়।