Antipattern: Memanggil proxy dalam proxy menggunakan kode kustom atau sebagai target

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Edge memungkinkan Anda memanggil satu Proxy API dari Proxy API lainnya. Fitur ini berguna terutama jika Anda memiliki Proxy API yang berisi kode yang dapat digunakan kembali dan dapat digunakan oleh Proxy API lainnya.

Antipola

Memanggil satu Proxy API dari yang lain menggunakan HTTPTargetConnection di endpoint target atau kode JavaScript kustom akan menyebabkan hop jaringan tambahan.

Memanggil Proxy 2 dari Proxy 1 menggunakan HTTPTargetConnection

Contoh kode berikut memanggil Proxy 2 dari Proxy 1 menggunakan HTTPTargetConnection:

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

Panggil Proxy 2 dari Proxy 1 dari kode JavaScript

Contoh kode berikutnya memanggil Proxy 2 dari Proxy 1 menggunakan JavaScript:

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

Alur Kode

Untuk memahami mengapa hal ini memiliki kerugian yang melekat, kita perlu memahami rute yang diambil oleh permintaan seperti yang ditunjukkan oleh diagram di bawah ini:

Gambar 1: Alur Kode

Seperti yang ditunjukkan dalam diagram, permintaan melewati beberapa komponen terdistribusi, termasuk Router dan Pemroses Pesan.

Dalam contoh kode di atas, memanggil Proxy 2 dari Proxy 1 berarti permintaan harus dirutekan melalui rute tradisional (yaitu Router > MP) saat runtime. Cara ini mirip dengan memanggil API dari klien sehingga membuat beberapa hop jaringan yang menambah latensi. Hop ini tidak diperlukan mengingat bahwa permintaan Proxy 1 telah "mencapai" MP.

Dampak

Memanggil satu Proxy API dari Proxy API lainnya akan menimbulkan hop jaringan yang tidak perlu, yaitu permintaan harus diteruskan dari satu Pemroses Pesan ke Pemroses Pesan lainnya.

Praktik terbaik

  • Gunakan fitur proxy chaining untuk memanggil satu Proxy API dari proxy lainnya. Perantaian proxy lebih efisien karena menggunakan koneksi lokal untuk mereferensikan endpoint target (Proxy API lain).

    Contoh kode ini menunjukkan perantaian proxy menggunakan LocalTargetConnection dalam definisi endpoint Anda:

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

    Proxy API yang dipanggil akan dieksekusi dalam Message Processor yang sama. Dengan demikian, proxy API akan menghindari hop jaringan seperti yang ditunjukkan pada gambar berikut:

    Gambar 2: Alur Kode dengan Perantaian Proxy

Bacaan lebih lanjut