Sobes.tech
Junior — Middle

Milline on teie kogemus sünkroonsete andmevahetuste rakendamisel serverite vahel?

sobes.tech AI

Vastus AI-lt

Sünkroonne andmevahetus serverite vahel toimub tavaliselt blokeerivate kõnede kaudu, kus klient ootab vastust serverilt enne jätkamist.

Minu kogemuse põhjal Go-ga kasutasin seda sageli standardpaketti net/http koos kõnega http.Client.Do(req), mis blokeerib täitmise kuni vastuse saamiseni.

Lihtne näide sünkroonilisest päringust:

resp, err := http.Get("https://example.com/api/data")
if err != nil {
    // vea käsitlemine
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    // vea käsitlemine
}

// Saadud andmete kasutamine
fmt.Println(string(body))

Selline lähenemine sobib, kui on vaja andmeid kohe saada ja töödelda, enne kui liikuda järgmise sammuga, kuni vahetus on lõppenud.

Raskeimate stsenaariumide jaoks saab kasutada TCP socket'e või RPC-d, kuid sünkroonse vahetuse olemus on blokeeriv kõne, mis ootab vastust teiselt serverilt.