Antipattern: Gọi một proxy trong proxy bằng cách sử dụng mã tùy chỉnh hoặc dưới dạng mục tiêu

Bạn đang xem tài liệu về Apigee Edge.
Xem tài liệu Apigee X.

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 nếu bạn có một Proxy API chứa mã có thể sử dụng lại mà các API khác có thể sử dụng.

Mẫu

Gọi một proxy API từ một proxy khác bằng cách sử dụng HTTPTargetConnection trong điểm cuối mục tiêu hoặc mã JavaScript tùy chỉnh sẽ dẫn đến bước nhảy 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 có một nhược điểm cố định, chúng ta cần phải hiểu về tuyến đường mà yêu cầu đi theo như minh họa bằng 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, 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 đường truyền thống (ví dụ: Bộ định tuyến > MP) trong thời gian chạy. Điều này sẽ tương tự như việc gọi một API từ máy khách, nhờ đó thực hiện nhiều bước mạng để tăng thêm độ trễ. Các bước này là không cần thiết vì yêu cầu Proxy 1 đã "đến" MP.

Mức độ tác động

Việc gọi một Proxy API từ một API API khác sẽ phát sinh những bước nhảy mạng không cần thiết, nghĩa là yêu cầu phải được chuyển từ một Bộ 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 tạo chuỗi proxy để gọi một proxy API từ một API khác. Việc tạo chuỗi proxy hiệu quả hơn vì kết nối cục bộ sử dụng kết nối cục bộ để tham chiếu đến điểm cuối mục tiêu (một API proxy 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 Trình xử lý thông báo. Do đó, proxy này sẽ tránh được bước nhảy mạng như minh hoạ trong hình sau:

    Hình 2: Quy trình mã có tạo chuỗi proxy

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