使用Node.js从Cloud Functions读取Cloud Bigtable花费> 1500毫秒

时间:2019-06-07 08:00:07

标签: google-cloud-functions google-cloud-bigtable

我正在尝试使用Node.JS通过Google Cloud Functions读取Cloud Bigtable密钥,并且能够读取它,但是Cloud Function的执行时间超过1500ms。

我听说Cloud Bigtable在数据检索方面非常快,但是在这种情况下却没有发生。

有人可以帮我解决我在这里做错了吗

我试图全局加载Bigtable库和对象:

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */

// Imports the Google Cloud client library
const Bigtable = require('@google-cloud/bigtable');

const TABLE_ID = '';
const COLUMN_FAMILY_ID = '';
const COLUMN_QUALIFIER = '';
const INSTANCE_ID = '';

// Creates a Bigtable client
const bigtable = new Bigtable();

// Connect to an existing instance:my-bigtable-instance
const instance = bigtable.instance(INSTANCE_ID);

// Connect to an existing table:my-table
const table = instance.table(TABLE_ID);

const filter = [{
  family: COLUMN_FAMILY_ID,
}, {
  column: COLUMN_QUALIFIER
}];

exports.helloWorld = (req, res) => {

    console.log("started");

    (async () => {
        try {

          var query_params = req.query;
          var rowkey = query_params.key;

          console.log("before query");

          const [singleRow] = await table.row(rowkey).get({filter});

          console.log("after query");

          res.status(200).send();

        } catch (err) {
            // Handle error performing the read operation
            console.error(`Error reading rows :`, err);
        }
    })();

};

我已将控制台日志放在各个位置,并且查询之前和查询之后的日志时间大约有1500ms。

1 个答案:

答案 0 :(得分:3)

按照documentation

  

要想从Cloud Bigtable获得良好的性能,必须设计一个架构,使其能够在每个表之间平均分配读写。

意思是,Bigtable的性能在很大程度上取决于架构设计,例如工作负载,每行的单元数,每个集群的节点,磁盘等。不仅访问它的环境(使用您的代码,我还访问了我的示例Bigtable表) GCF 750毫秒,Shell 4000毫秒)。

此外,如果您希望正确测试Bigtable性能,建议在正确的情况下进行操作:

  
      
  1. 使用生产实例。开发实例不会给你   准确了解生产实例在负载下的性能。

  2.   
  3. 至少使用300 GB的数据。 Cloud Bigtable的1 TB效能最佳       或更多数据。但是,300 GB的数据足以提供       在3节点群集上进行性能测试的合理结果。上       较大的群集,每个节点至少使用100 GB的数据。

  4.   
  5. 保持低于每个节点的建议存储利用率。对于       详细信息,请参阅每个节点的存储利用率。

  6.   
  7. 在测试之前,请进行大量的预测试几分钟。这一步       让Cloud Bigtable有机会在您的节点之间平衡数据       根据它观察到的访问模式。

  8.   
  9. 运行测试至少10分钟。此步骤使Cloud Bigtable       进一步优化您的数据,这有助于确保您进行测试       从磁盘读取以及从内存缓存的读取。

  10.