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


Oktatóanyag: Globális disztribúció beállítása az Azure Cosmos DB for NoSQL használatával

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Ebben a cikkben bemutatjuk, hogyan állíthatja be az Azure Cosmos DB globális disztribúcióját az Azure Portal használatával, majd hogyan csatlakozhat a NoSQL API-val.

Ez a cikk a következő feladatokat mutatja be:

Globális adatbázis-régiók hozzáadása az Azure Portal használatával

Az Azure Cosmos DB világszerte minden Azure-régióban elérhető. Miután kiválasztotta az adatbázisfiók alapértelmezett konzisztenciaszintjét, egy vagy több régiót társíthat hozzá (a választott alapértelmezett konzisztenciaszinttől és a globális terjesztés szükségleteitől függően).

  1. Az Azure Portalon a bal oldali sávon kattintson az Azure Cosmos DB lehetőségre.

  2. Az Azure Cosmos DB oldalon válassza ki a módosítandó adatbázis-fiókot.

  3. A fiók lapon kattintson az Adatok globális replikálása lehetőségre a menüben.

  4. A térkép régióira, majd a Mentés gombra kattintva választhatja ki a hozzáadni vagy eltávolítani kívánt régiókat az Adatok globális replikálása lapon. A régiók hozzáadásának költsége van, további információkat az árképzést ismertető oldalon vagy a Globális adatterjesztés az Azure Cosmos DB-vel című cikkben talál.

    Kattintson a térkép régióira azok hozzáadásához vagy eltávolításához

Ha hozzáadta a második régiót, elérhetővé válik a Manuális feladatátvétel funkció a Portal Adatok globális replikálása oldalán. Ezzel a funkcióval tesztelhető a feladatátvételi folyamat vagy módosítható az elsődleges írási régió. Miután hozzáadta a harmadik régiót, ugyanazon az oldalon elérhetővé válik a Feladatátvételi prioritások funkció, így módosíthatja az olvasások feladatátvételi sorrendjét.

Globális adatbázis-régiók kiválasztása

Két vagy több régió konfigurálására két gyakori forgatókönyv áll rendelkezésre:

  1. Kis késleltetésű adathozzáférés biztosítása a végfelhasználóknak, legyenek bárhol a világon
  2. Regionális rugalmasság hozzáadása az üzletmenet-folytonosság és a vészhelyreállítás (BCDR) érdekében

Ha kis késleltetést szeretne biztosítani a végfelhasználók számára, javasolt, hogy az alkalmazást és az Azure Cosmos DB-t is abban a régióban való helyezze üzembe, amelyben az alkalmazások felhasználói találhatók.

A BCDR esetében ajánlott régiókat hozzáadni az Azure régióközi replikációjában leírt régiópárok alapján: Üzletmenet-folytonosság és vészhelyreállítási cikk.

Csatlakozás egy előnyben részesített régióhoz a NoSQL API használatával

A globális terjesztés kihasználása érdekében az ügyfélalkalmazások megadhatják a preferált régiók sorrendbe rendezett listáját a dokumentumokkal kapcsolatos műveletek elvégzéséhez. Az SQL SDK az Azure Cosmos DB-fiók konfigurációja, az aktuális régiónkénti rendelkezésre állás és a megadott preferencialista alapján fogja kiválasztani az optimális végpontot az írási és olvasási műveletek végrehajtásához.

A preferencialista meghatározására akkor kerül sor, amikor kapcsolatot inicializál az SQL SDK-k használatával. Az SDK-k elfogadnak egy opcionális paramétert PreferredLocations , amely az Azure-régiók rendezett listája.

Az SDK automatikusan elküldi az írásokat az aktuális írási régióba. A rendszer minden olvasást az előnyben részesített helyek listájában szereplő első elérhető régióba küld. Ha a kérés meghiúsul, az ügyfél a következő régióba küldi a listát.

Az SDK csak az előnyben részesített helyeken megadott régiókból próbál olvasni. Így például ha az Azure Cosmos DB-fiók négy régióban érhető el, de az ügyfél csak két olvasási(nem írási) régiót ad meg az PreferredLocationsadott régión belül, akkor az olvasási régióból nem lesznek kiszolgálva olvasások, amelyek nincsenek megadva.PreferredLocations Ha a listában megadott olvasási régiók nem érhetők el, az PreferredLocations olvasások írási régión kívül lesznek kézbesítve.

