我正在尝试使用cosmos db更改供稿(我指的是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个消费者接收到提要。如果我关闭一个消费者,下一个消费者会很高兴。
我似乎无法理解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下显示的数据?
答案 0 :(得分:1)
TL; DR-您应该能够忽略分区键范围及其所拥有的数量,而只需让Change Feed Processor为您管理分区键范围即可。
分区键范围是我们当前泄漏的实现细节。简短的答案是,当我们要重组数据在后端中的存储方式时,我们将添加新的分区键范围。发生这种情况的原因有很多,例如添加更多的数据,为该数据的一个子部分消耗大量的RU,或者我们只是想对周围的事物进行洗牌。从理论上讲,如果您继续添加数据,我们最终会将范围分成两部分。
我们正在为v3 SDK进行一些更新,这些更新目前正在预览中,以进一步抽象该内容,因为即使我上面给出的答案也很容易动摇,而且我们应该有一个更容易理解的公共API合同