• 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)
}
}