Sdílet prostřednictvím


Globální distribuce čtení pomocí rozhraní API služby Azure Cosmos DB pro MongoDB

PLATÍ PRO: MongoDB

Tento článek ukazuje, jak globálně distribuovat operace čtení pomocí nastavení předvoleb čtení MongoDB pomocí rozhraní API služby Azure Cosmos DB pro MongoDB.

Požadavky

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Alternativně můžete vyzkoušet službu Azure Cosmos DB zdarma bez předplatného Azure, poplatků a závazků. Nebo můžete pro účely tohoto kurzu použít emulátor služby Azure Cosmos DB s připojovací řetězec:

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

Pokyny k nastavení účtu služby Azure Cosmos DB s globální distribucí a následném připojení k účtu služby Azure Cosmos DB najdete v tomto článku rychlého startu .

Klonování ukázkové aplikace

Otevřete okno terminálu Git, jako je třeba Git Bash, a pomocí cd přejděte do pracovního adresáře.

Spuštěním následujících příkazů naklonujte ukázkové úložiště. Na základě vaší platformy, která vás zajímají, použijte jedno z následujících ukázkových úložišť:

  1. Ukázková aplikace .NET
  2. Ukázková aplikace NodeJS
  3. Ukázková aplikace Mongoose
  4. Ukázková aplikace v Javě
  5. Ukázková aplikace SpringBoot
git clone <sample repo url>

Spuštění aplikace

V závislosti na použité platformě nainstalujte požadované balíčky a spusťte aplikaci. Pokud chcete nainstalovat závislosti, postupujte podle souboru README, který je součástí úložiště ukázkové aplikace. Například v ukázkové aplikaci NodeJS pomocí následujících příkazů nainstalujte požadované balíčky a spusťte aplikaci.

cd mean
npm install
node index.js

Aplikace se pokusí připojit ke zdroji MongoDB a selže, protože připojovací řetězec je neplatné. Aktualizujte připojovací řetězec urlpodle kroků v souboru README. readFromRegion Aktualizujte také oblast čtení v účtu služby Azure Cosmos DB. Následující pokyny pocházejí z ukázky NodeJS:

* Next, substitute the `url`, `readFromRegion` in App.Config with your Azure Cosmos DB account's values. 

Po provedení těchto kroků se ukázková aplikace spustí a vytvoří následující výstup:

connected!
readDefaultfunc query completed!
readFromNearestfunc query completed!
readFromRegionfunc query completed!
readDefaultfunc query completed!
readFromNearestfunc query completed!
readFromRegionfunc query completed!
readDefaultfunc query completed!
readFromSecondaryfunc query completed!

Čtení pomocí režimu předvoleb čtení

Protokol MongoDB poskytuje klientům následující režimy předvoleb čtení:

  1. PRIMÁRNÍ
  2. PRIMARY_PREFERRED
  3. SEKUNDÁRNÍ
  4. SECONDARY_PREFERRED
  5. NEJBLIŽŠÍ

Podrobnosti o chování jednotlivých režimů předvoleb čtení najdete v podrobné dokumentaci k chování předvoleb čtení MongoDB. Ve službě Azure Cosmos DB se primární mapuje na oblast zápisu a sekundární mapy na oblast ČTENÍ.

V závislosti na běžných scénářích doporučujeme použít následující nastavení:

  1. Pokud je vyžadována vysoká dostupnost a nízká latence čtení , použijte režim předvolby nejbližšího čtení. Toto nastavení směruje operace čtení do nejbližší dostupné oblasti. Všimněte si, že pokud je nejbližší oblastí oblast zápisu, tyto operace jsou směrovány do této oblasti.
  2. Pokud je vyžadována vysoká dostupnost a geografická distribuce čtení (latence není omezení), použijte režim předvoleb PRIMÁRNÍ UPŘEDNOSTŇOVANÉ nebo SEKUNDÁRNÍ PREFEROVANÉ čtení. Toto nastavení směruje operace čtení do dostupné oblasti zápisu nebo ČTENÍ. Pokud oblast není dostupná, požadavky se směrují na další dostupnou oblast podle chování předvolby čtení.

Následující fragment kódu z ukázkové aplikace ukazuje, jak v NodeJS nakonfigurovat předvolbu nejbližšího čtení:

  var query = {};
  var readcoll = client.db('regionDB').collection('regionTest', {readPreference: ReadPreference.NEAREST});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromNearestfunc query completed!");
  });

Podobně následující fragment kódu ukazuje, jak nakonfigurovat předvolby SECONDARY_PREFERRED čtení v NodeJS:

  var query = {};
  var readcoll = client.db('regionDB').collection('regionTest', {readPreference: ReadPreference.SECONDARY_PREFERRED});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromSecondaryPreferredfunc query completed!");
  });

Předvolbu čtení lze také nastavit předáním readPreference parametru v možnostech připojovací řetězec identifikátoru URI:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017?ssl=true&replicaSet=globaldb&readPreference=nearest';

// Database Name
const dbName = 'myproject';

// Use connect method to connect to the Server
MongoClient.connect(url, function(err, client) {
  console.log("Connected correctly to server");

  const db = client.db(dbName);

  client.close();
});

Projděte si odpovídající úložiště ukázkových aplikací pro jiné platformy, jako jsou .NET a Java.

Čtení pomocí značek

Kromě režimu předvolby čtení umožňuje protokol MongoDB používat značky k přímému čtení operací. V rozhraní API služby Azure Cosmos DB pro MongoDB region je značka ve výchozím nastavení isMaster součástí odpovědi:

"tags": {
         "region": "West US"
      }

MongoClient proto může použít region značku spolu s názvem oblasti k přímému operacím čtení do konkrétních oblastí. V případě účtů Služby Azure Cosmos DB se názvy oblastí nacházejí na webu Azure Portal na levé straně v části Data repliky nastavení> globálně. Toto nastavení je užitečné pro dosažení izolace čtení – případy, kdy klientská aplikace chce směrovat operace čtení pouze do konkrétní oblasti. Toto nastavení je ideální pro scénáře neprodukčního/analytického typu, které běží na pozadí a nejsou produkčními kritickými službami.

Následující fragment kódu z ukázkové aplikace ukazuje, jak nakonfigurovat předvolbu čtení se značkami v NodeJS:

 var query = {};
  var readcoll = client.db('regionDB').collection('regionTest',{readPreference: new ReadPreference(ReadPreference.SECONDARY_PREFERRED, {"region": "West US"})});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromRegionfunc query completed!");
  });

Projděte si odpovídající úložiště ukázkových aplikací pro jiné platformy, jako jsou .NET a Java.

V tomto článku jste se naučili, jak globálně distribuovat operace čtení pomocí předvoleb čtení s využitím rozhraní API služby Azure Cosmos DB pro MongoDB.

Vyčištění prostředků

Pokud nebudete tuto aplikaci dál používat, odstraňte všechny prostředky vytvořené tímto článkem na webu Azure Portal pomocí následujících kroků:

  1. V nabídce vlevo na portálu Azure Portal klikněte na Skupiny prostředků a pak klikněte na název vytvořeného prostředku.
  2. Na stránce skupiny prostředků klikněte na Odstranit, do textového pole zadejte prostředek, který chcete odstranit, a pak klikněte na Odstranit.

Další kroky