আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
এপিআই প্রক্সি হলো ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য একটি ইন্টারফেস, যা ব্যাকএন্ড পরিষেবাগুলির সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত হয়। Apigee Edge একটি এপিআই প্রক্সির মাধ্যমে ব্যাকএন্ড পরিষেবাগুলির সাথে সংযোগ স্থাপনের একাধিক উপায় প্রদান করে:
- যেকোনো HTTP/HTTPs, NodeJS, বা হোস্টেড টার্গেট সার্ভিসের সাথে সংযোগ করার জন্য টার্গেটএন্ডপয়েন্ট ।
- TargetEndpoint- এ টার্গেট সার্ভারকে কল করার আগে বা পরে যেকোনো বাহ্যিক পরিষেবা কল করার জন্য ServiceCallout পলিসি ।
- ব্যাকএন্ড পরিষেবাগুলির সাথে সংযোগ করার জন্য জাভাস্ক্রিপ্ট পলিসি বা জাভাকলআউট পলিসিতে কাস্টম কোড যোগ করা হয়েছে।
স্থায়ী সংযোগ
HTTP পারসিস্টেন্ট কানেকশন , যা HTTP কিপ-অ্যালাইভ বা HTTP কানেকশন রিইউজ নামেও পরিচিত, এমন একটি ধারণা যা প্রতিটি রিকোয়েস্ট/রেসপন্স জোড়ার জন্য একটি নতুন কানেকশন খোলার পরিবর্তে, একটিমাত্র TCP কানেকশনের মাধ্যমে একাধিক HTTP রিকোয়েস্ট /রেসপন্স পাঠাতে ও গ্রহণ করতে সক্ষম করে।
Apigee Edge ব্যাকএন্ড পরিষেবাগুলির সাথে যোগাযোগের জন্য স্থায়ী সংযোগ ব্যবহার করে। একটি সংযোগ ডিফল্টরূপে ৬০ সেকেন্ডের জন্য সচল থাকে। অর্থাৎ, যদি কোনো সংযোগ ৬০ সেকেন্ডের বেশি সময় ধরে কানেকশন পুলে নিষ্ক্রিয় থাকে, তাহলে সংযোগটি বন্ধ হয়ে যায়।
এপিআই প্রক্সির টার্গেটএন্ডপয়েন্ট কনফিগারেশনে নির্দিষ্ট করা ` keepalive.timeout.millis নামক একটি প্রপার্টির মাধ্যমে কিপ অ্যালাইভ টাইমআউট পিরিয়ড কনফিগার করা যায়। উদাহরণস্বরূপ, টার্গেটএন্ডপয়েন্টে একটি নির্দিষ্ট ব্যাকএন্ড সার্ভিসের জন্য কিপ অ্যালাইভ টাইম পিরিয়ড ৩০ সেকেন্ডে সেট করা যেতে পারে।
নীচের উদাহরণে, TargetEndpoint কনফিগারেশনে keepalive.timeout.millis কে ৩০ সেকেন্ডে সেট করা হয়েছে:
<!-- /antipatterns/examples/disable-persistent-connections-1.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">30000</Property> </Properties> </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections </TargetEndpoint>
উপরের উদাহরণে, keepalive.timeout.millis একটি এপিআই প্রক্সিতে একটি নির্দিষ্ট ব্যাকএন্ড সার্ভিসের জন্য কিপ অ্যালাইভ আচরণ নিয়ন্ত্রণ করে। এছাড়াও একটি প্রপার্টি আছে যা সমস্ত প্রক্সির সমস্ত ব্যাকএন্ড সার্ভিসের জন্য কিপ অ্যালাইভ আচরণ নিয়ন্ত্রণ করে। HTTPTransport.keepalive.timeout.millis প্রপার্টিটি মেসেজ প্রসেসর কম্পোনেন্টে কনফিগার করা যায়। এই প্রপার্টিটির একটি ডিফল্ট মানও রয়েছে, যা হলো ৬০ সেকেন্ড। এই প্রপার্টিতে কোনো পরিবর্তন করলে তা Apigee Edge এবং সমস্ত এপিআই প্রক্সির সমস্ত ব্যাকএন্ড সার্ভিসের মধ্যে কিপ অ্যালাইভ সংযোগের আচরণকে প্রভাবিত করে।
অ্যান্টিপ্যাটার্ন
কোনো নির্দিষ্ট এপিআই প্রক্সির টার্গেটএন্ডপয়েন্ট কনফিগারেশনে keepalive.timeout.millis প্রপার্টির মান 0 সেট করে অথবা মেসেজ প্রসেসরগুলিতে HTTPTransport.keepalive.timeout.millis এর মান 0 সেট করে পারসিস্টেন্ট (কিপ অ্যালাইভ) কানেকশন নিষ্ক্রিয় করার সুপারিশ করা হয় না, কারণ এটি পারফরম্যান্সের উপর প্রভাব ফেলবে।
নীচের উদাহরণে, TargetEndpoint কনফিগারেশনটি keepalive.timeout.millis কে 0 সেট করার মাধ্যমে একটি নির্দিষ্ট ব্যাকএন্ড সার্ভিসের জন্য পারসিস্টেন্ট (কিপ অ্যালাইভ) সংযোগ নিষ্ক্রিয় করে:
<!-- /antipatterns/examples/disable-persistent-connections-2.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">0</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
যদি এক বা একাধিক ব্যাকএন্ড সার্ভিসের জন্য 'কিপ অ্যালাইভ কানেকশন' নিষ্ক্রিয় করা থাকে, তাহলে Edge-কে টার্গেট ব্যাকএন্ড সার্ভিস(গুলি)-তে প্রতিটি নতুন অনুরোধের জন্য একটি নতুন কানেকশন খুলতে হবে। যদি ব্যাকএন্ডটি HTTPs হয়, Edge প্রতিটি নতুন অনুরোধের জন্য SSL হ্যান্ডশেকও সম্পাদন করবে, যা API অনুরোধগুলির সামগ্রিক লেটেন্সি বাড়িয়ে দেবে।
প্রভাব
- এর ফলে এপিআই অনুরোধের সামগ্রিক প্রতিক্রিয়া সময় বেড়ে যায়, কারণ প্রতিটি নতুন অনুরোধের জন্য Apigee Edge-কে একটি নতুন সংযোগ খুলতে এবং SSL হ্যান্ডশেক সম্পন্ন করতে হয়।
- অতিরিক্ত ট্র্যাফিকের সময় সংযোগগুলো শেষ হয়ে যেতে পারে, কারণ সিস্টেমে সংযোগগুলো ফেরত দিতে কিছুটা সময় লাগে।
সর্বোত্তম অনুশীলন
- ব্যাকএন্ড পরিষেবাগুলিকে HTTP 1.1 মান অনুযায়ী HTTP স্থায়ী সংযোগকে সম্মান ও পরিচালনা করতে হবে।
- যদি ব্যাকএন্ড পরিষেবাগুলি স্থায়ী (কিপ-অ্যালাইভ) সংযোগ পরিচালনা করতে সক্ষম হয়, তবে তাদের একটি
Connection:keep-aliveহেডার দিয়ে সাড়া দেওয়া উচিত। - যদি ব্যাকএন্ড পরিষেবাগুলি স্থায়ী সংযোগগুলি পরিচালনা করতে অক্ষম হয়, তবে তাদের
Connection:closeহেডার দিয়ে সাড়া দেওয়া উচিত।
এই প্যাটার্নটি প্রয়োগ করলে, এপিআই প্রক্সিতে কোনো পরিবর্তন না করেই Apigee Edge স্বয়ংক্রিয়ভাবে ব্যাকএন্ড পরিষেবাগুলির সাথে স্থায়ী বা অস্থায়ী সংযোগ পরিচালনা করতে পারবে।