Globálisan elosztott alkalmazások a Cosmos DB használatával

Cosmos DB
Traffic Manager

Solution Idea

Ha szeretné látni, hogyan bővítjük ki ezt a cikket olyan további információkkal, mint a lehetséges esetek, az alternatív szolgáltatások, az implementációval kapcsolatos megfontolások vagy a díjszabási útmutató, GitHub visszajelzéssel!

A Microsoft globális adatközpontjaiba épített magas rendelkezésre állási és kis késleltetésű képességekkel garantálható a hozzáférés a felhasználók számára világszerte.

Architektúra

Architektúradiagram
Töltse le az architektúra SVG-verzióját.

Adatfolyam

  1. A felhasználó a dedikált ügyfélen keresztül fér hozzá az alkalmazáshoz.
  2. Azure Traffic Manager a felhasználó kapcsolatát az alkalmazás elérésére legmegfelelőbb helyre irányítják egyetlen vagy beágyazott útválasztási profil alapján.
  3. Abban a landolt régióban, ahol az alkalmazás üzemel, az alkalmazás kezeli a munkamenetet és az adatbázissal való kapcsolatot.
  4. Ez az alkalmazás egy egyszerű statikus laptól egy mikroszolgáltatás-orientált, például a Kubernetesben üzemeltetett alkalmazásig számos lehet.
  5. Az alkalmazás környezete és a Cosmos DB közötti kapcsolatot egy Azure Active Directory-felhasználó kezeli, aki fel tudja venni a Cosmos DB kulcsait Key Vault.
  6. A több Azure Cosmos DB API-k használatával az alkalmazás ismeri a legközelebbi régiót, és küldhet kéréseket erre a régióra. A rendszer a konfiguráció változtatása nélkül azonosítja a legközelebbi régiót. Amikor régiókat ad hozzá és távolít el az Azure Cosmos-fiókjából, az alkalmazást nem kell újra üzembe tenni vagy szüneteltetni, továbbra is magas rendelkezésre állásúnak kell lennie. A felszín alatt a Cosmos DB a meghatározott régiók száma alapján kezeli az adatok globális elosztását és replikálását. Emellett érdemes az Automatikus feladatátvétel lehetőséget is kihozni a feladatátvételből a legmagasabb feladatátvételi prioritású régióba, felhasználói művelet nélkül, ha egy régió elérhetetlenné válik. Ha az automatikus feladatátvétel engedélyezve van, a régió prioritása módosítható.

Összetevők

  • Azure Traffic Manager:hozzon létre DNS-alapú terheléselosztási/útválasztási beállításokat az alkalmazások számára hat típusú DNS-alapú forgalom-útválasztási beállítással, amelyek beágyazhatóak.
  • Azure Active Directory:Szinkronizálja a helyszíni könyvtárakat, és engedélyezze az egyszeri bejelentkezést.
  • Azure Cosmos DB:Globálisan elosztott, többmodelles adatbázis bármilyen mérethez.

Számítási lehetőségek

  • Azure Virtual Machines:Linux és virtuális Windows létrehozása másodpercek alatt, és a költségek csökkentése.
  • Azure Kubernetes Services:Magas rendelkezésre áll, biztonságos és teljes körűen felügyelt Kubernetes-szolgáltatás az összes alkalmazás- és mikroszolgáltatás-alapú számítási feladathoz.
  • App Service:Hatékony webes és mobil felhőalkalmazások gyors létrehozása.

Kiszolgáló nélküli beállítások

Megfontolandó szempontok

Rendelkezésre állás

A Cosmos DB rendelkezésre állása számos tényezőtől függ. Annál több régióban replikálódik a Cosmos, annál nagyobb az alkalmazás rendelkezésre állása. Minden régió egy tároló összes adatpartícióját Azure Cosmos DB, és alapértelmezés szerint olvasási adatokat képes kiszolgálni. Az adatréteg rendelkezésre állásának növeléséhez engedélyezheti a többrétű írást. Ez növeli az adatréteg rendelkezésre állását. A rendelkezésre állást gyengébb konzisztenciaszintek és rendelkezésre állási zónák alkalmazásával is növelheti.

A fenti megközelítés figyelembevétele esetén, ha magas rendelkezésre állást ér el az Azure Cosmos DB automatikus feladatátvételen, úgy konfigurálja a megoldást, hogy a futó alkalmazás a lehető legmagasabb rendelkezésre állású SLA-t használja.

