Megosztás a következőn keresztül:


Architektúrastratégiák a skálázás és particionálás optimalizálásához

Az Azure Well-Architected-keretrendszer teljesítmény-hatékonyság ellenőrzőlistájára vonatkozó javaslat:

PE:05 Skálázás és particionálás optimalizálása. Megbízható és szabályozott skálázás és particionálás beépítése. A számítási feladat méretezési egységeinek kialakítása a skálázási és particionálási stratégia alapja.

Ez az útmutató a számítási feladatok skálázására és particionálására vonatkozó javaslatokat ismerteti. A skálázás lehetővé teszi a számítási feladatokhoz rendelt erőforrások igény szerinti növelését vagy csökkentését. A particionálás magában foglalja a számítási feladat kisebb, kezelhető egységekre való felosztását az adatok és a feldolgozás több erőforrás közötti elosztásához. A nem skálázható vagy partíciót nem használó számítási feladatok gyenge teljesítményt tapasztalhatnak nagy igényű időszakokban, és alacsony igényű időszakokban kihasználatlan kapacitást tapasztalhatnak.

Meghatározások

Időszak Definition
Automatikus skálázás Olyan szolgáltatás, amely automatikusan módosítja egy szolgáltatás kapacitáskorlátait előre meghatározott konfigurációk alapján, lehetővé téve, hogy igény szerint fel- vagy leskálázható legyen.
Capacity Egy adott szolgáltatás vagy szolgáltatás felső korlátja vagy maximális kapacitása.
Ügyfél-affinitás (munkamenet-affinitás) A kérések szándékos átirányítása egyetlen ügyfélről egyetlen kiszolgálópéldányra a konzisztens munkamenet-kezelés biztosítása érdekében.
Konzisztencia (elosztott adatbázis) Az elosztott adatbázisok több csomópontján lévő adatok egységessége, biztosítva, hogy minden replika azonos adatokkal rendelkezzen egy adott időpontban.
Konzisztencia (relációs adatbázis) Egy tranzakció tulajdonsága, amely egy adatbázist egy érvényes állapotból egy másikba hoz, fenntartva az adatintegritást.
Konzisztenciaszint Olyan konfiguráció, amely meghatározza, hogy az adatok hogyan és mikor replikálódnak egy elosztott adatbázisrendszerben, meghatározva a konzisztencia és a teljesítmény közötti kompromisszumot.
Adatzárolás Mechanizmus ugyanazon adatok egyidejű frissítésének megakadályozására.
Horizontális skálázás Egy skálázási módszer, amely egy adott típusú erőforrás példányait adja hozzá.
Optimista konkurenciakezelés A hagyományos zárolási mechanizmusok helyett a pillanatképeket használó adatbázisok frissítésének módszere.
Partitioning Az adatok külön adattárakba való fizikai felosztásának folyamata.
Skálázhatóság A számítási feladatok képessége a kapacitáskorlátok dinamikus módosítására a különböző igényszintek kielégítése érdekében.
Skálázási egység Az erőforrások egy csoportja, amelyek arányosan skálázhatók együtt.
Állapot affinitása Az ügyfél munkamenet-adatainak tárolása egyetlen kiszolgálón, hogy ugyanaz a kiszolgáló kezelje az ugyanazon ügyféltől érkező további kéréseket.
Vertikális skálázás Skálázási módszer, amely számítási kapacitást ad hozzá a meglévő erőforrásokhoz.

A skálázás és a particionálás egyaránt hozzájárul a teljesítményhatékonysághoz azáltal, hogy biztosítja az erőforrások hatékony felhasználását, és a számítási feladat képes kezelni a különböző terheléseket. Ezek a gyakorlatok különösen fontosak olyan felhőkörnyezetekben, ahol az alkalmazásoknak rugalmasnak és alkalmazkodónak kell lenniük a változó igényekhez. A skálázás lehetővé teszi a számítási feladatok kapacitásának bővítését a növekvő igények kielégítése érdekében. A particionálással hatékonyan oszthat fel feladatokat vagy adatokat a növekvő igények kezelése érdekében. Mindkét folyamat alapja a számítási feladat méretezési egységének kialakítása. Ez határozza meg, hogy a számítási feladatok hogyan növekedjenek és oszlanak el. A skálázás és particionálás megbízható és ellenőrzött megközelítésének beépítésével elkerülhetők a számítási feladatok lehetséges hatékonysági hiányosságai.

Skálázás optimalizálása

A skálázás optimalizálása a kiszolgálók, példányok vagy erőforrások számának a számítási feladatok ingadozó igényeinek való megfelelés érdekében történő módosításának folyamata. Biztosítja, hogy a számítási feladat a teljesítmény romlása vagy állásidő nélkül kezelje a megnövekedett forgalmat vagy igényeket.

Skálázási stratégia kiválasztása

