Ai experiență în dezvoltarea și suportul sistemelor distribuite?
Golang
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
Care a fost cel mai mare volum de date stocate?
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ă?
Cu ce baze de date și alte sisteme de stocare a datelor ați lucrat?
În ce direcție ai fi interesat să te dezvolți în ceea ce privește sarcinile și vectorul de carieră?
De ce iei în considerare oferte noi și de ce ai părăsit compania ta anterioară?
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
Cine citește canalul rezultat și unde scrie apoi rezultatul pentru ca metoda Status să poată accesa acest lucru?
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 }
Pe câte gazde sau instanțe a funcționat serviciul? Câte containere au fost lansate?
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
Implementați metoda Queue
Cum să implementați metoda Status pentru a obține starea sarcinii după ID?
// cod pentru funcția best() // cu gestionare a erorilor pentru cazul în care nu există backend disponibil
Implementați metoda Queue
// căutând cel mai bun -- ??? // dacă nu se găsește, compară inflight