如何在Worker角色中使用WCF进行批量插入

时间:2013-04-27 15:25:40

标签: c# .net azure azure-storage azure-table-storage

我有一个在工作者角色中运行的WCF,其方法是在表中执行插入。

我有很多客户端将访问此方法以在表中插入数据,但我确实需要在此方面表现。

在我的插入方法中,我逐个插入,所以我想在我的WCF收到100条记录后更改它以进行批量插入。我怎么能这样做,我可以存储一个带有这些记录列表的变量,以便稍后进行批量插入?

1 个答案:

答案 0 :(得分:3)

您确实需要考虑数据的持久性(或缺乏)。如果您等待100次上传,您会在哪里临时存储数据?唯一的安全位置是blob,表或队列(或SQL数据库服务)。

如果你存储在RAM中,它是易失性的,你可能会丢失你的数据(加上你的数据将被分成多个服务器实例,因此在刷新其中一个服务器实例之前,你实际上最终可能会缓冲超过100个数据项)

如果存储在队列中,您将获得与写入表格相同的性能曲线。与blob相同。

这可能是一个不成熟的优化。表存储为每个分区提供每秒2,000个事务(在整个存储帐户中每秒最多20,000个事务)。您可以拥有多个存储帐户。

假设您仔细分区数据(使用不同的分区键,而不是将所有内容存储在一个分区中),您的存储吞吐量每秒应该会超过2,000个事务。

您还可以将最高10Gbps的入站数转移到您的存储帐户。考虑到我们新的8核56GB机器的最大 NIC带宽为2Gbps,您需要同时运行5个这样的带宽才能达到该限制。对于单核VM(每个核心100Mbps),您需要100个实例来充分利用存储帐户的入口带宽潜力。

有关存储帐户带宽的所有详细信息均在this article