A skálázási stratégia kiválasztásához el kell döntenie a vertikális vagy vízszintes módszereket, hogy a számítási feladatok kapacitása az adott követelményeknek megfelelően javuljon. A megfelelő stratégia kiválasztása biztosítja, hogy az erőforrásokat hatékonyan igazítsák a számítási feladatok igényeinek megfelelően, túlzott használat vagy pazarlás nélkül. A megfelelő skálázási stratégia kiválasztásához ismernie kell a vertikális és vízszintes skálázás felhasználási eseteit, valamint azt, hogy ezek hogyan felelnek meg a számítási feladat igényeinek.

A vertikális skálázás ismertetése. Függőleges skálázással növelheti egyetlen erőforrás kapacitását, például nagyobb kiszolgálóra vagy példányméretre frissíthet. A vertikális skálázás akkor hasznos, ha a számítási feladat egy példányon belül nagyobb feldolgozási teljesítményt, memóriát vagy egyéb erőforrásokat használhat. A vertikális skálázás olyan számítási feladatokhoz megfelelő, amelyek nem könnyen oszthatók kisebb részekre, vagy ha az alkalmazásarchitektúra nem támogatja a horizontális skálázást.

A horizontális skálázás ismertetése. A horizontális skálázás használatával több példányt vagy erőforrást is hozzáadhat a számítási feladatok több kiszolgáló közötti elosztásához. A horizontális skálázás olyan előnyöket kínál, mint a nagyobb rugalmasság, a megnövekedett kapacitás, valamint a megnövekedett forgalom vagy számítási feladatok iránti igények kezelése. Hatékony a több csomóponton való futtatásra tervezett natív felhőalkalmazások esetében. A horizontális skálázás olyan számítási feladatokhoz megfelelő, amelyek egymástól függetlenül futtatható kisebb részekre oszthatók.

A számítási feladat ismertetése. A függőleges vagy vízszintes skálázás alkalmassága a számítási feladat adott jellemzőitől és követelményeitől függ. A teljesítmény rendszeres monitorozása és tesztelése az alábbi területeken segíthet optimalizálni a skálázási stratégiát az idő függvényében:

  • Követelmények: A számítási feladat konkrét követelményeinek megismerése olyan tényezők figyelembevételével, mint az erőforrásigények, a méretezhetőségi igények és a számítási feladat korlátai.

  • Skálázási egységek: Méretezési egységek tervezése a várhatóan együtt skálázandó összetevőkhöz. Például 100 virtuális géphez két üzenetsorra és három tárfiókra lehet szükség a többletterhelés kezeléséhez. A méretezési egység 100 virtuális gép, két üzenetsor és három tárfiók lenne. Egymástól függetlenül skálázhatja az összes olyan összetevőt, amely kapacitáshasználat-ingadozást tapasztal.

  • Architektúra: Az alkalmazásarchitektúra kialakításának értékelése. Egyes alkalmazások eleve vízszintes skálázásra lettek tervezve, állapot nélküli összetevőkkel, amelyek több példány között könnyen eloszthatók. Más alkalmazások állapotalapú összetevőkkel vagy függőségekkel rendelkezhetnek, amelyek a vertikális skálázást megfelelőbbé teszik. Értékelje ki a számítási feladat méretezhetőségi és rugalmassági követelményeit.

Skálázható infrastruktúra tervezése

A skálázható infrastruktúra tervezése egy olyan architektúra létrehozásának folyamata, amely képes kezelni a növekvő igényeket és számítási feladatokat az erőforrások igény szerinti hozzáadásával vagy módosításával. Olyan megoldások tervezését és megvalósítását foglalja magában, amelyek horizontálisan vagy függőlegesen skálázhatók a növekedésnek megfelelően. A stratégiák közé tartozik a szűk keresztmetszetté váló egytonnás elemek elkerülése és az alkalmazás összetevőinek elkülönítése a független skálázhatóság biztosítása érdekében. Ha skálázhatóvá tervez egy számítási feladatot, az hatékonyan elosztja a számítási feladatot több erőforrás között, ami megakadályozza a szűk keresztmetszeteket, és maximalizálja az erőforrás-kihasználtságot.

Kerülje az egytonnát. Ne használjon egyetlen központosított erőforrást a teljes számítási feladathoz. Ehelyett ossza el a számítási feladatokat több erőforrás között a jobb méretezhetőség, a hibatűrés és a teljesítmény érdekében. Megismerhet néhány konkrét példát és tervezési szempontot, hogy elkerülje a számítási feladatok erőforrásaiban lévő egytonnát:

  • Üzenetsor-alapú terhelésszintezés: Ahelyett, hogy egyetlen üzenetsorra támaszkodik az üzenetek feldolgozásához, fontolja meg a számítási feladat több üzenetsor közötti particionálását a feldolgozási terhelés elosztásához. Jobb méretezhetőséget és párhuzamos feldolgozást biztosít.

  • Adatfeldolgozás: Az önálló minták gyakran jelennek meg olyan adatfeldolgozási forgatókönyvekben, ahol a feldolgozás nem csillan ki. A hosszan futó tevékenységeket kisebb tevékenységekre bonthatja, amelyek jobban skálázhatók a számítási feladatok több erőforrás közötti elosztásához és a párhuzamosság előnyeinek kihasználásához.

  • Tervezési minták: Az olyan tervezési minták, mint a Ventilátor/Ventilátor vagy a Csövek és szűrők , segíthetnek elkerülni a munkafolyamatokban az egytonnát. Ezek a minták lehetővé teszik a feldolgozási feladatok több erőforrás közötti elosztását, és elősegítik a méretezhetőséget és a rugalmasságot.

