Sobes.tech

Golang

Ai experiență în dezvoltarea și suportul sistemelor distribuite?

122

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

121

Care a fost cel mai mare volum de date stocate?

119

Care este încărcătura maximă în solicitări pe secundă pe care a gestionat-o cel mai încărcat serviciu? Este corect că ajunge până la 5–8 mii de solicitări pe secundă?

118

Cu ce baze de date și alte sisteme de stocare a datelor ați lucrat?

116

În ce direcție ai fi interesat să te dezvolți în ceea ce privește sarcinile și vectorul de carieră?

108

De ce iei în considerare oferte noi și de ce ai părăsit compania ta anterioară?

106

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

96

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

96

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

94

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

92

Cine citește canalul rezultat și unde scrie apoi rezultatul pentru ca metoda Status să poată accesa acest lucru?

90

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr conține ip:port-ul unei instanțe specifice func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs conțin adresele tuturor instanțelor balansabile func NewBalancer(addrs []string) *Balancer { data := make([]*backentry,len(addrs)) for i,addr := range addrs{ data[i] = &backentry{ backend: NewBackend(addr), inflight: 0, } } return &Balancer{backends:data} } func(b *Balancer)Invoke(ctx context.Context, req Request) (Response, error){ b.mu.Lock() entry := b.best() atomic.AddInt64(&entry.inflight,1) b.mu.Unlock() defer atomic.AddInt64(&entry.inflight,-1) return entry.backend.Invoke(ctx,req) } func(b *Balancer) best() *backentry{ var best *backentry for _,entry := b.backends{ if best == nil || atomic.LoadInt64(&entry.inflight) < atomic.LoadInt64(&best.inflight){ best = entry } } return best }

88

Pe câte gazde sau instanțe a funcționat serviciul? Câte containere au fost lansate?

88

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

87

Cum să implementați metoda Status pentru a obține starea sarcinii după ID?

74

// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil

67

// căutând cel mai bun -- ??? // dacă nu se găsește, compară inflight

54
/11