Hulp bij sollicitatiegesprekken
Voorbereiding op sollicitatiegesprek
Hervatten
Zoeken naar een baan
Hulpbronnen
Abonnement
NL
Telegram
Inloggen
Menu openen
Hulp bij sollicitatiegesprekken
AI-assistent
Browser-extensie
Hulpbronnen
Downloaden
Veelgestelde vragen / Hulp
Voorbereiding op sollicitatiegesprek
Vragenbank
Interviewbank
Mock-interviews
Mentoren
Hulpbronnen
Veelgestelde vragen / Hulp
Zoeken naar een baan
Automatisering van het zoeken naar vacatures
Marktanalyse
Vacatures uit Telegram
Bedrijven
Hulpbronnen
Werken bij ons
Bloggen
Veelgestelde vragen / Documentatie
Telegramblog
Telegram-ondersteuning
Legaal
Terugbetaling
Voorwaarden
Privacy
Rechthebbenden
Terug naar vragen
Vragenbank
Golang - Ontwikkelaar
Vraag
Middle
type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr bevat ip:port van een specifieke instantie func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs bevatten de adressen van alle balanceerbare instanties 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 }
Markeer als voltooid
Vorige
Volgende