Összetevők leválasztása. Az alkalmazásösszetevők leválasztása a méretezhetőség tervezésének fontos eleme. Ez magában foglalja az alkalmazás kisebb, független összetevőkre való lebontását, amelyek képesek önállóan működni és méretezni adott számítási feladatokra vonatkozó követelmények alapján. Ha például egy összetevő több erőforrást igényel a megnövekedett kereslet miatt, az összetevőt anélkül méretezheti, hogy az hatással van a többire. Ez a rugalmasság biztosítja a hatékony erőforrás-kiosztást, és megakadályozza a szűk keresztmetszeteket. Az összetevők leválasztásával elkülönítheti a hibákat, és minimalizálhatja a teljes alkalmazásra gyakorolt hatást. Ha az egyik összetevő meghibásodik, a többi összetevő egymástól függetlenül is működhet.

A leválasztott összetevők könnyebben karbantarthatóak és frissíthetők. Az egyik összetevő módosításai vagy frissítései anélkül végezhetők el, hogy befolyásolnák a többi összetevőt, mert függetlenek. Az alábbi irányelveket követve leválaszthatja az alkalmazás összetevőit a méretezhetőség érdekében:

  • Az aggodalmak elkülönítése: Az alkalmazás feladatainak és funkcióinak azonosítása. Ossza fel a feladatokat külön összetevőkre a saját feladataik alapján. Előfordulhat például, hogy külön összetevőkkel rendelkezik a felhasználói hitelesítéshez, az adatfeldolgozáshoz és a felhasználói felülethez.

  • Laza összekapcsolás: Tervezzen az összetevőket úgy, hogy jól meghatározott interfészeken és protokollokon keresztül kommunikáljanak egymással. Ez a kialakítás csökkenti az összetevők közötti függőségeket, és lehetővé teszi az egyes összetevők egyszerűbb cseréjét vagy méretezését.

  • Aszinkron kommunikáció: Az összetevők további leválasztásához használjon aszinkron kommunikációs mintákat, például üzenetsorokat vagy eseményvezérelt architektúrákat. Ezek a minták lehetővé teszik, hogy az összetevők önállóan dolgozzák fel a feladatokat a saját tempójukban, javítva az általános méretezhetőséget.

  • Mikroszolgáltatások: Fontolja meg a mikroszolgáltatások implementálását, amelyek kis, független szolgáltatások, amelyek konkrét üzleti funkciókra összpontosítanak. Az egyes mikroszolgáltatások egymástól függetlenül fejleszthetők, helyezhetők üzembe és méretezhetők, így nagyobb rugalmasságot és méretezhetőséget biztosítanak.

Skálázható alkalmazás tervezése

A számítási feladatok méretezése során úgy kell megterveznie az alkalmazást, hogy eloszthassa a terhelést. Csak azért, mert további replikákat adhat hozzá az infrastruktúra szintjén, még nem jelenti azt, hogy az alkalmazás használhatja a replikákat. A méretezésre tervezett alkalmazások az alkalmazások strukturálásáról szólnak, így a számítási feladatok erőforrások közötti elosztásával kezelhetik a megnövekedett igényeket. Ha lehetséges, kerülje azokat a megoldásokat, amelyek ügyfél-affinitást, adatzárolást vagy állapot-affinitást igényelnek. Egy ügyfelet vagy folyamatot olyan erőforráshoz szeretne irányítani, amely rendelkezik elérhető kapacitással. Az alkalmazások méretezhetőségének kialakításához vegye figyelembe a következő stratégiákat:

A kiszolgálóoldali munkamenet állapotának megszüntetése. Ha lehetséges, állapot nélküli alkalmazásokat kell terveznie. Állapotalapú alkalmazások esetén a kiszolgálón kívüli állapottárolót kell használnia. A munkamenet állapotának külsővé tétele a munkamenet-adatok alkalmazáskiszolgálón vagy tárolón kívüli tárolásának gyakorlata. A munkamenet-állapotot külsőleg is eloszthatja a munkamenet-adatok több kiszolgáló vagy szolgáltatás között, így zökkenőmentes munkamenet-kezelést tesz lehetővé elosztott környezetben. A munkamenet állapotának külsővé tételekor vegye figyelembe a következőket:

  • Értékelje ki a munkamenet követelményeit. Megismerheti a tárolni és felügyelni kívánt munkamenet-adatokat. Fontolja meg a munkamenet-attribútumokat, a munkamenet-időtúllépéseket, valamint a munkamenet-replikáció vagy -megőrzés bármely konkrét követelményét. Határozza meg a munkamenet-állapot méretét, valamint az olvasási és írási műveletek gyakoriságát.

  • Válasszon egy megoldást. Válasszon ki egy olyan tárolási megoldást, amely megfelel a teljesítményre és a méretezhetőségre vonatkozó igényeknek. A lehetőségek közé tartozik az elosztott gyorsítótár, az adatbázis vagy a munkamenet-állapot szolgáltatás használata. A választás során vegye figyelembe az olyan tényezőket, mint az adatkonzisztencia, a késés és a méretezhetőség.

  • Állítsa be az alkalmazást. Frissítse az alkalmazást a választott munkamenetállapot-tárolási megoldás használatára. Előfordulhat, hogy módosítania kell az alkalmazás konfigurációs fájljait vagy kódját a külső tárolószolgáltatáshoz való csatlakozáshoz.

  • Frissítse a logikát. Módosítsa az alkalmazás munkamenet-kezelési logikáját a munkamenet-adatok külső tárolási megoldásból való tárolásához és lekéréséhez. Előfordulhat, hogy a tárolási megoldás által biztosított API-kat vagy kódtárakat kell használnia a munkamenet állapotának kezeléséhez.

