DocumentDB最困难的事情之一是确定每天运行应用程序所需的每秒请求单位数(RUs / s),以及使用高峰期间。当你弄错了,DocumentDB客户端将抛出异常,这是一种糟糕的使用模式。
在DocumentDB示例中创建新集合时,我已经看到OfferThroughput值硬编码为400(似乎是最低的RU / s)。我原本认为在Azure门户中设置它是最好的,因此可以动态更改它而无需进行代码更改。
在代码中设置它的方案是什么,哪个值优先?
答案 0 :(得分:2)
我不得不同意,在DocumentDB上购买吞吐量的配置模型似乎非常不符合云计算。实际上,您要么预先配置一个峰值所需的最高级别,要么您自己编写一些代码来通过Azure SDK提高和降低吞吐量(当存在多个SDK时,这会变成一场噩梦针对该集合的尖峰来源)。
定价模式很荒谬。由于底层架构(特别是在250GB级别)似乎意味着可以很好地扩展,我们应该按使用收费。
旁注,因为它是动态的,你是编写代码,因为在Azure下似乎没有任何面向规则的解决方案可以提供帮助。
答案 1 :(得分:1)
Azure门户和SDK都使用REST API(https://msdn.microsoft.com/en-us/library/azure/mt632095.aspx)来更新集合的吞吐量。该门户使用DocumentDB的JavaScript客户端SDK。因此没有优先顺序或首选项顺序 - 最后一次更新性能调用将对集合有效。
关于哪些方案设置提供代码与门户中的吞吐量,这取决于您的首选项和部署过程。对于生产应用程序,代码更好,因为您可以轻松实现自动化。您可以动态更改吞吐量,也可以从多个集合的配置中统一执行。
答案 2 :(得分:1)
实际上,您只需要编写自己的限制文件即可,如documentdb所示。如果您得到一个DocumentClientException,其中ex.StatusCode == 429,请等待a Task.Delay(ex.RetryAfter),然后重试。直到遇到其他异常或成功。