Использование нескольких потребителей вместе с CosmosDB - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь использовать подачу изменения базы данных космоса (я имею в виду https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-processor и https://github.com/Azure/azure-cosmos-dotnet-v2/tree/master/samples/code-samples/ChangeFeedProcessorV2).

Когда я запускаю несколько экземпляров потребителя, наблюдатель, кажется, видит только 1 диапазон ключей раздела. Я вижу только сообщение - Observer opened for partition Key Range 0, и оно начинает получать ленту изменений. Таким образом, корм получает только 1 потребитель в любой данный момент. Если я закрою одного потребителя, следующий доведется до счастья.

Кажется, я не могу понять ключи / диапазоны разделов в космосе db. В cosmos db я создал базу данных и коллекцию внутри нее. Я определил ключ раздела - / myId. Я храню уникальный идентификатор в myId. Я сохранил около 10000 транзакций в коллекции.

Когда я смотрю на диапазоны ключей секционирования, используя api (/ dbs / db-name / colls / coll-name / pkranges), я вижу только узел под PartitionKeyRanges. Ниже вывод, который я вижу

{
    "_rid": "LEAgAL7tmKM=",
    "PartitionKeyRanges": [
        {
            "_rid": "LEAgAL7tmKMCAAAAAAAAUA==",
            "id": "0",
            "_etag": "\"00007d00-0000-0000-0000-5c3645e70000\"",
            "minInclusive": "",
            "maxExclusive": "FF",
            "ridPrefix": 0,
            "_self": "dbs/LAEgAA==/colls/LEAgAL7tmKM=/pkranges/LEAgAL7tmKMCAAAAAAAAUA==/",
            "throughputFraction": 1,
            "status": "online",
            "parents": [],
            "_ts": 1547060711
        }
    ],
    "_count": 1
}

Разве это не должно показывать больше диапазонов разделов? Ожидается ли такое поведение?

Как заставить нескольких потребителей получать данные, как показано в https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-processor?

1 Ответ

0 голосов
/ 10 января 2019

TL; DR - вы должны иметь возможность игнорировать диапазоны ключей разделов и их количество и просто позволять процессору изменений подачи управлять этим для вас.

Диапазоны ключей раздела - это детали реализации, которые мы в настоящее время просочились. Короткий ответ - мы добавляем новые диапазоны ключей разделов, когда хотим реструктурировать то, как ваши данные хранятся в бэкэнде. Это может происходить по многим причинам, например, если вы добавляете больше данных, вы используете много RU для подраздела этих данных, или мы просто хотим перемешать вещи. Теоретически, если вы продолжите добавлять данные, мы в конечном итоге разделим диапазон на две части.

Мы работаем над некоторыми обновлениями для v3 SDK, которые в настоящее время находятся в предварительном просмотре, чтобы абстрагироваться от этого немного дальше, поскольку даже ответ, который я дал выше, довольно сложный, и у нас должен быть более понятный контракт для публичных API. .

...