Sobes.tech

Golang

type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Backends skaičius slice 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs apima visų balansuotų instancijų adresus func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }

Middle
Яндекс
74

Kokia yra vidutinė algoritminė sudėtingumas skaityti iš hash lentelės?

Middle+
МТСМТС
74

Ar buvo užduočių, kurias visiškai nenorėjote daryti? Kaip susidorojo su nemaloniais uždaviniais?

Senior
X5 groupX5 group
74

[vardas] paklausė: ar teko dirbti su TCP, UDP ar kitais protokolais?

Senior
BSS
74

Kiek turėjote Postgres instancijų projekte?

Senior
МВидео/эльдорадо
74

Naudojote Plane ar Telegram?

Senior
Effective IT
74

Parašykite kodą su worker pool'u, kad apdorotumėte URL sąrašą su paraleliniais HTTP užklausomis.

Senior
WildberriesWildberries
74

Papaskinkite apie komandos sudėtį ir plėtros procesus (sprintai, užduočių paskirstymas, kodo peržiūra).

Senior
Займиго
74

Ar turi įsivaizdavimą apie srauto ir proceso skirtumą?

Senior
OZONOZON
74

Kokius kriterijus renkatės naujai darbo vietai?

Middle+
Озон банк
74

Ar Go atlieka šiukšlių surinkėjas yra blokuojantis ar ne? Ar jo poveikis matomas gamyboje?

Senior
plata
74

Kas yra graceful shutdown?

Middle+
Napoleon IT
74

Kaip atrodo jūsų darbo paskirstymas — ką perduodate kolegoms po kodo rašymo?

Senior
СБЕРСБЕР
74

Kokiais kriterijais pasirinksi pasiūlymą, jei jų bus keletas?

Senior
FinFrame
74

Kaip veikia Go planuotojas? Papasakokite pagrindinius punktus.

Senior
WildberriesWildberries
74

Papaskink apie savo kuriamą pritaikytą logų analizės įrankį (ant OpenTelemetry). Kokia buvo tavo vaidmuo?

Senior
А7
74

Kuo skiriasi Kafka nuo RabbitMQ?

Senior
Займиго
74

Kokios konkrečios sinchronizacijos primitivas yra Go?

Senior
Prediva
74

Kodėl dabar nusprendėte ieškoti naujo darbo ir palikti [įmonę]?

Middle
YadroYadro
74

Kokios sinchronizacijos primitivas yra Go? Kuo skiriasi Mutex ir RWMutex? Kada naudoti atomics?

Middle+
101ХР101ХР
74
/412