Back-endy ve službě API Management
PLATÍ PRO: Všechny úrovně služby API Management
Back-end (nebo back-end rozhraní API) ve službě API Management je služba HTTP, která implementuje rozhraní API front-endu a jeho operace.
Při importu určitých rozhraní API služba API Management nakonfiguruje back-end rozhraní API automaticky. Služba API Management například při importu nakonfiguruje back-endovou webovou službu:
- Specifikace OpenAPI.
- ROZHRANÍ API PROTOKOLU SOAP.
- Prostředky Azure, jako je například aplikace funkcí Azure aktivovaná protokolem HTTP nebo aplikace logiky.
SLUŽBA API Management také podporuje použití jiných prostředků Azure jako back-endu rozhraní API, například:
Výhody back-endů
API Management podporuje back-endové entity, abyste mohli spravovat back-endové služby vašeho rozhraní API. Back-endová entita zapouzdřuje informace o back-endové službě a podporuje opakované použití napříč rozhraními API a vylepšené zásady správného řízení.
Použijte back-endy pro jednu nebo více z následujících možností:
- Autorizace přihlašovacích údajů žádostí k back-endové službě
- Pokud jsou pojmenované hodnoty nakonfigurované pro ověřování hlaviček nebo parametrů dotazu, využijte funkce služby API Management k udržování tajných kódů ve službě Azure Key Vault.
- Definování pravidel jističe pro ochranu back-endu před příliš mnoha požadavky
- Směrování nebo vyrovnávání zatížení požadavků na více back-endů
Nakonfigurujte a spravujte back-endové entity na webu Azure Portal nebo pomocí rozhraní API nebo nástrojů Azure.
Referenční back-end s využitím zásad služby set-back-end
Po vytvoření back-endu můžete v rozhraních API odkazovat na back-end. set-backend-service
Pomocí zásad nasměrujte příchozí požadavek rozhraní API na back-end. Pokud jste už nakonfigurovali back-endovou webovou službu pro rozhraní API, můžete tuto zásadu použít set-backend-service
k přesměrování požadavku na entitu back-endu. Příklad:
<policies>
<inbound>
<base />
<set-backend-service backend-id="myBackend" />
</inbound>
[...]
<policies/>
Pomocí podmíněné logiky se set-backend-service
zásadami můžete změnit efektivní back-end na základě umístění, volané brány nebo jiných výrazů.
Tady je například zásada pro směrování provozu do jiného back-endu na základě volané brány:
<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/>
Jistič
Služba API Management zveřejňuje vlastnost jističe v back-endovém prostředku za účelem ochrany back-endové služby před zahlcením příliš mnoha žádostí.
- Vlastnost jističe definuje pravidla pro jízdu jističe, například počet nebo procento podmínek selhání během definovaného časového intervalu a rozsah stavových kódů, které označují chyby.
- Když dojde k přerušení okruhu, služba API Management přestane odesílat požadavky do back-endové služby po definovanou dobu a vrátí odpověď na službu 503 Není k dispozici klientovi.
- Po nakonfigurované době trvání jízdy se okruh resetuje a provoz se obnoví do back-endu.
Jistič back-endu je implementace modelu jističe, který umožňuje back-endu zotavit se z přetížených situací. Rozšiřuje obecné zásady omezování rychlosti a souběžnosti , které můžete implementovat za účelem ochrany brány služby API Management a back-endových služeb.
Poznámka:
- Back-endový jistič se v současné době nepodporuje ve vrstvě Consumption služby API Management.
- Vzhledem k distribuované povaze architektury služby API Management jsou pravidla jízdy jističe přibližná. Různé instance brány se nesynchronizují a použijí pravidla jističe na základě informací o stejné instanci.
- V současné době lze pro jistič back-endu nakonfigurovat pouze jedno pravidlo.
Příklad
Ke konfiguraci jističe v back-endu použijte rozhraní REST API služby API Management nebo šablonu Bicep nebo ARM. V následujícím příkladu jistič v myBackend v instanci API Management myAPIM cesty, pokud existují tři nebo více 5xx
stavových kódů označujících chyby serveru za 1 hodinu.
Jistič se resetuje po 1 hodině. Retry-After
Pokud v odpovědi existuje hlavička, jistič přijme hodnotu a před opětovným odesláním požadavků do back-endu počká na zadaný čas.
Do šablony Bicep pro back-endový prostředek s jističem zahrňte fragment kódu podobný následujícímu:
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
}
]
}
}
}
Fond s vyrovnáváním zatížení
Služba API Management podporuje back-endové fondy, pokud chcete implementovat více back-endů pro rozhraní API a požadavky na vyrovnávání zatížení napříč těmito back-endy.
Back-endový fond použijte pro scénáře, jako jsou například následující:
- Rozdělte zatížení na několik back-endů, které můžou mít jednotlivé back-endové jističe.
- Přesunutí zatížení z jedné sady back-endů na jinou pro upgrade (modré zelené nasazení)
Chcete-li vytvořit back-endový fond, nastavte type
vlastnost back-endu pool
a zadejte seznam back-endů, které tvoří fond.
Poznámka:
- V současné době můžete do back-endového fondu zahrnout jenom jedno back-endy. Back-end typu
pool
nemůžete přidat do jiného back-endového fondu. Do fondu můžete zahrnout až 30 back-endů. - Vzhledem k distribuované povaze architektury služby API Management je vyrovnávání zatížení back-endu přibližné. Různé instance brány se nesynchronizují a budou vyrovnávat zatížení na základě informací ve stejné instanci.
Možnosti vyrovnávání zatížení
API Management podporuje následující možnosti vyrovnávání zatížení pro back-endové fondy:
- Kruhové dotazování: Ve výchozím nastavení se požadavky rovnoměrně distribuují napříč back-endy ve fondu.
- Vážené: Váhy se přiřazují back-endům ve fondu a požadavky se distribuují mezi back-endy na základě relativní váhy přiřazené každému back-endu. Tuto možnost použijte pro scénáře, jako je například provedení modrého zeleného nasazení.
- Na základě priority: Back-endy jsou uspořádány do skupin priority a požadavky se odesílají do back-endů v pořadí skupin s prioritou. V rámci skupiny priorit se požadavky distribuují rovnoměrně mezi back-endy nebo (pokud jsou přiřazené) podle relativní váhy přiřazené každému back-endu.
Poznámka:
Back-endy ve skupináchsch zařízení s nižší prioritou se použijí jenom v případech, kdy jsou všechny back-endy ve skupinách s vyšší prioritou nedostupné.
Příklad
Ke konfiguraci back-endového fondu použijte rozhraní REST API služby API management nebo šablonu Bicep nebo ARM. V následujícím příkladu je back-end myBackendPool v instanci služby API Management myAPIM nakonfigurovaný s back-endovým fondem. Ukázkové back-endy ve fondu se nazývají back-end-1 a back-end-2. Oba back-endy jsou ve skupině s nejvyšší prioritou; v rámci skupiny má back-end-1 větší váhu než back-end-2 .
Do šablony Bicep pro back-endový prostředek s fondem s vyrovnáváním zatížení zahrňte fragment kódu podobný následujícímu:
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
}
]
}
}
}
Omezení
- U úrovní Developer a Premium může instance služby API Management nasazená v interní virtuální síti vyvolat chyby HTTP 500
BackendConnectionFailure
, pokud je adresa URL koncového bodu brány a adresa URL back-endu stejná. Pokud narazíte na toto omezení, postupujte podle pokynů v článku o interním režimu virtuální sítě na blogu Tech Community v omezení požadavků služby API Management v rámci samoobslužného řetězení. - V současné době lze pro jistič back-endu nakonfigurovat pouze jedno pravidlo.
Související obsah
- Blog: Použití jističe Azure API Management a vyrovnávání zatížení se službou Azure OpenAI
- Nastavte back-end Service Fabric pomocí webu Azure Portal.