Sobes.tech
Junior — Middle

Aké máte skúsenosti s implementáciou synchronných výmen dát medzi servermi?

sobes.tech AI

Odpoveď od AI

Synchronná výmena dát medzi servermi sa zvyčajne realizuje prostredníctvom blokujúcich volaní, kde klient čaká na odpoveď od servera pred pokračovaním.

Zo skúseností s Go som to často implementoval pomocou štandardného balíka net/http s volaním http.Client.Do(req), ktoré blokuje vykonanie, kým nedostane odpoveď.

Príklad jednoduchého synchronného požiadavku:

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

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    // spracovanie chyby
}

// Použitie získaných dát
fmt.Println(string(body))

Tento prístup je vhodný, keď je potrebné dáta okamžite získať a spracovať, bez prechodu na ďalší krok, kým nie je výmena ukončená.

Pre zložitejšie scenáre je možné použiť TCP sokety alebo RPC, ale podstata synchronnej výmeny je blokujúce volanie, ktoré čaká na odpoveď od iného servera.