Задержка функций Google Cloud - PullRequest
0 голосов
/ 17 апреля 2020

Я хотел проверить возможность использования облачной функции Golang для обработки сообщений паба / подпрограммы в режиме реального времени. Я написал простую Go функцию, которая вычисляет дельту времени между unix отметкой времени в сообщении pub / sub и текущим временем:

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

И затем я публикую sh сообщений в pub / sub topi c (я также запустил это из облачной оболочки, чтобы устранить мой inte rnet speed):

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

Я могу представить себе, что через несколько секунд будет холодный старт, но после этого я ожидаю, что задержка значительно снизится до нескольких сотен миллисекунд, но мой тест ясно доказывает, что я не прав:

enter image description here

Кто-нибудь знает, находятся ли эти задержки в ожидаемом интервале или я что-то делаю ( очень очевидно) что тут не так?

...