Глобальное распределение операций чтения с помощью API Azure Cosmos DB для MongoDB
Область применения: MongoDB
В этой статье описывается, как глобально распространить операции чтения с применением параметров чтения MongoDB с помощью API Azure Cosmos DB для MongoDB.
Необходимые компоненты
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Кроме того, бесплатную пробную версию Azure Cosmos DB можно использовать без подписки Azure, без оплаты и каких-либо обязательств. Или же можно использовать эмулятор Azure Cosmos DB из этого руководства с такой строкой подключения:
mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true
В этой статье краткого руководства приведены инструкции по настройке учетной записи Azure Cosmos DB с глобальным распределением и подключению к ней с помощью портал Azure.
Клонирование примера приложения
Откройте окно терминала Git, например Git Bash, и выполните команду cd
, чтобы перейти в рабочий каталог.
Затем выполните следующие команды, чтобы клонировать репозиторий с примером. В зависимости от платформы, которую вы хотите использовать, выберите один из следующих примеров репозиториев:
- Пример приложения .NET
- Пример приложения NodeJS
- Пример приложения Mongoose.
- Пример приложения Java
- Пример приложения SpringBoot.
git clone <sample repo url>
Выполнение приложения
В зависимости от используемой платформы установите необходимые пакеты и запустите приложение. Чтобы установить зависимости, выполните инструкции в файле сведений, включенном в репозиторий с примерами приложений. Например, в примере приложения NodeJS выполните команды ниже, чтобы установить необходимые пакеты и запустить приложение.
cd mean
npm install
node index.js
Приложение попытается подключиться к источнику MongoDB, и это подключение завершится сбоем из-за недопустимой строки подключения. Выполните инструкции в файле сведений для обновления строки подключения url
. Кроме того, укажите для параметра readFromRegion
регион чтения в своей учетной записи Azure Cosmos DB. Следующие инструкции взяты из примера приложения NodeJS:
* Next, substitute the `url`, `readFromRegion` in App.Config with your Azure Cosmos DB account's values.
После выполнения этих шагов пример приложения запустится, и мы получим следующие выходные данные:
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!
Чтение с использованием режима параметров чтения
Протокол MongoDB предоставляет следующие режимы параметров чтения для клиентов.
- ОСНОВНОЙ
- PRIMARY_PREFERRED.
- SECONDARY
- SECONDARY_PREFERRED.
- NEAREST.
Подробные сведения о поведении всех режимов параметров чтения MongoDB см. в этой документации. В Azure Cosmos DB основной регион соответствует региону записи, а дополнительный — региону чтения.
На основе общих сценариев мы рекомендуем использовать следующие параметры:
- Если требуются операции с высокой доступностью и низкой задержкой , используйте режим предпочтений для чтения В БЛИЖАЙШЕЕ время. Этот параметр направляет операции чтения в ближайший доступный регион. Обратите внимание, что если ближайшим регионом является регион записи, то эти операции будут направлены в этот регион.
- Если требуются высокая доступность и геораспределение операций чтения (задержка не является ограничением), используйте режим параметров чтения PRIMARY PREFERRED или SECONDARY PREFERRED. Эта настройка направляет операции чтения в регион, доступный для записи или чтения, соответственно. Если регион недоступен, запросы направляются в следующий доступный регион в соответствии с поведением параметров чтения.
В следующем фрагменте кода, взятого из примера приложения, показано, как настроить режим параметров чтения "NEAREST" в NodeJS:
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!");
});
Аналогичным образом в приведенном ниже фрагменте кода показано, как настроить режим параметров чтения "SECONDARY_PREFERRED" в 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!");
});
Кроме того, этот режим можно задать, передав readPreference
как параметр в универсальном коде ресурса (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();
});
Используйте соответствующие репозитории с примерами приложений для других платформ, например .NET и Java.
Чтение с использованием тегов
Кроме режима параметров чтения, в протоколе MongoDB можно использовать теги для направления операций чтения. В API Azure Cosmos DB для MongoDB region
тег по умолчанию включается в ответ isMaster
:
"tags": {
"region": "West US"
}
Таким образом, MongoClient может использовать тег region
с именем региона, чтобы направлять операции чтения в определенные регионы. Для учетных записей Azure Cosmos DB имена регионов можно найти в портал Azure слева в разделе "Параметры-реплика> данных" глобально. Этот параметр позволяет достичь изоляции операций чтения — в случаях, когда клиентскому приложению нужно направлять операции чтения только в определенный регион. Этот параметр идеально подходит для сценариев нерабочего или аналитического типа, которые работают в фоновом режиме и не задействуют критически важные рабочие службы.
В следующем фрагменте кода, взятого из примера приложения, показано, как настроить параметры чтения с тегами в 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!");
});
Используйте соответствующие репозитории с примерами приложений для других платформ, например .NET и Java.
В этой статье вы узнали, как глобально распространить операции чтения с применением параметров чтения с помощью API Azure Cosmos DB для MongoDB.
Очистка ресурсов
Если вы не собираетесь использовать это приложение дальше, удалите все ресурсы, созданные в ходе работы с этой статьей, на портале Azure, выполнив следующие действия:
- В меню слева на портале Azure щелкните Группы ресурсов, а затем выберите имя созданного ресурса.
- На странице группы ресурсов щелкните Удалить, в текстовом поле введите имя ресурса для удаления и щелкните Удалить.