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

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

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

ลายป้องกัน

การเรียกใช้พร็อกซี 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: โฟลว์ของโค้ด

ตามที่แสดงในแผนภาพ คำขอจะข้ามผ่านคอมโพเนนต์ที่มีการเผยแพร่หลายรายการ รวมถึงเราเตอร์และเครื่องมือประมวลผลข้อความ

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

มีอิทธิพล

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

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

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

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

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

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

    ภาพที่ 2: โฟลว์ของโค้ดที่มีเชนพร็อกซี

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