Antipattern: เรียกใช้พร็อกซีภายในพร็อกซีโดยใช้โค้ดที่กำหนดเองหรือใช้เป็นเป้าหมาย

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

Edge ให้คุณเรียกใช้พร็อกซี API หนึ่งจากพร็อกซี API อื่นได้ ฟีเจอร์นี้จะเป็นประโยชน์อย่างยิ่งหาก คุณมีพร็อกซี API ที่มีรหัสที่นำมาใช้ใหม่ได้ซึ่งพร็อกซี API อื่นๆ สามารถใช้ได้

ลาย Antipattern

เรียกใช้พร็อกซี API หนึ่งจากอีกพร็อกซีหนึ่งโดยใช้ HTTPTargetConnection ในปลายทางเป้าหมาย หรือ โค้ด JavaScript ที่กำหนดเองจะทำให้เกิดการ Hop เครือข่ายเพิ่มเติม

เรียกใช้พร็อกซี 2 จากพร็อกซี 1 โดยใช้ HTTPTargetConnection

ตัวอย่างโค้ดต่อไปนี้เรียกใช้พร็อกซี 2 จากพร็อกซี 1 โดยใช้ HTTPTargetConnection

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

เรียกใช้พร็อกซี 2 จากพร็อกซี 1 จากโค้ด JavaScript

ตัวอย่างโค้ดถัดไปเรียกใช้พร็อกซี 2 จากพร็อกซี 1 โดยใช้ JavaScript

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

โฟลว์ของรหัส

เราต้องเข้าใจเส้นทางการส่งคำขอเพื่อให้เข้าใจถึงข้อได้เปรียบที่แท้จริง ดังที่แสดงในแผนภาพด้านล่าง

วันที่
รูปที่ 1: โฟลว์ของโค้ด

ดังที่แสดงในแผนภาพ คำขอจะข้ามผ่านองค์ประกอบที่กระจายอยู่หลายส่วน รวมถึง Router และ Message Processor

ในตัวอย่างโค้ดข้างต้น การเรียกใช้พร็อกซี 2 จากพร็อกซี 1 หมายความว่าคำขอต้องได้รับการกำหนดเส้นทาง ผ่านเส้นทางดั้งเดิม (เช่น เราเตอร์ > MP) ขณะรันไทม์ ซึ่งคล้ายกับการเรียกใช้ API จากไคลเอ็นต์ จึงเป็นการสร้างการรับส่งเครือข่ายจำนวนมากที่ช่วยเพิ่มเวลาในการตอบสนอง การกระโดดเหล่านี้ ไม่จำเป็นเพราะคำขอพร็อกซี 1 "ถึง" แล้ว ส.

ผลกระทบ

การเรียกใช้พร็อกซี API หนึ่งจากพร็อกซี API อื่นทำให้เกิดการรับส่งเครือข่ายที่ไม่จำเป็น คำขอจะต้องถูกส่งต่อจากผู้ประมวลผลข้อความหนึ่งไปยังโปรแกรมประมวลผลข้อความอีกรายหนึ่ง

แนวทางปฏิบัติแนะนำ

  • ใช้การเชื่อมโยงพร็อกซี สำหรับการเรียกพร็อกซี API หนึ่งจากอีกพร็อกซีหนึ่ง ทำเชนพร็อกซีได้ง่ายกว่า มีประสิทธิภาพเนื่องจากใช้การเชื่อมต่อภายในเพื่ออ้างอิงปลายทางเป้าหมาย (พร็อกซี API อื่น)

    ตัวอย่างโค้ดแสดงการเชื่อมโยงพร็อกซีโดยใช้ LocalTargetConnection ในปลายทางของคุณ คำจำกัดความ:

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

    พร็อกซี API ที่เรียกใช้จะทำงานภายในตัวประมวลผลข้อความเดียวกัน จึงทำให้หลีกเลี่ยง การ Hop เครือข่ายดังที่แสดงในรูปต่อไปนี้

    วันที่
    รูปที่ 2: โฟลว์ของโค้ดกับเชนพร็อกซี

อ่านเพิ่มเติม