Teljesítmény hatékonysága

Befejeződött

Tegyük fel, hogy a szervezet egyik legutóbbi termékbejelentkezéséről hírt ad ki. A hírcsatorna hozzáadott nyilvánossága nagy mennyiségű forgalmat hoz létre a webhelyére. Képes a webhely kezelni ezt a forgalmat? Képes-e a webhelye a többletterhelésre anélkül, hogy lassú vagy nem válaszolóvá válná?

Ebben a leckében a kiemelkedő alkalmazásteljesítmény biztosításának néhány alapelvét tekintjük át. Különösen azokat a skálázási és optimalizálási alapelveket, amelyek a teljesítményhatékonyság pillérét alkotják.

Mi a teljesítményhatékonyság?

A teljesítményhatékonyság megfelel az alkalmazás rendelkezésre álló erőforrásainak és a kapott igényeknek. A teljesítményhatékonyság magában foglalja az erőforrások méretezését, a lehetséges szűk keresztmetszetek azonosítását és optimalizálását, valamint az alkalmazáskód csúcsteljesítményre történő optimalizálását.

Vizsgáljunk meg néhány mintát és eljárást, amelyek az alkalmazás skálázhatóságát és teljesítményét növelhetik.

Vertikális és horizontális felskálázás

A számítási erőforrások két irányban skálázhatók:

  • A vertikális felskálázás során több erőforrást adunk hozzá egyetlen példányhoz. Más néven függőleges skálázás.

    An illustration that shows scaling up by adding resources to a virtual machine.

  • A horizontális felskálázás során több példányt adunk hozzá. Más néven vízszintes skálázás.

    An illustration that shows scaling out by adding instances to increase performance.

A vertikális felskálázás azzal foglalkozik, hogy több erőforrást, például processzort vagy memóriát adjon hozzá egyetlen példányhoz. Ez a példány lehet egy virtuális gép vagy egy PaaS-szolgáltatás.

Ha a példányhoz több kapacitást ad hozzá, azzal megnöveli az alkalmazás számára elérhető erőforrások mértékét, de ennek vannak bizonyos korlátai. A virtuális gépek annak a gazdagépnek a kapacitására korlátozódnak, amelyen futnak, és maguk a gazdagépek fizikai korlátozásokkal rendelkeznek. Egy példány vertikális felskálázása végül beleütközhet ezekbe a korlátokba. Ezek miatt a további erőforrások egyetlen példányhoz történő hozzáadása korlátozott lehetőség.

A horizontális felskálázás azzal foglalkozik, hogy több példányt adjon hozzá egy szolgáltatáshoz. Ezek lehetnek virtuális gépek vagy PaaS-szolgáltatások. Ahelyett, hogy egyetlen példányt további kapacitás hozzáadása által tennénk erősebbé, a példányok teljes számának növelésével teszünk szert további kapacitásra.

A horizontális felskálázás előnye, hogy elméletben végtelen mértékben végezhető, amennyiben egyre több gépet tud hozzáadni az architektúrához. A horizontális felskálázás megkövetel bizonyos terheléselosztást. Például egy terheléselosztó, amely a kérelmeket az elérhető kiszolgálók között osztja el, vagy egy szolgáltatásfelderítési mechanizmus, amellyel azonosíthatja azokat az aktív kiszolgálókat, amelyeknek a kéréseket küldeni szeretné.

Mindkét esetben lehet csökkenteni az erőforrásokat, és így költségoptimalizálást lehet elérni.

Az automatikus skálázás az a folyamat, amely dinamikusan lefoglalja az erőforrásokat a teljesítményre vonatkozó követelményeknek megfelelően. Az elvégzendő feladatok mennyiségének növekedésével az alkalmazásoknak további erőforrásokra lehet szükségük ahhoz, hogy fenn tudják tartani a kívánt teljesítményszinteket és megfeleljenek a szolgáltatásiszint-szerződésekben (SLA) leírtaknak. Mivel a keresleti tartalékok és a hozzáadott erőforrások már nem szükségesek, a költségek minimalizálása érdekében felszabadíthatók.

Az automatikus skálázás kihasználja a felhőben futtatott környezetek rugalmasságát, ugyanakkor csökkenti a kezelési terheket. Ezzel a megoldással kevésbé van szükség olyan operátorra, aki folyamatosan monitorozza a rendszer teljesítményét, és döntéseket hoz az erőforrások hozzáadásáról vagy eltávolításáról.

