首页 > 解决方案 > 谷歌云函数延迟

问题描述

我想看看使用 Golang 云功能实时处理发布/订阅消息的可行性。我写了一个简单的 Go 函数来计算 pub/sub 消息中的 unix 时间戳和当前时间之间的时间差:

package cloudfunction

import (
    "context"
    "log"
    "strconv"
    "time"
)

// PubSubMessage is the payload of a Pub/Sub event.
type PubSubMessage struct {
    Data []byte `json:"data"`
}

// HelloPubSub hellos to the world.
func HelloPubSub(ctx context.Context, m PubSubMessage) error {
    unix := string(m.Data)
    i, err := strconv.ParseInt(unix, 10, 64)
    if err != nil {
        panic(err)
    }
    tm := time.Unix(i, 0)
    tnow := time.Now()
    log.Println("Latency cloud function : ", tnow.Sub(tm))
    return nil
}

随后我可以部署该功能(我位于比利时,所以我使用 europe-west1 区域):

gcloud functions deploy HelloPubSub --runtime go113 --trigger-topic cloudfunction --region europe-west1

然后我通过以下方式将消息发布到 pub/sub 主题(我还从云 shell 运行它以消除我的互联网速度):

gcloud pubsub topics publish cloudfunction --message $(date +"%s")

我可以想象会有几秒钟的冷启动,但之后我预计延迟会显着下降到大约几百毫秒,但我的测试清楚地证明我错了:

在此处输入图像描述

有人知道这些延迟是否在预期的延迟间隔内,还是我在这里做错了什么(非常明显)?

标签: gogoogle-cloud-functions

解决方案


推荐阅读