Az ügyfél-affinitás megszüntetése. Az ügyfél-affinitást munkamenet-affinitásnak vagy ragadós munkamenetnek is nevezik. Ha megszünteti az ügyfél-affinitást, egyenletesen osztja el az ügyfélkéréseket több replika vagy kiszolgáló között anélkül, hogy az ügyféltől érkező összes kérést ugyanarra a replikára irányítanák. Ez a konfiguráció javíthatja az alkalmazások méretezhetőségét és teljesítményét azáltal, hogy lehetővé teszi bármely elérhető replika számára a kérések feldolgozását.

Tekintse át a terheléselosztási algoritmust. A terheléselosztási algoritmusok nem szándékos és mesterséges ügyfél-rögzítést okozhatnak, ha túl sok kérést küldenek egy háttérpéldánynak. Rögzítés akkor fordulhat elő, ha az algoritmus úgy van beállítva, hogy mindig ugyanarra a felhasználóra küldjön kéréseket ugyanarra a példányra. Ez akkor is előfordulhat, ha a kérések túl hasonlóak egymáshoz.

Adatzárolás megszüntetése. Az adatzárolás biztosítja a konzisztenciát, de teljesítménybeli hátrányokkal rendelkezik. Zárolási eszkalációkat okozhat, és negatívan befolyásolhatja az egyidejűséget, a késést és a rendelkezésre állást. Az adatzárolás kiküszöbölése érdekében optimista egyidejűséget kell alkalmaznia. A nem relációs adatbázisoknak optimista egyidejűség-vezérlést kell használniuk, és megfelelő konzisztenciaszinttel kell rendelkezniük. Az adatparticionálási stratégiának támogatnia kell az egyidejűségi igényeket is.

Dinamikus szolgáltatásfelderítés használata. A dinamikus szolgáltatásfelderítés a szolgáltatások automatikus észlelésének és regisztrálásának folyamata egy elosztott rendszerben. Lehetővé teszi az ügyfelek számára, hogy felfedezzék az elérhető szolgáltatásokat anélkül, hogy szorosan összekapcsolják őket adott példányokkal. Az ügyfeleknek nem szabad közvetlen függőséget vállalniuk egy adott példánytól a számítási feladatban. A függőségek elkerülése érdekében proxy használatával terjesztheti és terjesztheti az ügyfélkapcsolatokat. A proxy közvetítőként működik az ügyfelek és a szolgáltatások között, és olyan absztrakciós réteget biztosít, amely lehetővé teszi a szolgáltatások hozzáadását vagy eltávolítását az ügyfelek befolyásolása nélkül.

Háttérfeladatok használata. Skálázáskor az alkalmazás képes kezelni a növekvő számítási feladatokat vagy az egyidejű kérések nagyobb számát. Az intenzív tevékenységek háttérfeladatként való kiszervezése lehetővé teszi, hogy a fő alkalmazás anélkül kezelje a felhasználói kéréseket, hogy az erőforrás-igényes műveletek túlterhelik azt. A tevékenységek háttérfeladatként való kiszervezéséhez kövesse az alábbi lépéseket:

  1. Keresse meg az alkalmazásban a cpu-igényes és az I/O-igényes feladatokat, amelyeket ki tud hasznosíteni. Ezek a feladatok általában nagy számítási feladatokat vagy külső erőforrásokkal, például adatbázisokkal vagy hálózati műveletekkel való interakciókat foglalnak magukban.

  2. Az alkalmazás megtervezése háttérfeladatok támogatására. Az intenzív tevékenységek leválasztása a fő alkalmazáslogikától, és mechanizmust biztosít a háttérfeladatok indításához és kezeléséhez.

  3. Háttérfeladat-feldolgozás implementálása megfelelő technológiákkal vagy keretrendszerekkel. Tartalmazza a programozási nyelv vagy a platform által biztosított szolgáltatásokat, például az aszinkron programozást, a szálkezelést vagy a feladatsorokat. Intenzív műveleteket tartalmaz külön tevékenységekben vagy szálakban, ezek a tevékenységek egyidejűleg vagy ütemezetten futtathatók meghatározott időközönként.

  4. Ossza el a háttérfeladatokat, ha sok van belőlük, vagy ha a tevékenységek jelentős időt vagy erőforrásokat igényelnek. Egy lehetséges megoldásért tekintse meg a versengő fogyasztók mintáját.

