Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure cosmosdb 使用CosmosDB change feed的多个使用者_Azure Cosmosdb_Azure Cosmosdb Sqlapi - Fatal编程技术网

Azure cosmosdb 使用CosmosDB change feed的多个使用者

Azure cosmosdb 使用CosmosDB change feed的多个使用者,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我正在尝试使用cosmos db change feed(我指的是和) 当我启动一个使用者的多个实例时,观察者似乎只看到一个分区键范围。我只看到一条消息-为分区键范围0打开了一个观察者,它开始接收更改提要。因此,在任何给定的点上,只有1个消费者接收馈送。如果我关闭一个消费者,下一个消费者就会高兴地接起 我似乎无法理解cosmos db中的分区键/范围。在COSMOSDB中,我创建了一个数据库和其中的一个集合。我已经定义了一个分区键-/myId。我在myId中存储唯一的guid。我在收藏中保存了大

我正在尝试使用cosmos db change feed(我指的是和)

当我启动一个使用者的多个实例时,观察者似乎只看到一个分区键范围。我只看到一条消息-
为分区键范围0打开了一个观察者,它开始接收更改提要。因此,在任何给定的点上,只有1个消费者接收馈送。如果我关闭一个消费者,下一个消费者就会高兴地接起

我似乎无法理解cosmos db中的分区键/范围。在COSMOSDB中,我创建了一个数据库和其中的一个集合。我已经定义了一个分区键-/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
}
这不应该显示更多的分区键范围吗?这是预期的行为吗


如何让多个消费者接收数据,如下面所示?

TL;DR-您应该能够忽略分区键范围和它们的数量,让Change Feed Processor为您管理它们

分区键范围是我们目前泄漏的一个实现细节。简单的回答是,当我们想要重新构造数据在后端的存储方式时,我们会添加新的分区键范围。发生这种情况的原因有很多,比如你添加了更多的数据,你为数据的一部分消耗了大量的RU,或者我们只是想改变一下。理论上,如果你继续添加数据,我们最终会将范围一分为二


我们正在为v3 SDK做一些更新,这些更新目前正在预览中,以进一步抽象这一点,因为即使是我上面给出的答案也非常牵强,我们应该有一个更容易理解的公共API合同。

谢谢!你能确认我的解释吗。到目前为止,我无法控制活跃消费者的数量。2.CosmosDb将通过分区键范围间接控制该功能。3.v3 SDK是否允许我控制活动消费者的数量?1。给定的Change Feed处理器主机Id将为给定的Change Feed处理器主机实例分配1个或多个PK范围。您可以控制实例的数量,但不能有效地超过PK范围计数。所以,是的,你可以控制它最多2。你不能直接控制PK范围的数量。我们控制它。3.V3只是进一步抽象了PK范围的概念,因此您只知道当前能够有效使用的最大消费者数量。它不会让你更多地控制PK范围。我们目前还没有计划对此进行控制。所以,我要说的是,我无法决定对于给定的变更反馈处理器,我需要多少并行性,这将由Cosmos DB为我决定。那么这意味着如果我的变更提要处理器在处理提要时很慢,那么我不能通过增加实例数量来增加并行度来提高速度?在本文档中,change feed处理器似乎是可伸缩的,但实际上并非如此:(