Jas*_*ung 8 .net azure parallel-extensions
简短版本:我们能否以多线程方式从数十个或数百个表分区中读取数据,以提高数量级的性能?
长版本:我们正在开发一个在Azure表存储中存储数百万行的系统.我们将数据分区为小分区,每个分区包含大约500条记录,代表单位的一天数据.
由于Azure没有"总和"功能,为了提取一年的数据,我们要么必须使用一些预缓存,要么自己在Azure Web或辅助角色中对数据求和.
假设如下: - 读取分区不会影响另一个分区的性能 - 读取分区有一个基于网络速度和服务器检索的瓶颈
然后我们可以猜测,如果我们想要快速总结大量数据(1年365个分区),我们可以使用大规模并行算法,它几乎可以完美地扩展到线程数.例如,我们可以使用具有50个以上线程的.NET并行扩展,并获得巨大的性能提升.
我们正在努力设置一些实验,但我想看看之前是否已经完成.由于.NET端基本上处于等待高延迟操作的空闲状态,因此这对于多线程来说似乎是完美的.
在给定时间段(大约500 req / s)中,可以针对一个存储帐户和特定分区或存储服务器执行的事务数量受到限制。因此,从这个意义上讲,可以并行执行的请求数量有一个合理的限制(在开始看起来像DoS攻击之前)。
另外,在实现中,我会警惕对客户端施加的并发连接限制,例如通过System.Net.ServicePointManager。我不确定Azure存储客户端是否受这些限制的约束;他们可能需要调整。