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 hữu ích, đặc biệt nếu bạn có Proxy API chứa mã có thể sử dụng lại 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 API khác bằng HTTPTargetConnection trong điểm cuối mục tiêu hoặc mã JavaScript tuỳ chỉnh sẽ dẫn đến việc chuyển đổi mạng bổ sung.

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

Mã mẫu sau 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ó nhược điểm, chúng ta cần hiểu lộ trình của một yêu cầu như được minh hoạ trong sơ đồ dưới đây:

Hình 1: Luồng mã

Như mô tả trong sơ đồ, một yêu cầu truyền tải nhiều thành phần được phân phối, bao gồm Bộ định tuyến và Bộ xử lý thông báo.

Trong các mã mẫu ở trên, khi gọi Proxy 2 từ Proxy 1, 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. Điều này tương tự như việc gọi API từ ứng dụng, do đó thực hiện nhiều bước nhảy mạng làm tăng độ trễ. Các bước này không cần thiết vì yêu cầu Proxy 1 đã "tiếp cận" MP.

Mức độ tác động

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

Phương pháp hay nhất

  • Sử dụng tính nă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ả hơn vì sử dụng kết nối cục bộ để tham chiếu điểm cuối đích (một Proxy API khác).

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

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

    Proxy API đã gọi được thực thi trong cùng một Bộ xử lý thông báo. Do đó, Proxy API sẽ tránh được tình trạng chuyển đổi mạng như minh hoạ trong hình sau:

    Hình 2: Luồng mã với chuỗi proxy

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