Az alkalmazásréteg esetében a Traffic Manager kell konfigurálni beágyazott profilokkal. Ha ezt a kialakítást a legmagasabb szintre kényszeríti, régiónként skálázhatja a különböző alkalmazásválasztásokat. A régiónkénti üzembe helyezés is magas rendelkezésre állású megközelítést alkalmaz.

Teljesítmény

A rendszer teljesítményét számos tényező befolyásolja a számítás és az adatbázis szintjén. Az egyes App Service vagy egyéb számítási lehetőségek SKU-ja hatással van az egyes régiókban elérhető memóriára és magra. Emellett a számítási réteg által üzembe helyezett régiók száma határozza meg a kezelni képes skálát. A további helyek üzembe helyezése nyomást gyakorol a meglévő régiókra, és lineárisan növeli az alkalmazás által teljesítható maximális átviteli sebességet.

Cosmos DB úgy kell konfigurálni, hogy az ne okozna szűk keresztmetszetet a számítási réteg erőforrásaiban. A Cosmos DB minden adatbázist és tárolót automatikus skálázhatóra kell konfigurálni, és meg kell adni egy maximális kérelemegység-értéket, amely biztosítja, hogy a Cosmos DB a kérelmeket. A megfelelő maximális kérelemegység-értékek meghatározásához Cosmos DB teszteket futtathat az alkalmazás körülbelüli maximális átviteli sebességének közelében. Erősebb párjaikhoz képest a gyengébb konzisztenciaszintek nagyobb átviteli sebességet és teljesítménybeli előnyöket nyújtanak.

Kritikus fontosságú, hogy az Cosmos DB-ból beolvasott és az Cosmos DB-ba író kód logikájának megvalósításakor, függetlenül attól, hogy az SDK-n, Azure Functions-kötésen keresztül van-e, stb. úgy kell használni, hogy minden regionális API a legközelebbi régióhoz Cosmos DB PreferredLocations kéréseket. A fiók Azure Cosmos DB, az aktuális régió rendelkezésre állása és a megadott preferencialista alapján az SDK a legoptimálisabb végpontot választja az olvasási és írási műveletek végrehajtásához. Ez a folyamat jelentősen növeli a teljesítményt.

Rugalmasság

A nagyobb rugalmasság érdekében rendelkezésre állási zónákat használhat a Azure Cosmos DB üzembe helyezéséhez. A rugalmasság az üzembe helyezés során a konzisztenciaszinten választott Cosmos DB is függ. A konzisztenciaszinttől függően eltérő szintű rugalmasságot érhet el (további információért lásd a konzisztencia, a rendelkezésre állás és a teljesítményre vonatkozó részleteket).

Méretezhetőség

A skálázás a diagram számos szintjén alapul. Azure Cosmos DB a rugalmas skálázható és kiszámítható teljesítmény érdekében készült. Az alkalmazás szintjén meg kell néznie a használt számítási modellt. Azure Functions és App Service skálázása automatikus lehet. Az Azure Virtual Machines használhatja az Azure Virtual Machine Scale Sets. Ha tisztában van ezzel az okkal, mindig érdemes megfontolni egy kiszolgáló nélküli megoldást, amikor csak lehetséges.

Biztonság

Biztonsági szempontból olyan identitásalapú rendszert kell használnia, Azure Active Directory biztonságossá teheti a környezethez való hozzáférést. A háttéralkalmazás (a legjobb kialakítás szerint) felügyelt identitások használatával érhető el, bár érdemes megfontolni a Azure Active Directory Users és a Azure Key Vault használatának megközelítését is. Emellett a Cosmos DB-példányt is biztonságosra kell helyezni, hogy csak azok az entitások olvassanak és írjanak rá, amelyek különböző régiókban üzembe helyezett különböző háttérpéldányok. Az IP-korlátozás a beépített tűzfal használatával alkalmazható a fiókra.

Megjegyzés

A 2021. márciusi Ignite-ban az RBAC-Azure Active Directory közvetlenül a Cosmos DB SQL API-n is támogatjuk.

Következő lépések

További információ a Azure Cosmos DB:

További információ a Azure Traffic Manager:

Kapcsolódó megoldási ötletek:

Kapcsolódó teljes architektúrák:

Kapcsolódó architektúra-útmutató: