অ্যান্টিপ্যাটার্ন: কাস্টম কোড ব্যবহার করে বা টার্গেট হিসেবে প্রক্সির মধ্যে প্রক্সি ইনভোক করা

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

Edge আপনাকে একটি API প্রক্সি থেকে অন্য API প্রক্সি ইনভোক করতে দেয়। এই ফিচারটি বিশেষ করে তখনই কাজে লাগে যখন আপনার কাছে এমন API প্রক্সি থাকে যাতে এমন কোড থাকে যা অন্যান্য API প্রক্সি ব্যবহার করতে পারে।

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

টার্গেট এন্ডপয়েন্টে HTTPTargetConnection ব্যবহার করে অথবা কাস্টম জাভাস্ক্রিপ্ট কোড ব্যবহার করে একটি API প্রক্সি থেকে অন্য একটিকে ইনভোক করলে অতিরিক্ত নেটওয়ার্ক হপ হয়।

HTTPTargetConnection ব্যবহার করে Proxy 1 থেকে Proxy 2 ইনভোক করা

নিচের কোড স্যাম্পেলটি HTTPTargetConnection ব্যবহার করে Proxy 1 থেকে Proxy 2-কে ইনভোক করে:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>http://myorg-test.apigee.net/proxy2</URL>
</HTTPTargetConnection>

জাভাস্ক্রিপ্ট কোড থেকে Proxy 1-এর মাধ্যমে Proxy 2-কে ইনভোক করা

পরবর্তী কোড স্যাম্পেলটি জাভাস্ক্রিপ্ট ব্যবহার করে Proxy 1 থেকে Proxy 2-কে ইনভোক করে:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

কোড ফ্লো

এটি কেন একটি অন্তর্নিহিত অসুবিধা তা বুঝতে, আমাদের বুঝতে হবে যে একটি অনুরোধ কোন রুট নেয়, যা নিচের ডায়াগ্রামে দেখানো হয়েছে:

ছবি ১: কোড ফ্লো

ডায়াগ্রামে দেখানো হয়েছে যে, একটি অনুরোধ একাধিক ডিস্ট্রিবিউট করা কম্পোনেন্টকে অতিক্রম করে, যার মধ্যে রাউটার ও মেসেজ প্রসেসর অন্তর্ভুক্ত।

উপরের কোড স্যাম্পেলে, Proxy 1 থেকে Proxy 2-কে ইনভোক করার অর্থ হল, রানটাইমে অনুরোধটিকে প্রথাগত রুট (অর্থাৎ, রাউটার > MP) দিয়ে রাউট করতে হবে। এটি ক্লায়েন্ট থেকে API ইনভোক করার মতো হবে, এর ফলে একাধিক নেটওয়ার্ক হপ তৈরি হবে যা লেটেন্সি বাড়িয়ে দেবে। এইসব হপ অপ্রয়োজনীয় কারণ Proxy 1-এর অনুরোধ আগেই MP-তে "পৌঁছে গেছে"।

প্রভাব

একটি API প্রক্সি থেকে অন্য একটি API প্রক্সি ইনভোক করলে অপ্রয়োজনীয় নেটওয়ার্ক হপ হয়, অর্থাৎ অনুরোধটি একটি মেসেজ প্রসেসর থেকে অন্য মেসেজ প্রসেসরে পাস করতে হয়।

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

  • একটি API প্রক্সি থেকে অন্য একটিকে ইনভোক করার জন্য প্রক্সি চেইনিং ফিচার ব্যবহার করুন। প্রক্সি চেইনিং আরও দক্ষ কারণ এটি টার্গেট এন্ডপয়েন্ট (অন্য API প্রক্সি) রেফারেন্স করার জন্য লোকাল কানেকশন ব্যবহার করে।

    কোড স্যাম্পেলটি আপনার এন্ডপয়েন্ট সংজ্ঞায় LocalTargetConnection ব্যবহার করে প্রক্সি চেইনিং দেখায়:

    <!-- /antipatterns/examples/2-3.xml -->
    <LocalTargetConnection>
      <APIProxy>proxy2</APIProxy>
      <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>

    একই মেসেজ প্রসেসরের মধ্যে ইনভোক করা API প্রক্সি এক্সিকিউট করা হয়; এর ফলে, এটি নিচের ছবিতে দেখানো নেটওয়ার্ক হপ এড়িয়ে যায়:

    ছবি ২: প্রক্সি চেইনিং সহ কোড ফ্লো

আরও পড়ুন