小编Max*_*xim的帖子

为什么Google的TrueTime API很难复制?

我不确定为什么媒体普遍表示谷歌的TrueTime API难以复制(有线,Slashdot等).

我可以理解如何获得谷歌实现的低错误间隔是一件困难的事情,但我不知道API本身将如何变得非常困难.

例如,我掀起了一个黑客攻击版本.这是间隔.

    typedef struct TT_interval {
            struct timeval earliest;
            struct timeval latest;
    } TT_interval;
Run Code Online (Sandbox Code Playgroud)

这是现在的功能.

    int TT_now(TT_interval* interval)
    {
        struct ntptimeval tv;
        struct timeval delta;

        struct timeval* earliest_p = &(interval->earliest);
        struct timeval* latest_p = &(interval->latest);
        struct timeval* now_p = &(tv.time);
        struct timeval* delta_p = δ

        timerclear(&delta);
        timerclear(&interval->earliest);
        timerclear(&interval->latest);

        if(ntp_gettime(&tv) == 0) {
            tv.maxerror = tv.maxerror > 0 ? tv.maxerror : -(tv.maxerror);

            delta.tv_sec = delta.tv_sec + (tv.maxerror / 1000);
            delta.tv_usec = delta.tv_usec + ((tv.maxerror % 1000) * 1000);

            if(delta.tv_usec …
Run Code Online (Sandbox Code Playgroud)

c time distributed-computing google-cloud-platform google-cloud-spanner

30
推荐指数
1
解决办法
9536
查看次数

在Spanner中避免使用IN子句和子查询进行散列连接

我在Spanner中有以下查询优化问题,并希望有一个我缺少的技巧,这将帮助我将查询规划器弯曲到我的意愿.

这是简化的架构:

create table T0 (
  key0  int64 not null,
  value int64,
  other int64 not null,
) primary key (key0);

create table T1 {
  key1  int64 not null,
  other int64 not null
} primary key (key1);
Run Code Online (Sandbox Code Playgroud)

并在IN子句中使用子查询进行查询:

select value from T0 t0
where t0.other in (
  select t1.other from T1 t1 where t1.key1 in (42, 43, 44)  -- note: this subquery is a good deal more complex than this
)
Run Code Online (Sandbox Code Playgroud)

通过T0的散列连接与子查询的输出生成10个元素集:

Operator                     Rows  Executions
-----------------------      ----- ----------
Serialize …
Run Code Online (Sandbox Code Playgroud)

sql google-cloud-platform google-cloud-spanner

10
推荐指数
1
解决办法
633
查看次数

如何使用python以编程方式获取GCP Bearer令牌

gcloud auth print-access-token给我一个Bearer令牌,以后可以使用;但是,这是一个shell命令。如何通过Google Cloud Python API以编程方式获取一个?

我看到了使用oauth2client先前示例,但现在已弃用。如何使用google.authoauthlib做到这一点oauth2client

python google-cloud-platform google-iam

10
推荐指数
4
解决办法
3486
查看次数

如何在 Hbase Row 和 Bigtable Row 上设置 TTL

我正在尝试评估是否可以在 HBase 或 Bigtable 中的单个行上设置 TTL。

我知道 Cassandra 允许在插入时使用 TTL。我想知道 HBase 和 Google Cloud Bigtable 中是否可以实现同样的功能。

INSERT INTO test (k,v) VALUES ('test', 1) USING TTL 10;
Run Code Online (Sandbox Code Playgroud)

hbase bigtable ttl google-cloud-platform google-cloud-bigtable

7
推荐指数
2
解决办法
3231
查看次数

条带错误:找不到与有效负载的预期签名匹配的签名

我有一个条纹Webhook,它调用Firebase函数。在此功能中,我需要验证此请求是否来自Stripe服务器。这是代码:

const functions = require('firebase-functions');
const bodyParser = require('body-parser');
const stripe = require("stripe")("sk_test_****");
const endpointSecret = 'whsec_****';
const app = require('express')();

app.use(bodyParser.json({
    verify: function (req, res, buf) {
        var url = req.originalUrl;
        if (url.startsWith('/webhook')) {
            req.rawBody = buf.toString()
        }
    }
}));

app.post('/webhook/example', (req, res) => {
    let sig = req.headers["stripe-signature"];

    try {
        console.log(req.bodyRaw)
        let event = stripe.webhooks.constructEvent(req.body, sig, endpointSecret);
        console.log(event);
        res.status(200).end()

        // Do something with event
    }
    catch (err) {
        console.log(err);
        res.status(400).end()
    }
});

exports.app = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)

Stripe文档中所述,我必须使用原始主体来执行此安全检查。 …

stripe-payments google-cloud-platform google-cloud-functions

7
推荐指数
5
解决办法
2002
查看次数

如何在现有的 Google Cloud VM 实例上启用嵌套虚拟化?

我正在尝试在现有 VM 实例上启用嵌套虚拟化。VM 位于 Intel Haswell CPU 平台上,因此可以实现嵌套虚拟化。

现在我在谷歌阅读了这篇支持文章:https : //cloud.google.com/compute/docs/instances/enable-nested-virtualization-vm-instances

在第一部分在实例上启用嵌套虚拟化它说如下:

从公共映像或具有操作系统的自定义映像创建启动磁盘。或者,您可以跳过此步骤并将许可证应用到您的一个 VM 实例中的现有磁盘。

但是我不知道如何将嵌套虚拟化许可证应用于现有的 VM 实例。描述的唯一步骤适用于新磁盘,我想将其应用于现有磁盘。

我的问题是:如何在现有的 Google Cloud 实例上启用嵌套虚拟化?

提前致谢,雨果。

google-compute-engine google-cloud-platform

7
推荐指数
1
解决办法
3408
查看次数

如何使用“gsutil”复制文件夹?

我已经阅读了有关该gsutil cp命令的文档,但仍然不明白如何复制文件夹以保持相同的权限。我试过这个命令:

gsutil cp gs://bucket-name/folder1/folder_to_copy gs://bucket-name/folder1/new_folder
Run Code Online (Sandbox Code Playgroud)

但它导致错误:

CommandException: No URLs matched
Run Code Online (Sandbox Code Playgroud)

虽然,当我在每个名称的末尾使用斜杠尝试它时,它没有显示任何错误:

gsutil cp gs://bucket-name/folder1/folder_to_copy/ gs://bucket-name/folder1/new_folder/
Run Code Online (Sandbox Code Playgroud)

但是,当我检查gsutil ls. 我究竟做错了什么?

google-cloud-storage gsutil google-cloud-platform

7
推荐指数
2
解决办法
1万
查看次数

Google Spanner - 如何将数据复制到另一个表?

由于spanner没有像这样的ddl功能

插入到 dest as (select * from source_table)

我们如何选择表的子集并将这些行复制到另一个表中?

我正在尝试将数据写入临时表,然后在一天结束时将数据移至存档表。但到目前为止我能找到的唯一解决方案是,从源表中选择行并将它们写入新表。这是使用 java api 完成的,并且它没有 ResultSet 到 Mutation 转换器,所以我需要将表的每一列映射到新表,即使它们完全相同。


另一件事是只更新一列数据,就像无法执行“update table_name set column=column-1”

再次要做到这一点,我需要读取该行并映射每个字段来更新 Mutation,但是如果有很多表,这没有用,我需要为所有表编写代码,转换的 ResultSet -> Mutation 也很好。

是否有任何通用的突变克隆器和/或任何其他方式在表之间复制数据?

google-cloud-platform google-cloud-spanner

6
推荐指数
1
解决办法
5393
查看次数

如何使用 Java API 在一次调用中将多个文件上传到 Google Cloud Storage?

我们想要将多个文件上传到 Google Cloud Storage。目前,我们正在使用 Google Java API 进行一一上传。代码如下:

public void uploadFile(File srcFile,String bucketName, String destPath) throws IOException {
      BlobId blobId = BlobId.of(bucketName, srcFile.getName());
      BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();

  long startTime = System.currentTimeMillis();

 // Blob blob = storage.create(blobInfo,new FileInputStream(srcFile));

  try (WriteChannel writer = storage.writer(blobInfo)) {
    try (FileInputStream in = new FileInputStream(srcFile)){


        byte[] buffer = new byte[1024 * 1024 * 100] ;

        writer.setChunkSize(buffer.length);

        int readSize = 0;

        while((readSize = in.read(buffer)) > 0) {
             writer.write(ByteBuffer.wrap(buffer, 0, readSize));
        }

        long endTime = System.currentTimeMillis();

      double writeTime …
Run Code Online (Sandbox Code Playgroud)

java rest google-cloud-storage google-cloud-platform

6
推荐指数
1
解决办法
6548
查看次数

数据流设置控制器服务帐户

我尝试为Dataflow设置控制器服务帐户。在我的数据流选项中,我有:

options.setGcpCredential(GoogleCredentials.fromStream(new FileInputStream("key.json")).createScoped(someArrays)); 
options.setServiceAccount("xxx@yyy.iam.gserviceaccount.com");
Run Code Online (Sandbox Code Playgroud)

但我得到:

WARNING: Request failed with code 403, performed 0 retries due to IOExceptions, performed 0 retries due to unsuccessful status codes, HTTP framework says request can be retried, (caller responsible for retrying): https://dataflow.googleapis.com/v1b3/projects/MYPROJECT/locations/MYLOCATION/jobs
Exception in thread "main" java.lang.RuntimeException: Failed to create a workflow job: (CODE): Current user cannot act as service account "xxx@yyy.iam.gserviceaccount.com. Causes: (CODE): Current user cannot act as service account "xxx@yyy.iam.gserviceaccount.com.
    at org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:791)
    at org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:173)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:311)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:297)
Run Code Online (Sandbox Code Playgroud)

...

Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 …
Run Code Online (Sandbox Code Playgroud)

dataflow google-cloud-platform google-cloud-dataflow google-cloud-iam

6
推荐指数
2
解决办法
1525
查看次数