Gyakorlat – Webalkalmazás állapot-ellenőrzéseinek hozzáadása
A Contoso Shoesnak módot kell adni a webalkalmazás állapotának API-szinten és függőségeinek ellenőrzésére. Egy dedikált állapot-ellenőrzési végpontot szeretne implementálni az alkalmazáson, amely rendszeres időközönként jelenti az API állapotát.
Aktuális állapot és probléma
A jelenlegi kialakításban az alkalmazás naplózza a hibákat, ha futásidejű problémák vannak az API-kódban, vagy a függő szolgáltatásokra irányuló hívások sikertelenek, például sikertelen adatbázis-lekérdezések. Ez a módszer hasznos az incidensek bekövetkezése utáni problémák elhárításához.
A megközelítés azonban nem proaktív. Azure-alkalmazás szolgáltatás és a külső monitorozási eszközök nem ellenőrizhetik az alkalmazás állapotát. Ez a rés számos használati esetet érint, például a terhelés elosztását. A jelenlegi implementáció kizárólag az App Service-csomag azon legjobb erőfeszítésére támaszkodik, hogy egyenletesen ossza el a forgalmat a példányok között anélkül, hogy az alkalmazás állapotát valaha is ellenőriznie kéne. Egy jelentett incidens során a forgalom nem megfelelő Állapotú App Service-példányokra lett irányítva, ami sikertelen kéréseket eredményezett.
Specifikáció
Hozza létre a dedikált állapotszolgáltatást a már üzembe helyezett kód bővítményeként.
Vezessen be egy állapot-ellenőrzési API-t az alkalmazásban. Az API-nak ellenőriznie kell az alkalmazás és függőségei állapotát, és vissza kell adnia az állapot jelzését. Az API-nak például rendszeresen ellenőriznie kell az olvasási és írási műveleteket az Azure Cosmos DB-be. Ezeket a függvényeket különálló mintavételekként implementálhatja, így az olvasások és írások egymástól függetlenül vannak ellenőrizve.
Tipp.
Az állapot-ellenőrzés kiterjesztése nem funkcionális szolgáltatásokra, például az Azure Key Vaultra és az Azure Container Registryre. Ez a lépés azért fontos, mert ha ezek a szolgáltatások üzemkimaradást tapasztalnak, előfordulhat, hogy hatással van az App Service-példányok újraindulásának skálázási vagy ellenállási képességére.
Az állapot-ellenőrzési API-végpontot gyakran, több forrásból kell meghívni, és nem szabad rontani az API teljesítményét. A Azure-alkalmazás szolgáltatáscsomagnak például percenként kétszer kell elküldenie a kéréseket egy végpontnak, és megalapozott döntéseket kell hoznia arról, hogy mely App Service-példányoknak kell továbbítania a forgalmat.
Az állapot-ellenőrzési API teljesítményének optimalizálása az eredmények 10 másodperces gyorsítótárazásával. Az állapot-ellenőrzési végpontra irányuló lekérdezések nem minden esetben eredményeznek háttérhívást. Ezen válaszok némelyike a gyorsítótárból is kiszolgálható.
Az állapot-ellenőrzési adatok elérhetővé tétele az Azure Monitorban későbbi elemzés céljából.
Ajánlott megközelítés
A tervezés megkezdéséhez ezt a megközelítést javasoljuk.
1– Állapotellenőrzések
Az állapot-ellenőrzési API által küldött összes lekérdezést aszinkron módon és párhuzamosan kell végrehajtani. Állapotellenőrzések tervezése a kritikus fontosságú összetevőkkel, például az adatbázissal. Az API-nak rendszeresen ellenőriznie kell az olvasási és írási műveleteket. Ezeket a függvényeket különálló mintavételekként implementálhatja, így az olvasások és írások egymástól függetlenül vannak ellenőrizve.
Valós alkalmazás viselkedését utánzó kérések használata anélkül, hogy túl sok terhelést helyeznek a szolgáltatásokra csak az állapotmintákból. Az írási kérelmek teszteléséhez meg kell terveznie a tesztadatok hatékony eltávolításának módját, hogy az ne keveredjen a valós felhasználói adatokkal.
2–Gyorsítótárazási minta
Az állapot-ellenőrzési API-nak konfigurálható számú másodpercre kell gyorsítótárazza az eredményeket annak érdekében, hogy ne terhelje túl az alsóbb rétegbeli szolgáltatásokat az állapot-ellenőrzéssel. Gondoljon a cél elérésének lehetséges módjaira.
Ellenőrizze munkáját
Íme egy példa alkalmazás Állapotfigyelő szolgáltatás. A tervezés minden aspektusát lefedte?
- Kompatibilis az állapot-ellenőrzési végpont Azure-alkalmazás szolgáltatás állapot-ellenőrzési funkciójával?
- Tartalmazta a futtatókörnyezeti függőségek ellenőrzését? Mit használt proxyként/tesztként?
- Cosmos DB olvasás/írás
- Külső API
- Gyorsítótárazza az állapot-ellenőrzés eredményeit a teljesítményterhelés csökkentése érdekében?
- Naplózták az eseményeket az állapotellenőrzésekben? Jegyezze fel a sikereket és a hibákat?
- Alkalmazta Azure-alkalmazás Elemzések naplómintavételt az állapotellenőrzési naplókra?