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 Hosted Target.
- Kebijakan ServiceInfo untuk memanggil layanan eksternal sebelum atau sesudah pemanggilan server target di TargetEndpoint.
- Kode kustom ditambahkan ke kebijakan JavaScript atau kebijakan JavaInfo untuk terhubung ke layanan backend.
Koneksi Persisten
Koneksi persisten HTTP, juga disebut HTTP keep-alive atau penggunaan ulang koneksi HTTP, merupakan konsep yang memungkinkan satu Koneksi TCP untuk mengirim dan menerima beberapa permintaan/respons HTTP, 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 {i>default<i}. Artinya, jika koneksi menganggur di kumpulan koneksi untuk lebih dari 60 detik, koneksi akan ditutup.
Periode waktu tunggu keep alive dapat dikonfigurasi melalui properti bernama keepalive.timeout.millis
,
yang ditetapkan dalam konfigurasi TargetEndpoint dari proxy API. Misalnya, tombol {i>keep alive<i}
jangka waktu dapat disetel ke 30 detik untuk layanan backend tertentu di TargetEndpoint.
Pada contoh di bawah, keepalive.timeout.millis
disetel ke 30 detik di TargetEndpoint
konfigurasi:
<!-- /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 keep alive 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 dalam komponen Pemroses Pesan. Properti ini juga memiliki nilai default 60
detik. Melakukan perubahan pada properti ini akan memengaruhi perilaku koneksi tetap aktif antara
Apigee dan semua layanan backend di semua proxy API.
Anti-pola
Menonaktifkan koneksi persisten (tetap aktif) dengan menyetel properti keepalive.timeout.millis
ke 0 dalam konfigurasi TargetEndpoint dari Proxy API tertentu atau
HTTPTransport.keepalive.timeout.millis
hingga 0 pada Pemroses Pesan tidak disarankan karena
maka akan berdampak pada kinerja.
Pada 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 keep alive dinonaktifkan untuk satu atau beberapa layanan backend, Apigee harus membuka koneksi baru untuk setiap permintaan baru ke layanan backend target. Jika backend-nya adalah HTTPs, Apigee juga akan melakukan handshake SSL untuk setiap permintaan baru, menambah terhadap permintaan API.
Dampak
- Meningkatkan waktu respons keseluruhan permintaan API karena Apigee harus membuka koneksi baru dan melakukan handshake SSL untuk setiap permintaan baru.
- Koneksi mungkin habis dalam kondisi lalu lintas yang tinggi, karena perlu waktu untuk melepaskan koneksi kembali ke sistem.
Praktik Terbaik
- Layanan backend harus menerima dan menangani koneksi persisten HTTP sesuai dengan HTTP 1.1 standar.
- Layanan backend harus merespons dengan header
Connection:keep-alive
jika layanan tersebut dapat untuk menangani koneksi yang persisten (tetap aktif). - Layanan backend harus merespons dengan header
Connection:close
jika layanan tidak dapat merespons dan menangani koneksi persisten.
Menerapkan pola ini akan memastikan bahwa Apigee dapat otomatis menangani perilaku persisten atau non-persisten dengan layanan backend, tanpa memerlukan perubahan pada proxy API.