API Management'ta arka uçlar

UYGULANANLAR: Tüm API Management katmanları

API Management'taki arka uç (veya API arka ucu), ön uç API'nizi ve işlemlerini uygulayan bir HTTP hizmetidir.

Belirli API'leri içeri aktarırken API Management, API arka ucu otomatik olarak yapılandırılır. Örneğin, API Management içeri aktarırken arka uç web hizmetini yapılandırıyor:

API Management, aşağıdakiler gibi diğer Azure kaynaklarının API arka ucu olarak kullanılmasını da destekler:

Arka uçların avantajları

API Management, API'nizin arka uç hizmetlerini yönetebilmeniz için arka uç varlıklarını destekler. Arka uç varlığı, arka uç hizmeti hakkındaki bilgileri kapsülleyerek API'ler arasında yeniden kullanılabilirliği ve geliştirilmiş idareyi destekler.

Aşağıdakilerden biri veya daha fazlası için arka uçları kullanın:

  • Arka uç hizmetine yönelik isteklerin kimlik bilgilerini yetkilendirme
  • Adlandırılmış değerler üst bilgi veya sorgu parametresi kimlik doğrulaması için yapılandırılmışsa , Azure Key Vault'ta gizli dizileri korumak için API Management işlevinden yararlanın.
  • Arka ucunuzu çok fazla istekten korumak için devre kesici kuralları tanımlama
  • İstekleri birden çok arka uca yönlendirme veya yük dengeleme

Azure portalında veya Azure API'lerini veya araçlarını kullanarak arka uç varlıklarını yapılandırın ve yönetin.

Set-backend-service ilkesini kullanarak arka uca başvurma

Arka uç oluşturduktan sonra API'lerinizdeki arka uça başvurabilirsiniz. set-backend-service Gelen API isteğini arka uçtan yönlendirmek için ilkeyi kullanın. Api için zaten bir arka uç web hizmeti yapılandırdıysanız, isteği bunun yerine bir arka uç varlığına yönlendirmek için ilkeyi kullanabilirsiniz set-backend-service . Örneğin:

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

Geçerli arka ucu konuma, çağrılan ağ geçidine veya diğer ifadelere göre değiştirmek için ilkeyle set-backend-service koşullu mantık kullanabilirsiniz.

Örneğin, çağrılan ağ geçidine göre trafiği başka bir arka uçtan yönlendirmeye yönelik bir ilke aşağıda verilmiştir:

<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/>

Devre kesici (önizleme)

API 2023-03-01 önizleme sürümünden başlayarak, API Management arka uç hizmetinin çok fazla istek tarafından aşırı yüklenmesini korumak için arka uç kaynağında bir devre kesici özelliğini kullanıma sunar.

  • Devre kesici özelliği, devre kesiciyi trip etmek için tanımlanan zaman aralığındaki hata koşullarının sayısı veya yüzdesi ve hataları gösteren durum kodları aralığı gibi kuralları tanımlar.
  • Devre kesici çalıştığında API Management, tanımlı bir süre için arka uç hizmetine istek göndermeyi durdurur ve istemciye 503 Hizmet Kullanılamıyor yanıtı döndürür.
  • Yapılandırılan yolculuk süresinden sonra devre sıfırlanır ve trafik arka uçta devam eder.

Arka uç devre kesicisi, arka ucun aşırı yükleme durumlarından kurtulmasını sağlamak için devre kesici düzeninin bir uygulamasıdır. API Management ağ geçidini ve arka uç hizmetlerinizi korumak için uygulayabileceğiniz genel hız sınırlama ve eşzamanlılık sınırlama ilkelerini artırır.

Not

  • Şu anda arka uç devre kesici, API Management'ın Tüketim katmanında desteklenmemektedir.
  • API Management mimarisinin dağıtılmış yapısı nedeniyle, devre kesici kopyalama kuralları yaklaşıktır. Ağ geçidinin farklı örnekleri eşitlenmez ve aynı örnekteki bilgilere göre devre kesici kuralları uygular.

Örnek

Arka uçta bir devre kesici yapılandırmak için API Management REST API'sini veya Bicep veya ARM şablonunu kullanın. Aşağıdaki örnekte, myAPIM API Management örneğindeki myBackend'deki devre kesici, bir günde sunucu hatalarını gösteren üç veya daha fazla 5xx durum kodu olduğunda devreye alır. Devre kesici bir saat sonra sıfırlanır.

Devre kesicisi olan bir arka uç kaynağı için Bicep şablonunuzda aşağıdakine benzer bir kod parçacığı ekleyin:

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'
        }
      ]
    }
   }
 }

Yük dengeli havuz (önizleme)

API 2023-05-01 önizleme sürümünden itibaren API Management, bir API için birden çok arka uç uygulamak ve bu arka uçlar arasında yük dengeleme istekleri uygulamak istediğinizde arka uç havuzlarını destekler. Şu anda arka uç havuzu hepsini bir kez deneme yük dengelemeyi destekler.

Aşağıdaki gibi senaryolar için arka uç havuzu kullanın:

  • Yükü, tek tek arka uç devre kesicileri olabilecek birden çok arka uça dağıtın.
  • Yükseltme için yükü bir arka uç kümesinden diğerine (mavi-yeşil dağıtım) kaydırma.

Arka uç havuzu oluşturmak için arka ucun özelliğini olarak pool ayarlayın type ve havuzu oluşturan arka uçların listesini belirtin.

Not

  • Şu anda bir arka uç havuzuna yalnızca tek arka uçlar ekleyebilirsiniz. Türün arka ucu başka bir arka uç pool havuzuna eklenemez.
  • API Management mimarisinin dağıtılmış yapısı nedeniyle arka uç yük dengelemesi yaklaşık olarak yapılır. Ağ geçidinin farklı örnekleri eşitlenmez ve aynı örnekteki bilgilere göre yük dengelemesi yapar.

Örnek

Arka uç havuzunu yapılandırmak için API Management REST API'sini veya Bicep veya ARM şablonunu kullanın. Aşağıdaki örnekte, myAPIM API Management örneğindeki myBackendPool arka ucu bir arka uç havuzuyla yapılandırılır. Havuzdaki örnek arka uçlar arka uç-1 ve arka uç-2 olarak adlandırılır.

Yük dengeli havuza sahip bir arka uç kaynağı için Bicep şablonunuzda aşağıdakine benzer bir kod parçacığı ekleyin:

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'
        }
      ]
    }
  }
}

Sınırlama

Geliştirici ve Premium katmanları için, iç sanal ağda dağıtılan bir API Management örneği, ağ geçidi uç noktası URL'si ile arka uç URL'si aynı olduğunda HTTP 500 BackendConnectionFailure hataları oluşturabilir. Bu sınırlamayla karşılaşırsanız, Teknoloji Topluluğu blogunda iç sanal ağ modunda Kendi Kendine Zincirlenmiş API Management istek sınırlaması makalesindeki yönergeleri izleyin.