我遇到问题,我的CosmosDB很忙,因此我丢失了数据,因为Stream Analyzer不会缓冲数据。
我目前的Azure设置如下:
WebAPI - > EventHub - >流分析工作 - > CosmosDB
我的问题是,如果我及时启动我的流并且它有很多记录,那么CosmosDB很忙并返回HTTP 429(超出限制),这将导致我有数据压力。
有没有办法限制Stream Analytics工作,还是应该采用完全不同的设计来避免数据删除?
答案 0 :(得分:0)
根据您的描述,我建议您可以尝试更改设计以避免使用dataloss,因为我们无法限制Stream Analytics工作。
我建议您尝试使用Stream Analytics Window functions的Tumbling Window。
翻滚窗口函数用于将数据流分段为不同的时间段并对其执行功能
我建议您可以使用此功能从一段时间内获取数据。然后,您可以将这些数据合并到一个文档中并存储到数据库中。
例如,您可以将窗口设置为1秒。这意味着您在一分钟内向数据库插入60条记录。
答案 1 :(得分:0)
您为自己的收藏配置了多少RU?您是否尝试过简单地扩展您的收藏以满足需求? CosmosDB最近还引入了RU /分钟的概念,它可以在背压情况下提供帮助,因为它可以在您超过每秒的预配置吞吐量时提供额外的吞吐量。
This article为使用RU /分钟提供了很好的介绍。
The Azure Dev blog talks about this more in detail。文章的相关引用(强调是我的强调)
为了测试RU / m,我们在开发环境中设计了追赶或故障恢复测试。以前我们为这个系列分配了300K RU / s。我们启用了RU / m并将计算容量从300K RU /秒降低到100K RU /秒。这给了我们额外的1M RU / m。为了将我们的写入推向极限并测试我们的追赶场景,我们模拟了上游故障。 我们停止了大约20个小时的流式传输。然后我们开始流式传输积压数据并观察应用程序是否可以使用较低的RU / s加上额外的RU / m来跟踪。开发环境也具有与我们在生产中看到的相同的负载。
答案 2 :(得分:0)
根据以下MSDN ASA确实在429上重试,我只是期望另一种行为。 https://blogs.msdn.microsoft.com/streamanalytics/2016/04/18/troubleshooting-azure-stream-analytics-jobs-on-new-portal-2/