Háttérrendszerek az API Managementben
A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint
Az API Management háttérrendszere (vagy API-háttérrendszere) egy HTTP-szolgáltatás, amely implementálja az előtérbeli API-t és annak műveleteit.
Bizonyos API-k importálásakor az API Management automatikusan konfigurálja az API-háttérrendszert. Az API Management például a háttér webszolgáltatást konfigurálja importáláskor:
- OpenAPI-specifikáció.
- EGY SOAP API.
- Azure-erőforrások, például HTTP által aktivált Azure-függvényalkalmazás vagy logikai alkalmazás.
Az API Management más Azure-erőforrások API-háttérrendszerként való használatát is támogatja, például:
- Service Fabric-fürt.
- Egyéni szolgáltatás.
A háttérrendszer előnyei
Az API Management támogatja a háttérbeli entitásokat, így kezelheti az API háttérszolgáltatásait. A háttérentitások információkat foglalnak össze a háttérszolgáltatásról, elősegítve az API-k újrafelhasználhatóságát és a továbbfejlesztett szabályozást.
Használjon háttérrendszereket az alábbiak közül egyhez vagy többhez:
- A háttérszolgáltatás felé irányuló kérések hitelesítő adatainak engedélyezése
- Használja ki az API Management funkcióit az Azure Key Vault titkos kulcsainak karbantartásához, ha a névvel ellátott értékek a fejléc- vagy lekérdezésparaméter-hitelesítéshez vannak konfigurálva.
- Kapcsolatcsoport-megszakító szabályok definiálása a háttérrendszer túl sok kéréssel szembeni védelméhez
- Kérelmek átirányítása vagy terheléselosztása több háttérrendszernek
Háttérbeli entitások konfigurálása és kezelése az Azure Portalon, vagy Azure API-k vagy eszközök használatával.
Referencia háttérrendszer a set-backend-service szabályzat használatával
A háttérrendszer létrehozása után hivatkozhat a háttérrendszerre az API-kban.
set-backend-service
A házirend használatával egy bejövő API-kérést irányíthat a háttérrendszerbe. Ha már konfigurált egy háttérbeli webszolgáltatást egy API-hoz, a set-backend-service
szabályzattal átirányíthatja a kérést egy háttérentitáshoz. Például:
<policies>
<inbound>
<base />
<set-backend-service backend-id="myBackend" />
</inbound>
[...]
<policies/>
Feljegyzés
Másik lehetőségként használhatja base-url
a következőt: A formátum általában .https://backend.com/api
Ne adjon hozzá perjelet a végén a helytelen konfigurációk elkerülése érdekében. A háttérrendszer és a base-url
HTTP(S) végpontértékének általában egyeznie kell az előtér és a háttérrendszer közötti zökkenőmentes integráció érdekében. Vegye figyelembe, hogy az API Management-példányok hozzáfűzik a háttérszolgáltatás nevét a base-url
.
A feltételes logikával a set-backend-service
szabályzattal módosíthatja a tényleges háttérrendszert a hely, a hívott átjáró vagy más kifejezések alapján.
Itt látható például egy szabályzat, amely átirányítja a forgalmat egy másik háttérrendszerbe a hívott átjáró alapján:
<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/>
Megszakító
Az API Management egy kapcsolatcsoport-megszakító tulajdonságot tesz elérhetővé a háttérerőforrásban, hogy megvédje a háttérszolgáltatást a túl sok kéréstől.
- Az áramkör-megszakító tulajdonság olyan szabályokat határoz meg, amelyekkel a megszakítót át lehet rántani, például a hibaállapotok száma vagy százalékos aránya egy meghatározott időintervallumban, valamint a meghibásodásokat jelző állapotkódok tartománya.
- Amikor az áramkör-megszakító kitér, az API Management egy meghatározott időre leállítja a kérések küldését a háttérszolgáltatásnak, és egy 503 Szolgáltatás nem érhető el választ ad vissza az ügyfélnek.
- A konfigurált utazás időtartama után a kapcsolatcsoport alaphelyzetbe áll, és a forgalom visszaáll a háttérrendszerre.
A háttér áramkör-megszakító az áramkör-megszakító minta implementálása, amely lehetővé teszi a háttérrendszer számára, hogy helyreálljon a túlterhelési helyzetekből. Az API Management-átjáró és a háttérszolgáltatások védelméhez implementálható általános sebességkorlátozó és egyidejűségi korlátozási szabályzatokat bővít.
Feljegyzés
- A háttér-kapcsolatcsoport-megszakító jelenleg nem támogatott az API Management használati szintjén.
- Az API Management-architektúra elosztott jellege miatt a megszakító lecsatolási szabályai hozzávetőlegesek. Az átjáró különböző példányai nem szinkronizálódnak, és az ugyanazon példányra vonatkozó információk alapján alkalmazzák az áramkör-megszakító szabályokat.
- Jelenleg csak egy szabály konfigurálható egy háttérbeli kapcsolatcsoport-megszakítóhoz.
Példa
Az API Management REST API - vagy Bicep- vagy ARM-sablonnal konfigurálhat egy kapcsolatcsoport-megszakítót egy háttérrendszerben. Az alábbi példában az API Management-példány myAPIM-példányában található myBackend kapcsolatcsoport-megszakító három vagy több 5xx
állapotkód jelzi a kiszolgálóhibákat 1 óra alatt.
A megszakító 1 óra elteltével alaphelyzetbe áll.
Retry-After
Ha egy fejléc szerepel a válaszban, a megszakító elfogadja az értéket, és megvárja a megadott időt, mielőtt a kéréseket újra elküldené a háttérrendszernek.
Adjon meg egy, a Bicep-sablonhoz hasonló kódrészletet egy háttérerőforráshoz egy áramkör-megszakítóval:
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
}
]
}
}
}
Elosztott terhelésű készlet
Az API Management támogatja a háttérkészleteket, ha több háttérrendszert szeretne implementálni egy API-hoz, és terheléselosztási kéréseket szeretne végrehajtani ezeken a háttérrendszereken.
Használjon háttérkészletet a következő forgatókönyvekhez:
- Terjessze a terhelést több háttérrendszerre, amelyek különálló háttér-megszakítókkal rendelkezhetnek.
- Helyezze át a terhelést az egyik háttérrendszerről a másikra a frissítéshez (kék-zöld üzembe helyezés).
Háttérkészlet létrehozásához állítsa be a type
háttérrendszer pool
tulajdonságát, és adja meg a készletet alkotó háttérkészletek listáját.
Feljegyzés
- Jelenleg csak egyetlen háttérrendszert vehet fel egy háttérkészletbe. Nem adhat hozzá háttérrendszertípust
pool
egy másik háttérkészlethez. Akár 30 háttérrendszert is felvehet egy készletbe. - Az API Management-architektúra elosztott jellege miatt a háttérbeli terheléselosztás hozzávetőleges. Az átjáró különböző példányai nem szinkronizálódnak, és terheléselosztást végeznek ugyanazon példány adatai alapján.
Terheléselosztási beállítások
Az API Management a következő terheléselosztási beállításokat támogatja a háttérkészletekhez:
- Ciklikus időszeletelés: Alapértelmezés szerint a kérések egyenletesen oszlanak el a készlet háttérrendszerei között.
- Súlyozott: A súlyok a készlet háttérrendszereihez vannak rendelve, a kérések pedig az egyes háttérrendszerekhez rendelt relatív súly alapján oszlanak el a háttérrendszerek között. Ezt a lehetőséget olyan forgatókönyvekhez használhatja, mint a kék-zöld üzembe helyezés végrehajtása.
- Prioritásalapú: A háttérrendszereket prioritási csoportokba rendezik, a kéréseket pedig a rendszer a prioritási csoportok sorrendjében küldi el a háttérrendszereknek. A prioritási csoportban a kérések egyenletesen oszlanak el a háttérrendszerek között, vagy (ha vannak hozzárendelve) az egyes háttérrendszerekhez rendelt relatív súly alapján.
Feljegyzés
Az alacsonyabb prioritású csoportok háttérrendszerei csak akkor lesznek használhatók, ha a magasabb prioritású csoportok összes háttérrendszere nem érhető el, mert az áramkör-megszakító szabályai meg vannak kapcsolva.
Példa
Háttérkészlet konfigurálásához használja az API Management REST API-t , vagy egy Bicep- vagy ARM-sablont. Az alábbi példában a myAPIM API Management-példányban lévő myBackendPool háttérkészlet egy háttérkészlettel van konfigurálva. A készlet háttérrendszerei például a backend-1 és a backend-2 nevet viselik. Mindkét háttérrendszer a legmagasabb prioritású csoportban található; a csoporton belül az 1 . háttérrendszer nagyobb súlyú, mint a háttérrendszer-2 .
Adjon meg egy, a Bicep-sablonhoz hasonló kódrészletet egy elosztott terhelésű készlettel rendelkező háttérerőforráshoz:
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
}
]
}
}
}
Korlátozások
- A fejlesztői és prémium szintű szolgáltatások esetében egy belső virtuális hálózaton üzembe helyezett API Management-példány HTTP 500-es
BackendConnectionFailure
hibákat okozhat, ha az átjáró végpontjának URL-címe és a háttérRENDSZER URL-címe megegyezik. Ha ezt a korlátozást tapasztalja, kövesse az Önláncolt API Management kérés korlátozásának utasításait a belső virtuális hálózati módról szóló cikkben, a Tech Community blogban. - Jelenleg csak egy szabály konfigurálható egy háttérbeli kapcsolatcsoport-megszakítóhoz.
Kapcsolódó tartalom
- Blog: Az Azure API Management kapcsolatcsoport-megszakító és terheléselosztás használata az Azure OpenAI Szolgáltatással
- Állítson be egy Service Fabric-háttérrendszert az Azure Portal használatával.
- Rövid útmutató Háttérkészlet létrehozása az Azure API Managementben a Bicep használatával az OpenAI-kérelmek terheléselosztásához