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.
Truy cập vào tài liệu Apigee X.
thông tin

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

Antipattern

Việc gọi một API Proxy từ một API Proxy khác bằng cách sử dụng HTTPTargetConnection trong điểm cuối đích hoặc mã JavaScript tuỳ chỉnh sẽ dẫn đến thêm một bước nhảy mạng.

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 qua mã JavaScript

Mã mẫu tiếp theo sẽ 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 vốn có, chúng ta cần hiểu rõ lộ trình mà một yêu cầu thực hiện như minh hoạ trong sơ đồ bên dưới:

Hình 1: Luồng mã

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

Trong các mẫu mã ở 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 (tức là Router > MP) trong thời gian chạy. Điều này tương tự như việc gọi một API từ một ứng dụng khách, do đó tạo ra nhiều bước nhảy mạng làm tăng độ trễ. Những bước nhảy này là không cần thiết vì yêu cầu Proxy 1 đã "đạt" đến MP.

Tác động

Việc gọi một API Proxy từ một API Proxy khác sẽ gây ra các 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 đến 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 API Proxy từ một API Proxy khác. Việc liên kết bằng proxy hiệu quả hơn vì 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 tính năng liên kết proxy bằ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 được gọi sẽ được thực thi trong cùng một Trình xử lý thông báo; do đó, nó sẽ tránh bước nhảy mạng như minh hoạ trong hình sau:

    Hình 2: Luồng mã có tính năng Liên kết proxy

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