Aracılığıyla paylaş


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

API Management, arka uç hizmetinin çok fazla istekten etkilenmesini önleyerek arka uç kaynağında 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, 1 saat içinde sunucu hatalarını gösteren üç veya daha fazla 5xx durum kodu olduğunda devreye alır.

Devre kesici 1 saat sonra sıfırlanır. Yanıtta bir Retry-After üst bilgi varsa, devre kesici değeri kabul eder ve istekleri arka uçtan yeniden göndermeden önce belirtilen süreyi bekler.

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-09-01-preview' = {
  name: 'myAPIM/myBackend'
  properties: {
    url: 'https://mybackend.com'
    protocol: 'https'
    circuitBreaker: {
      rules: [
        {
          failureCondition: {
            count: 3
            errorReasons: [
              'Server errors'
            ]
            interval: 'PT1H' 
            statusCodeRanges: [
              {
                min: 500
                max: 599
              }
            ]
          }
          name: 'myBreakerRule'
          tripDuration: 'PT1H'  
          acceptRetryAfter: true
        }
      ]
    }
   }
 }

Yük dengeli havuz

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.

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. Havuza en fazla 30 arka uç ekleyebilirsiniz.
  • 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.

Yük dengeleme seçenekleri

API Management, arka uç havuzları için aşağıdaki yük dengeleme seçeneklerini destekler:

  • Hepsini bir kez deneme: İstekler varsayılan olarak havuzdaki arka uçlar arasında eşit olarak dağıtılır.
  • Ağırlıklı: Ağırlıklar havuzdaki arka uçlara atanır ve istekler arka uçlara her arka uç için atanan göreli ağırlığa göre dağıtılır. Mavi-yeşil dağıtım gerçekleştirme gibi senaryolar için bu seçeneği kullanın.
  • Öncelik tabanlı: Arka uçlar öncelik gruplarında düzenlenir ve istekler öncelik gruplarına göre arka uçlara gönderilir. Bir öncelik grubu içinde istekler arka uçlar arasında eşit olarak veya (atandıysa) her arka uçtan atanan göreli ağırlığa göre dağıtılır.

Not

Düşük öncelikli gruplardaki arka uçlar yalnızca daha yüksek öncelikli gruplardaki tüm arka uçlar devre kesici kuralları atlandığından kullanılamaz durumda olduğunda kullanılır.

Ö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. Her iki arka uç da en yüksek öncelik grubundadır; içinde, arka uç-1,arka uç-2'den daha büyük bir ağırlığa sahiptir.

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-09-01-preview' = {
  name: 'myAPIM/myBackendPool'
  properties: {
    description: 'Load balancer for multiple backends'
    type: 'Pool'
    pool: {
      services: [
        {
          id: '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ApiManagement/service/<APIManagementName>/backends/backend-1'
          priority: 1
          weight: 3
        }
        {
          id: '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ApiManagement/service/<APIManagementName>/backends/backend-2'
          priority: 1
          weight: 1
        }
      ]
    }
  }
}

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.