Phản mẫu: Gọi một proxy trong proxy bằng cách sử dụng mã tùy chỉnh hoặc làm mục tiêu

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Edge cho phép bạn gọi một Proxy API từ một Proxy API khác. Tính năng này đặc biệt hữu ích khi bạn có một Proxy API chứa mã có thể tái sử dụng mà các proxy API khác có thể sử dụng.

Phản mẫu

Gọi một Proxy API từ một Proxy khác bằng HTTPTargetConnection trong điểm cuối mục tiêu hoặc mã JavaScript tuỳ chỉnh dẫn đến hop mạng bổ sung.

Gọi proxy 2 từ Proxy 1 bằng HTTPTargetConnection

Mã mẫu sau đây gọi Proxy 2 từ Proxy 1 bằng HTTPTargetConnection:

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

Gọi Proxy 2 từ Proxy 1 từ mã JavaScript

Mã mẫu tiếp theo gọi Proxy 2 từ Proxy 1 bằng JavaScript:

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

Luồng mã

Để hiểu lý do tại sao điều này vốn có bất lợi, chúng ta cần tìm hiểu lộ trình của một yêu cầu được minh hoạ trong sơ đồ dưới đây:

Hình 1: Luồng mã

Như được mô tả trong biểu đồ, một yêu cầu truyền tải qua nhiều thành phần được phân phối, bao gồm Bộ định tuyến và Trình xử lý thư.

Trong các mã mẫu ở trên, việc gọi Proxy 2 từ Proxy 1 có nghĩa là yêu cầu phải được định tuyến thông qua tuyến truyền thống (tức là Bộ định tuyến > MP) trong thời gian chạy. Việc này cũng giống như gọi API từ một máy khách, do đó khiến nhiều bước nhảy mạng tăng thêm độ trễ. Các bước nhảy này không cần thiết khi xem xét rằng yêu cầu Proxy 1 đã "tiếp cận" nghị sĩ

Tác động

Việc gọi một Proxy API từ một Proxy API khác sẽ làm phát sinh những bước nhảy mạng không cần thiết, đó là yêu cầu phải được chuyển từ một Trình xử lý thư tới một Trình xử lý thư khác.

Phương pháp hay nhất

  • Sử dụng chuỗi proxy để gọi một Proxy API từ một Proxy API khác. Tạo chuỗi proxy hiệu quả vì nó sử dụng kết nối cục bộ để tham chiếu điểm cuối mục tiêu (một Proxy API khác).

    Mã mẫu cho thấy chuỗi proxy bằng LocalTargetConnection trong điểm cuối của bạn định nghĩa:

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

    Proxy API đã gọi sẽ được thực thi trong cùng một Bộ xử lý thông báo; nhờ đó, tránh được hop mạng như trong hình sau:

    Hình 2: Luồng mã có chuỗi proxy

Tài liệu đọc thêm