Backend di API Management

BERLAKU UNTUK: Semua tingkatAN API Management

Sebuah backend (atau backend API) di API Management adalah layanan HTTP yang mengimplementasikan API front-end dan operasinya.

Saat mengimpor API tertentu, API Management mengonfigurasi backend API secara otomatis. Misalnya, API Management mengonfigurasi layanan web backend saat mengimpor:

API Management juga mendukung penggunaan sumber daya Azure lainnya sebagai backend API, seperti:

Manfaat backend

API Management mendukung entitas backend sehingga Anda dapat mengelola layanan backend API Anda. Entitas backend merangkum informasi tentang layanan backend, mempromosikan penggunaan kembali di seluruh API dan meningkatkan tata kelola.

Gunakan backend untuk satu atau beberapa hal berikut:

  • Mengotorisasi kredensial permintaan ke layanan backend
  • Manfaatkan fungsionalitas API Management untuk mempertahankan rahasia di Azure Key Vault jika nilai bernama dikonfigurasi untuk autentikasi parameter header atau kueri.
  • Tentukan aturan pemutus sirkuit untuk melindungi backend Anda dari terlalu banyak permintaan
  • Merutekan atau menyeimbangkan beban permintaan ke beberapa backend

Mengonfigurasi dan mengelola entitas backend di portal Azure, atau menggunakan API atau alat Azure.

Mereferensikan backend menggunakan kebijakan layanan set-backend

Setelah membuat backend, Anda dapat mereferensikan backend di API Anda. set-backend-service Gunakan kebijakan untuk mengarahkan permintaan API masuk ke backend. Jika Anda sudah mengonfigurasi layanan web backend untuk API, Anda dapat menggunakan set-backend-service kebijakan untuk mengalihkan permintaan ke entitas backend sebagai gantinya. Contohnya:

<policies>
    <inbound>
        <base />
        <set-backend-service backend-id="myBackend" />
    </inbound>
    [...]
<policies/>

Anda dapat menggunakan logika kondisional dengan set-backend-service kebijakan untuk mengubah backend yang efektif berdasarkan lokasi, gateway yang dipanggil, atau ekspresi lainnya.

Misalnya, berikut adalah kebijakan untuk merutekan lalu lintas ke backend lain berdasarkan gateway yang dipanggil:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Deployment.Gateway.Id == "factory-gateway")">
                <set-backend-service backend-id="backend-on-prem" />
            </when>
            <when condition="@(context.Deployment.Gateway.IsManaged == false)">
                <set-backend-service backend-id="self-hosted-backend" />
            </when>
            <otherwise />
        </choose>
    </inbound>
    [...]
<policies/>

Pemutus sirkuit (pratinjau)

Mulai pratinjau API versi 2023-03-01, API Management mengekspos properti pemutus sirkuit di sumber daya backend untuk melindungi layanan backend agar tidak kewalahan oleh terlalu banyak permintaan.

  • Properti pemutus arus menentukan aturan untuk melakukan perjalanan pemutus sirkuit, seperti jumlah atau persentase kondisi kegagalan selama interval waktu yang ditentukan dan rentang kode status yang menunjukkan kegagalan.
  • Ketika perjalanan pemutus sirkuit, API Management berhenti mengirim permintaan ke layanan backend untuk waktu yang ditentukan, dan mengembalikan respons 503 Layanan Tidak Tersedia kepada klien.
  • Setelah durasi perjalanan yang dikonfigurasi, sirkuit mengatur ulang dan lalu lintas dilanjutkan ke backend.

Pemutus sirkuit backend adalah implementasi pola pemutus sirkuit untuk memungkinkan backend pulih dari situasi kelebihan beban. Ini menambah kebijakan pembatasan tarif umum dan pembatasan konkurensi yang dapat Anda terapkan untuk melindungi gateway API Management dan layanan backend Anda.