Az alkalmazás két tulajdonság ellenőrzésével ellenőrizheti az SDK által kiválasztott aktuális írási végpontot és olvasási végpontot, WriteEndpoint valamint ReadEndpointaz SDK 1.8-s és újabb verzióiban elérhető végpontot. Ha a PreferredLocations tulajdonság nincs beállítva, az összes kérés az aktuális írási régióból lesz kézbesítve.

Ha nem adja meg az előnyben részesített helyeket, de a metódust setCurrentLocation használta, az SDK automatikusan feltölti az előnyben részesített helyeket az ügyfél által futtatott aktuális régió alapján. Az SDK a régiókat az aktuális régióhoz való közelség alapján rendeli meg.

.NET SDK

Az SDK a kód módosítása nélkül használható. Ebben az esetben az SDK automatikusan átirányítja az olvasásokat és az írásokat az aktuális írási régióba. A .NET SDK 1.8-as és újabb verzióiban a DocumentClient konstruktor ConnectionPolicy paramétere rendelkezik egy Microsoft.Azure.Documents.ConnectionPolicy.PreferredLocations nevű tulajdonsággal. Ez a tulajdonság egy <string> típusú gyűjtemény, amelynek egy listát kell tartalmaznia a régiónevekkel. A sztringértékek az Azure-régiók lap régiónév oszlopában vannak formázva, szóközök nélkül az első és az utolsó karakter előtt vagy után.

Az aktuális írási és olvasási végpontokat a DocumentClient.WriteEndpoint és a DocumentClient.ReadEndpoint tulajdonság tartalmazza.

Feljegyzés

A végpontok URL-címei nem tekinthetők hosszú élettartamú állandóknak. A szolgáltatás bármikor frissítheti őket. Az SDK automatikusan kezeli ezt a módosítást.

Ha a .NET V2 SDK-t használja, a PreferredLocations tulajdonság használatával állítsa be az előnyben részesített régiót.

// Getting endpoints from application settings or other configuration location
Uri accountEndPoint = new Uri(Properties.Settings.Default.GlobalDatabaseUri);

ConnectionPolicy connectionPolicy = new ConnectionPolicy();

//Setting read region selection preference
connectionPolicy.PreferredLocations.Add(LocationNames.WestUS); // first preference
connectionPolicy.PreferredLocations.Add(LocationNames.EastUS); // second preference
connectionPolicy.PreferredLocations.Add(LocationNames.NorthEurope); // third preference
// initialize connection
DocumentClient docClient = new DocumentClient(
    accountEndPoint,
    credential,
    connectionPolicy);

// connect to DocDB
await docClient.OpenAsync().ConfigureAwait(false);

Másik lehetőségként használhatja a SetCurrentLocation tulajdonságot, és hagyhatja, hogy az SDK a közelség alapján válassza ki az előnyben részesített helyet.

// Getting endpoints from application settings or other configuration location
Uri accountEndPoint = new Uri(Properties.Settings.Default.GlobalDatabaseUri);

ConnectionPolicy connectionPolicy = new ConnectionPolicy();

connectionPolicy.SetCurrentLocation("West US 2"); /

// initialize connection
DocumentClient docClient = new DocumentClient(
    accountEndPoint,
    credential,
    connectionPolicy);

// connect to DocDB
await docClient.OpenAsync().ConfigureAwait(false);

Node.js/JavaScript

Feljegyzés

A végpontok URL-címei nem tekinthetők hosszú élettartamú állandóknak. A szolgáltatás bármikor frissítheti őket. Az SDK automatikusan kezeli ezt a módosítást.

Az alábbiakban egy kódpéldát láthat Node.js/JavaScripthez.

// Setting read region selection preference, in the following order -
// 1 - West US
// 2 - East US
// 3 - North Europe
const preferredLocations = ['West US', 'East US', 'North Europe'];

// initialize the connection
const client = new CosmosClient({ endpoint, aadCredentials: tokenCredential, connectionPolicy: { preferredLocations } });