Skálázás konfigurálása

A skálázás konfigurálása a paraméterek beállításának és módosításának folyamata, hogy dinamikusan lefoglalja az erőforrásokat a számítási feladatok igényei alapján. Olyan stratégiákat foglal magában, mint az automatikus skálázási funkciók használata, a szolgáltatás skálázási határainak megértése és a hasznos terhelési metrikák implementálása. A megfelelő konfiguráció biztosítja, hogy az alkalmazások a hatékonyság maximalizálása mellett reagáljanak a különböző igényekre. A skálázás konfigurálásakor vegye figyelembe a következő stratégiákat:

Szolgáltatások használata automatikus skálázással. Az automatikus skálázási funkció automatikusan skálázza az infrastruktúrát az igényeknek megfelelően. A platform szolgáltatásként (PaaS) való használata beépített automatikus skálázási funkciókkal. A PaaS-en a skálázás egyszerűsége jelentős előnyt jelent. A virtuális gépek horizontális felskálázásához például külön terheléselosztóra, ügyfél-kérelmek kezelésére és külsőleg tárolt állapotra van szükség. A PaaS-ajánlatok a legtöbb ilyen feladatot kezelik.

Korlátozza az automatikus skálázást. Az automatikus skálázási korlátokat úgy állíthatja be, hogy minimálisra csökkentse a túlméretezést, ami szükségtelen költségeket eredményezhet. Néha nem lehet skálázási korlátokat beállítani. Ezekben az esetekben riasztásokat kell beállítania, hogy értesítést küldhessenek, ha az összetevő eléri a maximális méretezési korlátot és túlméretezi.

A szolgáltatás skálázási határainak ismertetése. A szolgáltatásméretezési korlátok, a növekmények és a korlátozások megismerése esetén megalapozott döntéseket hozhat egy szolgáltatás kiválasztásakor. A skálázási határok határozzák meg, hogy a választott szolgáltatás képes-e kezelni a várt számítási feladatot, hatékonyan skálázni, és teljesíteni az alkalmazás teljesítménykövetelményeit. Skálázási határok, amelyeket érdemes figyelembe venni:

  • Skálázási korlátok: A skálázási korlátok a hely vagy szolgáltatás által kezelhető maximális kapacitás. Fontos tisztában lennie ezekkel a korlátozásokkal, hogy a szolgáltatás képes legyen kezelni a várt számítási feladatot, és a csúcshasználatot teljesítménycsökkenés nélkül kezelni. Minden erőforrásnak felső korlátja van. Ha túl kell lépnie a méretezési korlátokon, particionálnia kell a számítási feladatot.

  • Skálázási növekmények: A szolgáltatások meghatározott növekményeken skálázhatók. A számítási szolgáltatások például példányok és podok szerint skálázhatók, míg az adatbázisok példányok, tranzakciós egységek és virtuális magok szerint skálázhatók. Fontos megérteni ezeket a növekményeket az erőforrás-kiosztás optimalizálása és az erőforrás-összecsukás megakadályozása érdekében.

  • Skálázási korlátozások: Egyes szolgáltatások lehetővé teszik a vertikális fel- vagy horizontális felskálázást, de korlátozhatja a skálázás automatikus megfordításának lehetőségét. Manuálisan kell skáláznia, vagy előfordulhat, hogy újra kell üzembe helyeznie egy új erőforrást. Ezek a korlátozások gyakran a számítási feladatok védelmére vonatkoznak. A leskálázás vagy a méretezés hatással lehet a számítási feladat rendelkezésre állására és teljesítményére. A szolgáltatás bizonyos korlátozásokat vagy korlátozásokat kényszeríthet ki annak biztosítása érdekében, hogy a számítási feladat elegendő erőforrással rendelkezzen a hatékony működéshez. Ezek a korlátozások hatással lehetnek az adatkonzisztenciára és a szinkronizálásra, különösen az elosztott rendszerekben. Előfordulhat, hogy a szolgáltatás rendelkezik olyan mechanizmusokkal, amelyek kezelik az adatreplikálást és a konzisztenciát a vertikális fel- vagy kiskálázás során, de előfordulhat, hogy nem nyújtanak ugyanolyan szintű támogatást a le- vagy leskálázáshoz.

Használjon értelmes terhelési metrikákat. A skálázásnak értelmes terhelési metrikákat kell használnia skálázási eseményindítókként. A jelentős terhelési metrikák egyszerű metrikákat tartalmaznak, például a CPU-t vagy a memóriát. Speciálisabb metrikákat is tartalmaznak, például az üzenetsor mélységét, az SQL-lekérdezéseket, az egyéni metrikák lekérdezéseit és a HTTP-üzenetsor hosszát. Skálázási eseményindítóként fontolja meg az egyszerű és speciális terhelési metrikák kombinációját.

