如何降低 Azure 表存储延迟

Posted

技术标签:

【中文标题】如何降低 Azure 表存储延迟【英文标题】:How to lower Azure Table Storage latency 【发布时间】:2016-11-06 21:06:24 【问题描述】:

我正在尝试创建一个基于 NodeJS 的 Web 应用程序应用程序,该应用程序查询包含 1000 个条目的 Azure 表存储。 (我使用的是 Azure 跟踪订阅)

实现的逻辑使用分区键和行键检索唯一实体,因此它应该非常快,并且受到 Troy Hunt 发布的 blog 的启发,我预计延迟时间低于 7 毫秒。

app.get('/pick', function (req, res, next) 
    var parKey = req.param('parKey');
    var rowKey = req.param('rowKey');
    var getRes, startTime, endTime, tableSvc;

    tableSvc = azure.createTableService().withFilter(retryOperations);

    //Timestamp before accessing table storage
    startTime = new Date().getTime();

    tableSvc.retrieveEntity('lookupTable01', parKey, rowKey,
        function (error, result, response) 
            if (!error) 
                //Timestamp after returning the result
                endTime = new Date().getTime();
                getRes = JSON.stringify(result);
                res.send("found in " + (endTime - startTime) + " ms " + getRes);

             else 
            //Timestamp after returnung an error
                endTime = new Date().getTime();
                getRes = JSON.stringify(error);
                res.send("Error in " + (endTime - startTime) + " ms " + getRes);
            
)

我已在同一个西欧数据中心设置 Web 应用程序服务器和存储帐户以获得最佳结果。然而,最低延迟被证明是 47 毫秒(不包括网络延迟)

我还在美国东部数据中心尝试了相同的设置,并发现几乎相同的结果。

【问题讨论】:

如果您编辑问题以显示您的代码,这将非常有帮助。 【参考方案1】:

我们通常使用点查询[特殊的分区键和行键]来查询表,就像你做的那样。另一个因素是查询密度。基于分区的query可能很小。影响Azure表存储性能的因素也很多。比如位置、分区命名约定、限制数据返回、表的定义原则等等。有关如何提高 Azure 存储性能的更多详细信息,请参阅document。

【讨论】:

感谢您的帮助。我遵循了文档,但是延迟仍然很高。我将寻找一种不同的解决方案,它允许比 Azure 存储表产品更精细的控制。

以上是关于如何降低 Azure 表存储延迟的主要内容,如果未能解决你的问题,请参考以下文章

从azure存储容器下载多个小文件时速度慢,延迟高

Azure 函数队列触发器:如何设置出列消息的时间延迟

如何在 Azure 流分析中创建延迟滑动窗口

Azure 通知中心延迟问题

如何在 Azure 流分析中通过 IotHub.ConnectionDeviceId 对延迟函数进行分区?

如何延迟读取触发 HTTP 请求的正文,直到稍后在 Azure 函数中?