Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Proxy API adalah antarmuka untuk aplikasi klien yang digunakan untuk terhubung dengan layanan backend. Apigee menyediakan beberapa cara untuk terhubung ke layanan backend melalui proxy API:
- TargetEndpoint untuk terhubung ke layanan HTTP/HTTPs, NodeJS, atau Target yang Dihosting.
- Kebijakan ServiceCallout untuk memanggil layanan eksternal apa pun sebelum atau setelah pemanggilan server target di TargetEndpoint.
- Kode kustom yang ditambahkan ke kebijakan JavaScript atau kebijakan JavaCallout untuk terhubung ke layanan backend.
Koneksi Persisten
Koneksi persisten HTTP, juga disebut keep-alive HTTP atau penggunaan ulang koneksi HTTP, adalah konsep yang memungkinkan satu koneksi TCP untuk mengirim dan menerima beberapa permintaan HTTP/respons, alih-alih membuka koneksi baru untuk setiap pasangan permintaan/respons.
Apigee menggunakan koneksi persisten untuk berkomunikasi dengan layanan backend. Koneksi tetap aktif selama 60 detik secara default. Artinya, jika koneksi tidak ada aktivitas di kumpulan koneksi selama lebih dari 60 detik, koneksi akan ditutup.
Periode waktu tunggu tetap aktif dapat dikonfigurasi melalui properti bernama keepalive.timeout.millis,
yang ditentukan dalam konfigurasi TargetEndpoint proxy API. Misalnya, periode
keep-alive dapat ditetapkan ke 30 detik untuk layanan backend tertentu di TargetEndpoint.
Dalam contoh di bawah, keepalive.timeout.millis ditetapkan ke 30 detik dalam konfigurasi
TargetEndpoint:
<!-- /antipatterns/examples/disable-persistent-connections-1.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">30000</Property> </Properties> </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections </TargetEndpoint>
Pada contoh di atas, keepalive.timeout.millis mengontrol perilaku tetap aktif untuk
layanan backend tertentu dalam proxy API. Ada juga properti yang mengontrol perilaku tetap aktif
untuk semua layanan backend di semua proxy. HTTPTransport.keepalive.timeout.millis
dapat dikonfigurasi di komponen Message Processor. Properti ini juga memiliki nilai default 60
detik. Melakukan modifikasi apa pun pada properti ini akan memengaruhi perilaku koneksi tetap aktif antara
Apigee dan semua layanan backend di semua proxy API.
Antipola
Menonaktifkan koneksi persisten (tetap aktif) dengan menyetel properti keepalive.timeout.millis
ke 0 dalam konfigurasi TargetEndpoint dari Proxy API tertentu atau menyetel
HTTPTransport.keepalive.timeout.millis ke 0 pada Pemroses Pesan tidak direkomendasikan karena
akan memengaruhi performa.
Dalam contoh di bawah, konfigurasi TargetEndpoint menonaktifkan koneksi persisten (tetap aktif)
untuk layanan backend tertentu dengan menyetel keepalive.timeout.millis ke 0:
<!-- /antipatterns/examples/disable-persistent-connections-2.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">0</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
Jika koneksi tetap aktif dinonaktifkan untuk satu atau beberapa layanan backend, Apigee harus membuka koneksi baru untuk setiap permintaan baru ke layanan backend target. Jika backend adalah HTTPs, Apigee juga akan melakukan handshake SSL untuk setiap permintaan baru, sehingga menambah latensi keseluruhan permintaan API.
Dampak
- Meningkatkan waktu respons keseluruhan permintaan API karena Apigee harus membuka koneksi baru dan melakukan handshake SSL untuk setiap permintaan baru.
- Koneksi dapat habis dalam kondisi traffic tinggi, karena perlu waktu untuk melepaskan koneksi kembali ke sistem.
Praktik Terbaik
- Layanan backend harus mematuhi dan menangani koneksi persisten HTTP sesuai dengan standar HTTP 1.1.
- Layanan backend harus merespons dengan header
Connection:keep-alivejika dapat menangani koneksi persisten (tetap aktif). - Layanan backend harus merespons dengan header
Connection:closejika tidak dapat menangani koneksi persisten.
Dengan menerapkan pola ini, Apigee dapat menangani koneksi persisten atau non-persisten secara otomatis dengan layanan backend, tanpa memerlukan perubahan pada proxy API.