Használjon puffert. A puffer nem használt kapacitás, amely a megnövekedett igények kezelésére használható. Jól megtervezett számítási feladatcsomagok a számítási feladatok váratlan kiugrására. Adjon hozzá egy puffert a vízszintes és függőleges skálázás tüskéinek kezeléséhez.

Tiltsa meg a befésítést. A kicsúszás olyan ciklusfeltétel, amely akkor fordul elő, ha egy skálázási esemény ellentétes skálázási eseményt aktivál, és folyamatos előre-hátra skálázási műveletet hoz létre. Ha például a skálázás csökkenti a példányok számát, előfordulhat, hogy a processzorhasználat emelkedik a többi példányban, és horizontális felskálázási eseményt vált ki. A vertikális felskálázási esemény viszont a processzorhasználat csökkenését okozza, megismételve a folyamatot.

Fontos, hogy megfelelő margót válasszon a vertikális felskálázás és a méretezési küszöbértékek között, hogy elkerülje a felskálázást. A gyakori és szükségtelen felskálázási és vertikális felskálázási műveleteket megelőzheti olyan küszöbértékek beállításával, amelyek jelentős különbséget jelentenek a processzorhasználatban.

Üzembehelyezési bélyegek használata. Vannak olyan technikák, amelyek megkönnyítik a számítási feladatok skálázását. Az Üzembehelyezési bélyegek mintával egyszerűen skálázhatja a számítási feladatokat egy vagy több méretezési egység hozzáadásával.

Kockázat: Bár a skálázás segít optimalizálni a költségeket azáltal, hogy a kapacitást az igényeknek megfelelően módosítja, a magas kereslet hosszú időszakaiban általánosan megnövekedett költségeket eredményezhet.

Skálázás tesztelése

A skálázás tesztelése magában foglalja a különböző számítási feladatok forgatókönyveinek szimulálását egy ellenőrzött környezetben annak kiértékeléséhez, hogy a számítási feladatok hogyan reagálnak a különböző igényszintekre. Segít hatékonyan méretezni a számítási feladatokat, maximalizálva a teljesítmény hatékonyságát a különböző terhelések során.

Gondoskodnia kell arról, hogy a számítási feladatok valós körülmények között hatékonyan skálázhatók. Alapvető fontosságú, hogy terhelés- és terhelésteszteket végezzen egy olyan környezetben, amely tükrözi az éles környezetét. Ezek a nem gyártási környezetekben végzett tesztek lehetővé teszik a vertikális és horizontális skálázási stratégiák kiértékelését, valamint annak meghatározását, hogy melyik optimalizálja a leghatékonyabban a teljesítményt. Íme egy ajánlott módszer a skálázás tesztelésére:

  • Számítási feladatok forgatókönyveinek definiálása. Azonosítsa a tesztelni kívánt főbb számítási feladatok forgatókönyveit, például a felhasználói forgalom növelését, az egyidejű kérelmeket, az adatmennyiséget vagy az erőforrás-használatot.

  • Éles környezethez hasonló tesztkörnyezet használata. Hozzon létre egy különálló tesztelési környezetet, amely az infrastruktúra, a konfiguráció és az adatok szempontjából nagyon hasonlít az éles környezetre.

  • Teljesítménymetrikák beállítása. Határozza meg a mérendő teljesítménymetrikákat, például a válaszidőt, az átviteli sebességet, a processzor- és memóriakihasználtságot, valamint a hibaarányokat.

  • Teszteseteket fejleszthet. Különböző számítási feladatok forgatókönyveit szimuláló teszteseteket fejleszthet, amelyek fokozatosan növelik a terhelést, hogy különböző szinteken értékeljék a teljesítményt.

  • Tesztek végrehajtása és monitorozása. Futtassa a teszteket a megadott tesztesetekkel, és gyűjtsön teljesítményadatokat minden terhelési szinten. Figyelheti a számítási feladatok viselkedését, az erőforrás-felhasználást és a teljesítménycsökkenést.

  • Skálázás elemzése és optimalizálása. Elemezze a teszteredményeket a teljesítmény szűk keresztmetszeteinek, skálázhatósági korlátainak vagy fejlesztési területeinek azonosításához. Optimalizálja a konfigurációt, az infrastruktúrát vagy a kódot a méretezhetőség és a teljesítmény növelése érdekében. A skálázás befejezése időt vesz igénybe, ezért tesztelje a skálázási késések hatásait.

  • Függőségek kezelése. Lehetséges függőségi problémák keresése. A számítási feladatok egy területének skálázása vagy particionálása teljesítményproblémákat okozhat egy függőségben. A számítási feladatok állapotalapú részei, például az adatbázisok a függőségi teljesítményproblémák leggyakoribb okai. Az adatbázisok gondos tervezést igényelnek a horizontális skálázáshoz. Érdemes megfontolni az olyan mértékeket, mint az optimista egyidejűség vagy az adatparticionálás, hogy több átviteli sebességet lehessen elérni az adatbázison.

  • A módosítások után próbálkozzon újra. Az optimalizálások implementálása után ismételje meg a méretezhetőségi teszteket a fejlesztések ellenőrzéséhez, és biztosítsa, hogy a számítási feladat hatékonyan tudja kezelni a várt számítási feladatokat.