Catatan

  • Saat ini, pemutus sirkuit backend tidak didukung di tingkat Konsumsi API Management.
  • Karena sifat arsitektur API Management yang didistribusikan, aturan tripping pemutus arus adalah perkiraan. Instans gateway yang berbeda tidak disinkronkan dan akan menerapkan aturan pemutus arus berdasarkan informasi pada instans yang sama.

Contoh

Gunakan API Management REST API atau templat Bicep atau ARM untuk mengonfigurasi pemutus sirkuit di backend. Dalam contoh berikut, pemutus sirkuit di myBackend dalam perjalanan myAPIM instans API Management ketika ada tiga kode status atau lebih 5xx yang menunjukkan kesalahan server dalam sehari. Pemutus atur ulang sirkuit setelah satu jam.

Sertakan cuplikan yang mirip dengan yang berikut ini di templat Bicep Anda untuk sumber daya backend dengan pemutus sirkuit:

resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-03-01-preview' = {
  name: 'myAPIM/myBackend'
  properties: {
    url: 'https://mybackend.com'
    protocol: 'https'
    circuitBreaker: {
      rules: [
        {
          failureCondition: {
            count: 3
            errorReasons: [
              'Server errors'
            ]
            interval: 'P1D'
            statusCodeRanges: [
              {
                min: 500
                max: 599
              }
            ]
          }
          name: 'myBreakerRule'
          tripDuration: 'PT1H'
        }
      ]
    }
   }
 }

Kumpulan seimbang beban (pratinjau)

Mulai pratinjau API versi 2023-05-01, API Management mendukung kumpulan backend, ketika Anda ingin menerapkan beberapa backend untuk API dan permintaan load-balance di seluruh backend tersebut. Saat ini, kumpulan backend mendukung penyeimbangan beban round-robin.

Gunakan kumpulan backend untuk skenario seperti berikut ini:

  • Sebarkan beban ke beberapa backend, yang mungkin memiliki pemutus sirkuit backend individual.
  • Geser beban dari satu set backend ke yang lain untuk peningkatan (penyebaran biru-hijau).

Untuk membuat kumpulan backend, atur type properti backend ke pool dan tentukan daftar backend yang membentuk kumpulan.

Catatan

  • Saat ini, Anda hanya dapat menyertakan backend tunggal dalam kumpulan backend. Anda tidak dapat menambahkan backend jenis pool ke kumpulan backend lain.
  • Karena sifat terdistribusi dari arsitektur API Management, penyeimbangan beban backend adalah perkiraan. Instans gateway yang berbeda tidak disinkronkan dan akan memuat keseimbangan berdasarkan informasi pada instans yang sama.

Contoh

Gunakan API Management REST API atau templat Bicep atau ARM untuk mengonfigurasi kumpulan backend. Dalam contoh berikut, backend myBackendPool dalam instans API Management myAPIM dikonfigurasi dengan kumpulan backend. Contoh backend di kumpulan diberi nama backend-1 dan backend-2.

Sertakan cuplikan yang mirip dengan yang berikut ini di templat Bicep Anda untuk sumber daya backend dengan kumpulan seimbang beban:

resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-05-01-preview' = {
  name: 'myAPIM/myBackendPool'
  properties: {
    description: 'Load balancer for multiple backends'
    type: 'Pool'
    protocol: 'http'
    url: 'https://example.com'
    pool: {
      services: [
        {
          id: '/backends/backend-1'
        }
        {
          id: '/backends/backend-2'
        }
      ]
    }
  }
}

Pembatasan

Untuk tingkat Pengembang dan Premium, instans API Management yang diterapkan di jaringan virtual internal dapat menimbulkan kesalahan HTTP 500 BackendConnectionFailure saat URL titik akhir gateway dan URL backend adalah sama. Jika Anda mengalami batasan ini, ikuti petunjuk di artikel Pembatasan permintaan API Management Rantai Sendiri dalam mode jaringan virtual internal di blog Komunitas Teknologi.