অ্যান্টিপ্যাটার্ন: HTTP পার্সিস্টেন্ট (আবার ব্যবহারযোগ্য কিপ-অ্যালাইভ) কানেকশন বন্ধ করা

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

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

পার্সিস্টেন্ট কানেকশন

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

ব্যাকএন্ড পরিষেবার সাথে যোগাযোগ করার জন্য Apigee Edge পারসিস্টেন্ট কানেকশন ব্যবহার করে। ডিফল্ট হিসেবে কানেকশনটি ৬০ সেকেন্ডের জন্য চালু থাকে। অর্থাৎ, কানেকশন পুলের মধ্যে কোনও কানেকশন ৬০ সেকেন্ডের বেশি সময় ধরে নিষ্ক্রিয় থাকলে, কানেকশনটি বন্ধ হয়ে যায়।

API প্রক্সির TargetEndpoint কনফিগারেশনে নির্দিষ্ট করা keepalive.timeout.millis, নামের একটি প্রপার্টির মাধ্যমে 'কিপ অ্যালাইভ' টাইমআউট পিরিয়ড কনফিগার করা যায়। যেমন, TargetEndpoint-এ নির্দিষ্ট ব্যাকএন্ড পরিষেবার জন্য keep alive সময়সীমা ৩০ সেকেন্ডে সেট করা যেতে পারে।

নিচের উদাহরণে, 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 API প্রক্সিতে নির্দিষ্ট ব্যাকএন্ড পরিষেবার জন্য কিপ-অ্যালাইভ আচরণ নিয়ন্ত্রণ করে। এছাড়াও, এমন একটি প্রপার্টি আছে যা সমস্ত প্রক্সিতে সমস্ত ব্যাকএন্ড পরিষেবার জন্য 'চালু রাখুন' আচরণ কন্ট্রোল করে। মেসেজ প্রসেসর কম্পোনেন্টে HTTPTransport.keepalive.timeout.millis কনফিগার করা যায়। এছাড়াও, এই প্রপার্টির ডিফল্ট ভ্যালু হল ৬০ সেকেন্ড। এই প্রপার্টিতে কোনও পরিবর্তন করলে, Apigee Edge এবং সব API প্রক্সির মধ্যে সব ব্যাকএন্ড পরিষেবার মধ্যে 'কানেকশন চালু রাখা' সংক্রান্ত আচরণ প্রভাবিত হয়।

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

নির্দিষ্ট API প্রক্সি বা মেসেজ প্রসেসরের TargetEndpoint কনফিগারেশনে keepalive.timeout.millis প্রপার্টির মান ০ সেট করে অথবা HTTPTransport.keepalive.timeout.millis-এর মান ০ সেট করে পারসিস্টেন্ট (কিপ অ্যালাইভ) কানেকশন বন্ধ করে দেওয়া সাজেস্ট করা হয় না, কারণ এটি পারফর্ম্যান্সের উপর প্রভাব ফেলবে।

নিচের উদাহরণে, TargetEndpoint কনফিগারেশন 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>

এক বা একাধিক ব্যাকএন্ড পরিষেবার জন্য 'কিপ অ্যালাইভ' কানেকশন বন্ধ করা থাকলে, Edge-কে টার্গেট ব্যাকএন্ড পরিষেবায় প্রতিটি নতুন অনুরোধের জন্য নতুন কানেকশন খুলতে হবে। ব্যাকএন্ড HTTPs হলে, Edge প্রতিটি নতুন অনুরোধের জন্য SSL হ্যান্ডশেকও পারফর্ম করবে, এর ফলে API অনুরোধের সামগ্রিক লেটেন্সি বেড়ে যাবে।

প্রভাব

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

পেশাদার পদ্ধতি

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

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

আরও পড়ুন