我正在尝试使用以下代码将手动容器的吞吐量替换为自动缩放
container.ReplaceThroughputAsync(ThroughputProperties.CreateAutoscaleThroughput(4000));
这将引发异常。错误”:[“必须提供x-ms-cosmos-migrate-offer-to-autopilot,并且offercontent不得包含autopilotSettings,以便从手动吞吐量迁移到自动缩放。”
无法在CosmosDB文档上找到任何与此相关的内容。我目前使用的是CosmosDB 3. 12 V3 .Net SDK。
3条答案
按热度按时间bf1o4zei1#
现在不支持通过SDK将吞吐量从手动更改为自动缩放。方法
ReplaceThroughputAsync
只能更改吞吐量。你应在Azure门户上更改此设置。lxkprmvk2#
Azure Cosmos DB "Replace an Offer" REST API method允许在手动和自动缩放之间切换吞吐量模式。我不会在这里重复该方法的全部文档,但要点是,根据您的方向,您必须在正文的“content”属性中提供一个特殊的值,以及一个特定的自定义HTTP请求头。
{ "offerThroughput": -1 }
x-ms-cosmos-migrate-offer-to-autopilot=true
{ "offerAutopilotSettings": {"maxThroughput": -1} }
x-ms-cosmos-migrate-offer-to-manual-throughput=true
使用REST API比SDK要复杂得多。下面的C#类总结了如何更改吞吐量方法。您需要nuget包“Microsoft.Azure.Cosmos”。
用法:
qybjjes13#
注:不是此问题的答案,但与cosmos-db数据库处于自动缩放模式时以编程方式更改吞吐量有关。
使用微软Azure Cosmos;
使用案例:我必须执行一小时的夜间工作,此工作具有高吞吐量需求(50 K RU/s),但我的正常负载不高于(10 K RU/s)。在此工作开始时,我将自动缩放增加到50 K,而在工作完成后,我将其减少10 K以最佳化成本。因为成本范围从(x的10%)到x,所以我想要维持成本最佳化的临界值。
如需进一步阅读:https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/cosmos-db/how-to-provision-autoscale-throughput.md#change-the-autoscale-max-throughput-rus