将多个使用者与CosmosDB更改提要一起使用

时间:2019-01-10 02:33:01

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我正在尝试使用cosmos db更改供稿(我指的是https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-processorhttps://github.com/Azure/azure-cosmos-dotnet-v2/tree/master/samples/code-samples/ChangeFeedProcessorV2)。

当我启动一个使用者的多个实例时,观察者似乎只能看到1个分区键范围。我只看到一条消息-Observer opened for partition Key Range 0,它开始接收更改供稿。因此,在任何给定时间点只有1个消费者接收到提要。如果我关闭一个消费者,下一个消费者会很高兴。

我似乎无法理解cosmos db中的分区键/范围。在cosmos db中,我创建了一个数据库和其中的一个集合。我定义了一个分区键-/ myId。我在myId中存储唯一的GUID。我已经在集合中保存了大约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 :(得分:1)

TL; DR-您应该能够忽略分区键范围及其所拥有的数量,而只需让Change Feed Processor为您管理分区键范围即可。

分区键范围是我们当前泄漏的实现细节。简短的答案是,当我们要重组数据在后端中的存储方式时,我们将添加新的分区键范围。发生这种情况的原因有很多,例如添加更多的数据,为该数据的一个子部分消耗大量的RU,或者我们只是想对周围的事物进行洗牌。从理论上讲,如果您继续添加数据,我们最终会将范围分成两部分。

我们正在为v3 SDK进行一些更新,这些更新目前正在预览中,以进一步抽象该内容,因为即使我上面给出的答案也很容易动摇,而且我们应该有一个更容易理解的公共API合同