Kompromisszum: Vegye figyelembe a számítási feladat költségvetési korlátait és költséghatékonysági céljait. A vertikális skálázás nagyobb költségekkel járhat, mivel nagyobb és hatékonyabb erőforrásokra van szükség. A horizontális skálázás költségmegtakarítást kínál, ha kisebb példányokat használ, amelyek igény szerint hozzáadhatók vagy eltávolíthatók.

Partíciós számítási feladat

A particionálás egy nagy adatkészlet vagy számítási feladat kisebb, kezelhetőbb részekre, úgynevezett partíciókra való felosztásának folyamata. Minden partíció az adatok vagy számítási feladatok egy részét tartalmazza, és általában külön tárolják vagy dolgozzák fel. A particionálás lehetővé teszi a párhuzamos feldolgozást, és csökkenti a versengést. Ha a számítási feladatot kisebb egységekre osztja, az alkalmazás egymástól függetlenül dolgozza fel az egyes egységeket. Ennek eredménye az erőforrások jobb felhasználása és a gyorsabb feldolgozási idő. A particionálás emellett segít elosztani az adatokat több tárolóeszköz között, csökkentve az egyes eszközök terhelését, és javítja az általános teljesítményt.

A particionálás ismertetése

A konkrét particionálási módszer a használt adatok vagy számítási feladatok típusától és a használt technológiától függ. A particionálás néhány gyakori stratégiája a következő:

  • Horizontális particionálás: Ebben a megközelítésben az adathalmaz vagy a számítási feladat meghatározott feltételek, például értéktartományok vagy adott attribútumok alapján oszlik meg. Minden partíció a megadott feltételeknek megfelelő adatok egy részét tartalmazza.

  • Függőleges particionálás: Ebben a megközelítésben az adathalmaz vagy a számítási feladat adott attribútumok vagy oszlopok alapján van osztva. Minden partíció az oszlopok vagy attribútumok egy részhalmazát tartalmazza, így hatékonyabban férhet hozzá a szükséges adatokhoz.

  • Funkcionális particionálás: Ebben a megközelítésben az adatok vagy számítási feladatok a végrehajtandó adott függvények vagy műveletek alapján vannak osztva. Minden partíció tartalmazza azokat az adatokat vagy összetevőket, amelyek egy adott függvényhez szükségesek, lehetővé téve az optimalizált feldolgozást és teljesítményt.

Particionálás megtervezése

A particionálás során fontos figyelembe venni az olyan tényezőket, mint az adateloszlás, a lekérdezési minták, az adatnövekedés és a számítási feladatok követelményei. A megfelelő tervezés és tervezés elengedhetetlen a particionálás hatékonyságának biztosításához és a teljesítményhatékonyság maximalizálásához. Ha a particionálást utószkenvedésként kezeli, az nagyobb kihívást jelent, mert már rendelkezik élő számítási feladatokkal, amelyeket fenn kell tartania. Előfordulhat, hogy módosítania kell az adathozzáférési logikát, nagy mennyiségű adatot kell elosztania a partíciók között, és támogatnia kell a folyamatos használatot az adatterjesztés során.

Particionálás implementálása

Fontos elemezni az adatok jellemzőit, a hozzáférési mintákat, az egyidejűségi követelményeket és a méretezhetőségi célokat, amikor eldönti, hogy milyen típusú particionálást használjon. Minden particionálási típusnak megvannak a maga előnyei és szempontjai. Az alábbiakban néhány tényezőt érdemes figyelembe venni az egyes particionálási típusokhoz:

  • A horizontális particionálás akkor megfelelő, ha az adatokat több erőforrás vagy kiszolgáló között szeretné elosztani a jobb méretezhetőség és teljesítmény érdekében. Ez akkor hatékony, ha a számítási feladat egymástól függetlenül párhuzamos és feldolgozható az egyes partíciókon. Fontolja meg a horizontális particionálást, ha több felhasználónak vagy folyamatnak egyszerre kell tudnia elérni vagy frissíteni az adathalmazt.

  • A függőleges particionálás akkor megfelelő, ha bizonyos attribútumokat vagy oszlopokat gyakran érnek el, míg másokhoz ritkábban férnek hozzá. A vertikális particionálás a szükségtelen adatlekérés minimalizálásával teszi lehetővé a szükséges adatok hatékony elérését.

  • A funkcionális particionálás akkor megfelelő, ha a különböző függvények az adatok különböző részhalmazait igénylik, és egymástól függetlenül is feldolgozhatók. A funkcionális particionálás optimalizálhatja a teljesítményt azáltal, hogy lehetővé teszi az egyes partíciók számára az adott műveletek összpontosítását.

Particionálás tesztelése és optimalizálása