Python SDK

Az alábbi kód bemutatja, hogyan állíthat be előnyben részesített helyeket a Python SDK használatával:

connectionPolicy = documents.ConnectionPolicy()
connectionPolicy.PreferredLocations = ['West US', 'East US', 'North Europe']
client = cosmos_client.CosmosClient(ENDPOINT, credential=token_credential, connectionPolicy)

Java V4 SDK

Az alábbi kód bemutatja, hogyan állíthat be előnyben részesített helyeket a Java SDK használatával:

ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add("East US");
preferredRegions.add( "West US");
preferredRegions.add("Canada Central");

CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .credential(tokenCredential)
                .preferredRegions(preferredRegions)
                .contentResponseOnWriteEnabled(true)
                .buildAsyncClient();

Spark 3-összekötő

Az előnyben részesített területi listát a spark.cosmos.preferredRegionsList konfigurációval határozhatja meg, például:

val sparkConnectorConfig = Map(
  "spark.cosmos.accountEndpoint" -> cosmosEndpoint,
  "spark.cosmos.preferredRegionsList" -> "[West US, East US, North Europe]"
  // other settings
)

REST

Miután egy adatbázisfiók több régióban elérhetővé vált, az ügyfelek lekérdezhetik a rendelkezésre állását egy GET kérés végrehajtásával ezen az URI-n https://{databaseaccount}.documents.azure.com/

A szolgáltatás visszaadja a régiók listáját és a replikák régiókhoz tartozó Azure Cosmos-DB végpont URI-jait. A válasz az aktuális írási régiót is tartalmazni fogja. Az ügyfél ezután a következő módon választhatja ki a megfelelő végpontot a további REST API-kérésekhez.

Példaválasz

{
    "_dbs": "//dbs/",
    "media": "//media/",
    "writableLocations": [
        {
            "Name": "West US",
            "DatabaseAccountEndpoint": "https://globaldbexample-westus.documents.azure.com:443/"
        }
    ],
    "readableLocations": [
        {
            "Name": "East US",
            "DatabaseAccountEndpoint": "https://globaldbexample-eastus.documents.azure.com:443/"
        }
    ],
    "MaxMediaStorageUsageInMB": 2048,
    "MediaStorageUsageInMB": 0,
    "ConsistencyPolicy": {
        "defaultConsistencyLevel": "Session",
        "maxStalenessPrefix": 100,
        "maxIntervalInSeconds": 5
    },
    "addresses": "//addresses/",
    "id": "globaldbexample",
    "_rid": "globaldbexample.documents.azure.com",
    "_self": "",
    "_ts": 0,
    "_etag": null
}
  • Minden PUT, POST és DELETE kérésnek a megadott írási URI-ra kell lépnie
  • Az összes GET és más írásvédett kérés (például lekérdezések) az ügyfél által választott végpontra kerülhetnek

A csak olvasási régiókba érkező írási kérelmek a 403-as HTTP-hibakóddal („Tiltott”) hiúsulnak meg.

Ha az írási régió az ügyfél kezdeti felderítési fázisa után változik, az előző írási régióba történő későbbi írások a 403-at tartalmazó HTTP-hibakóddal ("Tiltott") meghiúsulnak. Az ügyfélnek ilyenkor ismét le kell kérnie a régiók listáját a GET metódussal a frissített írási régió beszerzéséhez.

Ezzel el is végezte az oktatóanyagot. Ha meg szeretné ismerni, hogyan kezelheti a globálisan replikált fiók konzisztenciáját, olvassa el a Konzisztenciaszintek az Azure Cosmos DB-ben című cikket. További információ a globális adatbázis-replikáció működéséről az Azure Cosmos DB szolgáltatásban: Globális adatterjesztés az Azure Cosmos DB-vel.

Következő lépések

Ebben az oktatóanyagban a következőket hajtotta végre:

  • Globális terjesztés konfigurálása az Azure Portallal
  • Globális disztribúció konfigurálása a NoSQLs API használatával

Továbbléphet a következő oktatóanyagra, amelyből megtudhatja, hogyan fejleszthet helyileg az Azure Cosmos DB helyi emulátorával.

Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.