#azure-cosmosdb #azure-cosmosdb-sqlapi
#azure-cosmosdb #azure-cosmosdb-sqlapi
Вопрос:
Я использую многорегиональную учетную запись Cosmos DB (запись в один регион). В настоящее время она включена в Восточной и западной частях США. Регион записи — Запад США.
Прослушиватели каналов изменений развернуты как в Восточной, так и в западной части США. Я хотел понять, могу ли я указать, что слушатели, развернутые в восточной части США, считывают канал изменений с востока США, а слушатели на Западе США считывают канал изменений с запада США. Или все слушатели всегда будут считывать канал изменений из региона записи?
Ответ №1:
Вы, безусловно, можете заставить своих слушателей читать из ближайшего региона, что должно улучшить задержку. Вы можете использовать атрибут PreferredLocations для настройки этого:
var localPolicy = new ConnectionPolicy();
localPolicy.PreferredLocations.Add("East US");
// Builder initialization
.WithFeedCollection(new DocumentCollectionInfo()
{
DatabaseName = DbName,
Uri = new Uri(uri),
CollectionName = feedCollection,
MasterKey = key,
ConnectionPolicy = localPolicy
})
.BuildAsync();
Комментарии:
1. Спасибо за ответ. Один из последующих вопросов здесь: нужно ли мне также устанавливать аналогичную политику для коллекции аренды, или я всегда должен использовать регион записи для коллекции аренды. Я использую библиотеку change feed processor, и, насколько я понимаю, в коллекции аренды будут выполняться операции чтения и записи, в то время как будут выполняться только чтения из коллекции каналов.
2. Коллекция аренды может находиться в другой отдельной учетной записи, и вы также можете настроить для нее предпочтительные местоположения, которые могут быть одинаковыми или нет. Имейте в виду, что, поскольку сбор арендной платы будет выполнять запись и чтение в одной основной учетной записи, у вас нет особого выбора, он всегда относится к региону записи. Однако для нескольких основных учетных записей это обеспечивает большую гибкость, поскольку может выполнять запись в любой регион.