使用来自计算引擎的简单查询,Google云数据存储缓慢(> 800毫秒)

时间:2016-11-06 21:54:17

标签: node.js google-cloud-platform google-cloud-datastore

当我尝试从(微)计算引擎查询Google Cloud数据存储区时,通常需要> 800毫秒才能获得回复。我得到的最好的是450毫秒,最差的是> 3秒。

我的印象是延迟应该更低,更低(例如20-80ms),所以我猜测我做错了什么。

这是我用来查询的(node.js)代码(来自只有一个实体的简单数据存储区):

const Datastore = require('@google-cloud/datastore');
const projectId = '<my-project-id>';

const datastoreClient = Datastore({
  projectId: projectId
});

var query = datastoreClient.createQuery('Test').limit(1);

console.time('query');
query.run(function (err, test) {
  if (err) {
    console.log(err);
    return;
  }
  console.timeEnd('query');
});

不确定它是否相关,但我的app-engine项目位于美中区域,我运行查询的计算引擎也是如此。

更新

经过一些测试后,我发现使用Google提供的Node.js库时所获得的默认身份验证(令牌?)在大约4分钟后过期。
换句话说:如果您使用相同的流程,但在请求之间等待4分钟或更长时间,查询时间将恢复到> 800毫秒。 我也尝试使用密钥文件进行身份验证,这似乎做得更好:后续请求仍然更快,但初始请求只需要一半的时间(> 400毫秒)。

1 个答案:

答案 0 :(得分:1)

您对数据存储区的初始请求所看到的延迟很可能是由于缓存已预热。数据存储区使用分布式体系结构来管理扩展,这使您的查询可以根据结果集的大小进行扩展。通过执行更多相同的查询,数据存储区为您的查询提供了更好的准备,并且结果的速度越一致。

如果您希望在较低的数据存储区访问速率上获得类似的结果速度,建议您配置自己的缓存层。 Google App Engine提供Memcache,该版本已针对数据存储区进行了优化。由于您是从Compute Engine发出请求,因此您可以使用其他第三方解决方案,例如RedisMemcached