Tesztelje a particionálási sémát a stratégia hatékonyságának és hatékonyságának ellenőrzéséhez, hogy módosításokat hajthass végre a teljesítmény javítása érdekében. Mérje fel az olyan tényezőket, mint a válaszidő, az átviteli sebesség és a méretezhetőség. Hasonlítsa össze az eredményeket a teljesítménycélokkal, és azonosítsa a szűk keresztmetszeteket vagy problémákat. Az elemzés alapján azonosítsa a lehetséges optimalizálási lehetőségeket. Előfordulhat, hogy újra kell terjesztenie az adatokat a partíciók között, módosítania kell a partícióméreteket, vagy módosítania kell a particionálási feltételeket.

Kompromisszum: A particionálás összetettebbé teszi a számítási feladatok tervezését és fejlesztését. A particionáláshoz beszélgetésre és tervezésre van szükség a fejlesztők és az adatbázis-rendszergazdák között.

Kockázat: A particionálás olyan lehetséges problémákat vezet be, amelyeket figyelembe kell venni és kezelni kell, beleértve a következőket:

  • Adateltérés: A particionálás adateltéréshez vezethet, ahol bizonyos partíciók aránytalan mennyiségű adatot vagy számítási feladatot kapnak másokhoz képest. Az adateltérés teljesítménybeli kiegyensúlyozatlanságot és nagyobb versengést eredményezhet adott partíciókon.

  • Lekérdezési teljesítmény: A rosszul megtervezett particionálási sémák negatív hatással lehetnek a lekérdezési teljesítményre. Ha a lekérdezéseknek több partíción keresztül kell hozzáférnie az adatokhoz, az további koordinációt és kommunikációt igényelhet a partíciók között, ami nagyobb késést eredményezhet.

Az Azure megkönnyítése

A skálázás optimalizálása. Az Azure rendelkezik a vertikális és vízszintes skálázás támogatásához használható infrastruktúra-kapacitással. Az Azure-szolgáltatások különböző teljesítményszintekkel rendelkeznek, más néven termékváltozatokkal. Az SKU-k lehetővé teszik a vertikális skálázást. Az Azure számos erőforrása támogatja az automatikus skálázást vagy más helyszíni méretezési lehetőségeket. Egyes erőforrások speciális metrikákat vagy egyéni bemeneteket támogatnak a skálázási viselkedés finomhangolásához. Az Azure skálázási implementációinak többsége korlátokat állíthat be, és támogathatja a szükséges megfigyelhetőséget a változáshoz.

Az Azure Monitor lehetővé teszi különböző metrikák és feltételek monitorozását az alkalmazásokban és az infrastruktúrában. A Monitorral előre meghatározott szabályokon alapuló automatikus skálázási műveleteket indíthat el. Az Azure Kubernetes Service-ben (AKS) például a Monitor használatával engedélyezheti a podok automatikus horizontális skálázását (HPA) és a fürt automatikus skálázását. A Monitor monitorozási és riasztási képességeinek használatával hatékonyan megkönnyítheti a skálázást az Azure-ban, és biztosíthatja, hogy az alkalmazások és az infrastruktúra dinamikusan igazodjanak az igényekhez.

Egyéni automatikus skálázást is létrehozhat az Azure-ban. A Monitorban riasztásokat használhat olyan erőforrásokhoz, amelyek nem rendelkeznek automatikus skálázási funkcióval. Ezek a riasztások beállíthatók lekérdezésalapú vagy metrikaalapúként, és műveleteket hajthatnak végre az Azure Automation használatával. Az Automation platformot biztosít PowerShell- és Python-kód üzemeltetéséhez és futtatásához az Azure-ban, a felhőben és a helyszíni környezetekben. Olyan funkciókat kínál, mint a runbookok igény szerinti vagy ütemezés szerinti üzembe helyezése, a futtatási előzmények és naplózás, az integrált titkos kódok tárolója és a forrásvezérlési integráció.

Alkalmazás méretezésre való tervezése: Az Alábbiakban bemutatunk néhány módszert, amelyekkel az Azure elősegíti az alkalmazások méretezésének tervezését;

  • Adatzárolás megszüntetése: Az Azure SQL Database-ben engedélyezheti az optimalizált zárolást a szigorú konzisztenciát igénylő adatbázisok teljesítményének javítása érdekében.

  • Háttérfeladatok használata: Azure-ajánlatszolgáltatások és útmutatás háttérfeladatok megvalósításához. További információ: Háttérfeladatok.

  • Terheléselosztás megvalósítása: Az Azure olyan terheléselosztókat biztosít, amelyek nem igényelnek ügyfél-affinitást. Ezek a terheléselosztók közé tartozik az Azure Front Door, az Azure Application Gateway és az Azure Load Balancer.

Számítási feladatok particionálása: Az Azure különböző particionálási stratégiákat kínál a különböző adattárakhoz. Ezek a stratégiák segítenek javítani a teljesítményt és a méretezhetőséget azáltal, hogy az adatokat több partíció között osztják el. További információ: Adatpartíciós stratégiák.

Teljesítményhatékonyság ellenőrzőlista

Tekintse meg a javaslatok teljes készletét.