Как позволить пакету из нескольких запросов ждать завершения первого (распределенного) - PullRequest
1 голос
/ 12 июля 2020
• 1000 который принимает первый запрос, и как только он будет выполнен, остальные получат ответ. Это отлично работает при запуске одного экземпляра. Но если бы я хотел масштабировать это до кластера из 3 узлов, как бы я решил это?

cached, err := exists(item)
handleErr(err)
if cached == true {
    cachedReport := getCachedRecord(item)
    fmt.Println("found in cache, sending")
    w.Write(cachedReport)
} 
else {
    fmt.Println("got request for ", item)
    if group, ok := bmap[item]; ok {
        fmt.Println("joining group for " + item)
        member := group.Join()
        val := member.Recv()

        if b, ok := val.([]byte); ok {
            fmt.Println("received from waitng, sending")
            elapsed := time.Since(start)
            log.Printf("Request for %s took %s", ticker, elapsed)
            w.Write(b)
        }
    }

1 Ответ

0 голосов
/ 12 июля 2020

Звучит как отличный вариант использования для стороннего механизма / проекта организации очереди / обмена сообщениями:

У поставщиков облачных услуг также есть свои предложения:

...