অ্যান্টিপ্যাটার্ন: HTTP স্থায়ী (পুনরায় ব্যবহারযোগ্য রাখা-জীবিত) সংযোগগুলি অক্ষম করুন

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

একটি API প্রক্সি ব্যাকএন্ড পরিষেবাগুলির সাথে সংযোগ করতে ব্যবহৃত ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য একটি ইন্টারফেস। Apigee Edge একটি API প্রক্সির মাধ্যমে ব্যাকএন্ড পরিষেবার সাথে সংযোগ করার একাধিক উপায় প্রদান করে:

অবিরাম সংযোগ

HTTP ক্রমাগত সংযোগ , যাকে HTTP কিপ-লাইভ বা HTTP সংযোগ পুনঃব্যবহারও বলা হয়, এটি এমন একটি ধারণা যা প্রতিটি অনুরোধ/প্রতিক্রিয়া জোড়ার জন্য একটি নতুন সংযোগ খোলার পরিবর্তে একটি একক TCP সংযোগ একাধিক HTTP অনুরোধ /প্রতিক্রিয়া পাঠাতে এবং গ্রহণ করতে দেয়।

Apigee Edge ব্যাকএন্ড পরিষেবাগুলির সাথে যোগাযোগের জন্য অবিরাম সংযোগ ব্যবহার করে। একটি সংযোগ ডিফল্টরূপে 60 সেকেন্ডের জন্য জীবিত থাকে। অর্থাৎ, যদি একটি সংযোগ সংযোগ পুলে 60 সেকেন্ডের বেশি সময় ধরে নিষ্ক্রিয় থাকে, তাহলে সংযোগটি বন্ধ হয়ে যায়।

একটি API প্রক্সির TargetEndpoint কনফিগারেশনে নির্দিষ্ট করা, keepalive.timeout.millis নামের একটি বৈশিষ্ট্যের মাধ্যমে জীবিত রাখার সময়সীমার সময়কাল কনফিগার করা যায়। উদাহরণস্বরূপ, টার্গেটএন্ডপয়েন্টে একটি নির্দিষ্ট ব্যাকএন্ড পরিষেবার জন্য জীবিত রাখার সময়কাল 30 সেকেন্ডে সেট করা যেতে পারে।

নীচের উদাহরণে, keepalive.timeout.millis টার্গেটএন্ডপয়েন্ট কনফিগারেশনে 30 সেকেন্ডে সেট করা হয়েছে:

<!-- /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 একটি API প্রক্সিতে একটি নির্দিষ্ট ব্যাকএন্ড পরিষেবার জন্য বেঁচে থাকার আচরণ নিয়ন্ত্রণ করে। এমন একটি সম্পত্তি রয়েছে যা সমস্ত প্রক্সিতে সমস্ত ব্যাকএন্ড পরিষেবার জন্য জীবন্ত আচরণ নিয়ন্ত্রণ করে। HTTPTransport.keepalive.timeout.millis মেসেজ প্রসেসর উপাদানে কনফিগারযোগ্য। এই সম্পত্তির একটি ডিফল্ট মান 60 সেকেন্ডও রয়েছে। এই সম্পত্তিতে কোনো পরিবর্তন করা Apigee Edge এবং সমস্ত API প্রক্সিতে সমস্ত ব্যাকএন্ড পরিষেবার মধ্যে জীবিত সংযোগ আচরণকে প্রভাবিত করে।

অ্যান্টিপ্যাটার্ন

একটি নির্দিষ্ট API প্রক্সির TargetEndpoint কনফিগারেশনে keepalive.timeout.millis সম্পত্তি 0 তে সেট করে বা মেসেজ প্রসেসরগুলিতে HTTPTransport.keepalive.timeout.millis 0 তে সেট করে স্থায়ী (জীবিত রাখুন) সংযোগগুলি অক্ষম করা বাঞ্ছনীয় নয় কারণ এটি কর্মক্ষমতাকে প্রভাবিত করবে .

নীচের উদাহরণে, TargetEndpoint কনফিগারেশন একটি নির্দিষ্ট ব্যাকএন্ড পরিষেবার জন্য 0-এ keepalive.timeout.millis করে স্থায়ী (জীবিত রাখুন) সংযোগগুলি নিষ্ক্রিয় করে:

<!-- /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>

যদি জীবিত সংযোগগুলি এক বা একাধিক ব্যাকএন্ড পরিষেবার জন্য অক্ষম করা হয়, তাহলে এজ অবশ্যই লক্ষ্য ব্যাকএন্ড পরিষেবা(গুলি) প্রতি নতুন অনুরোধের জন্য একটি নতুন সংযোগ খুলতে হবে৷ যদি ব্যাকএন্ডটি HTTPs হয়, তাহলে এজ প্রতিটি নতুন অনুরোধের জন্য SSL হ্যান্ডশেকও করবে, যা API অনুরোধের সামগ্রিক লেটেন্সি যোগ করবে।

প্রভাব

  • API অনুরোধের সামগ্রিক প্রতিক্রিয়ার সময় বৃদ্ধি করে কারণ Apigee এজকে অবশ্যই একটি নতুন সংযোগ খুলতে হবে এবং প্রতিটি নতুন অনুরোধের জন্য SSL হ্যান্ডশেক করতে হবে।
  • উচ্চ ট্রাফিক পরিস্থিতিতে সংযোগগুলি শেষ হয়ে যেতে পারে, কারণ এটি সিস্টেমে সংযোগগুলি ছেড়ে দিতে কিছু সময় নেয়।

সর্বোত্তম অনুশীলন

  • ব্যাকএন্ড পরিষেবাগুলিকে HTTP 1.1 মান অনুসারে HTTP স্থায়ী সংযোগকে সম্মান করা এবং পরিচালনা করা উচিত।
  • ব্যাকএন্ড পরিষেবাগুলি একটি Connection:keep-alive হেডার যদি তারা অবিরাম (জীবিত রাখতে) সংযোগগুলি পরিচালনা করতে সক্ষম হয়।
  • ব্যাকএন্ড পরিষেবাগুলি একটি Connection:close যদি তারা স্থায়ী সংযোগগুলি পরিচালনা করতে অক্ষম হয়।

এই প্যাটার্নটি প্রয়োগ করা নিশ্চিত করবে যে Apigee Edge স্বয়ংক্রিয়ভাবে ব্যাকএন্ড পরিষেবাগুলির সাথে স্থায়ী বা অ-স্থায়ী সংযোগ পরিচালনা করতে পারে, API প্রক্সিতে পরিবর্তনের প্রয়োজন ছাড়াই।

আরও পড়া