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:
- OpenAPI belirtimi.
- SOAP API'si.
- HTTP ile tetiklenen Azure İşlev Uygulaması veya Mantıksal Uygulama gibi Azure kaynakları.
API Management, aşağıdakiler gibi diğer Azure kaynaklarının API arka ucu olarak kullanılmasını da destekler:
- Service Fabric kümesi.
- Özel bir hizmet.
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.
- Şu anda arka uç devre kesici için yalnızca bir kural yapılandırılabilir.
Ö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: 'http'
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ırlamalar
- 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. - Şu anda arka uç devre kesici için yalnızca bir kural yapılandırılabilir.
İlgili içerik
- Blog: Azure OPENAI Hizmeti ile Azure API Management devre kesicisini ve yük dengelemeyi kullanma
- Azure portalını kullanarak bir Service Fabric arka ucu ayarlayın.