A hálózati teljesítmény optimalizálása

A teljesítmény optimalizálásakor a hálózati és tárolási teljesítményt kell megvizsgálnia, hogy a szintek elfogadható korlátokon belül legyenek. A teljesítményszintek hatással lehet az alkalmazás válaszidejére. Az architektúra megfelelő hálózatkezelési és tárolási technológiáinak kiválasztásával gondoskodhat arról, hogy a lehető legjobb élményt nyújtsa a felhasználók számára.

A szolgáltatások közötti üzenetkezelő réteg alkalmazása előnyös hatással lehet a teljesítményre és a méretezhetőségre. Az üzenetkezelő réteg egy puffert hoz létre, így a kérések hiba nélkül áramolhatnak még akkor is, ha a fogadó alkalmazás nem tud velük lépést tartani. Mivel az alkalmazás a kérelmeken keresztül működik, a rendszer a beérkezés sorrendjében válaszolja meg őket.

A tárolási teljesítmény optimalizálása

Számos nagyobb léptékű megoldásban az adatok egymástól függetlenül felügyelhető és elérhető partíciókba osztva tárolhatók. A particionálási stratégiát gondosan kell megválasztani az előnyök maximalizálása és a negatív hatások minimalizálása érdekében. A particionálás segíthet javítani a skálázhatóságot, csökkenteni a versengést és optimalizálni a teljesítményt.

A teljesítmény javítására gyorsítótárazást használhat az architektúrában. A gyorsítótárazás egy olyan mechanizmus, amely tárolja a gyakran használt adatokat vagy eszközöket (weboldalakat, képeket) a gyorsabb beolvasás érdekében. A gyorsítótárazást az alkalmazás különböző rétegeiben használható. Használhat gyorsítótárazást az alkalmazás kiszolgálói és az adatbázis között, így csökkentve az adatok beolvasási idejét.

A felhasználók és a webkiszolgálók közötti gyorsítótárazást úgy is használhatja, hogy a statikus tartalmat közelebb helyezi a felhasználókhoz. Ez a gyorsítótárazás csökkenti a weblapok felhasználókhoz való visszaküldésének idejét. Emellett másodlagos hatással van az adatbázisból vagy a webkiszolgálókról érkező kérések kiszervezésére, ami növeli az egyéb kérések teljesítményét.

A teljesítmény szűk keresztmetszeteinek felderítése az alkalmazásban

A felhőben futó elosztott alkalmazások és szolgáltatások összetett szoftverek, amelyek számos mozgó részből tevődnek össze. Éles környezetben fontos nyomon követni, hogy a felhasználók hogyan használják a rendszert. Fontos az erőforrás-kihasználtság nyomon követése is, és általában a rendszer állapotának és teljesítményének monitorozása. Ezt az információt diagnosztikai segédletként használhatja fel a problémák észleléséhez és javításához. Ugyanennek az információnak a felhasználása segíthet a hibalehetőségek feltárásában, és azok bekövetkezésének megelőzésében is.

A teljesítményoptimalizálás magában foglalja annak megértését, hogy maguk az alkalmazások hogyan teljesítenek. A hibák, a rosszul teljesítő kód és a függő rendszerek szűk keresztmetszetei mind feltárhatók egy alkalmazásteljesítmény-kezelő eszközzel. Gyakran előfordulhat, hogy ezek a problémák rejtettek vagy elhomályosulnak a felhasználók, fejlesztők és rendszergazdák számára, de kedvezőtlen hatással lehetnek az alkalmazás általános teljesítményére.

Nézze át az alkalmazás minden rétegét, valamint azonosítsa be és javítsa ki a teljesítmény szűk keresztmetszeteit. Ilyen szűk keresztmetszet lehet a rossz memóriakezelés az alkalmazásban, vagy akár az adatbázis-indexek hozzáadásának folyamata. Ez lehet egy ismétlődő folyamat része is, ugyanis amikor megoldást talál egy szűk keresztmetszetre, felfedezhet egy másikat, amelyről addig nem volt tudomása.

A teljesítményfigyelés alapos megközelítésével meghatározhatja, hogy milyen minták és eljárások használhatók az architektúrában.

Tesztelje tudását

1.

Az alábbiak közül melyik példa a felskálázásra (függőleges skálázásra)?

2.

Az alábbiak közül melyik példa a horizontális skálázásra?