Sobes.tech

Golang

Quel a été le plus grand volume de données stockées?

119

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

119

Quelle est la charge maximale en requêtes par seconde que le service le plus chargé a gérée ? Est-il correct que cela atteint jusqu'à 5–8 mille requêtes par seconde ?

118

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

117

Avec quelles bases de données et autres systèmes de stockage de données avez-vous travaillé?

116

Dans quelle direction seriez-vous intéressé à vous développer en termes de tâches et de vecteur de carrière?

108

Pourquoi envisagez-vous de nouvelles offres et pourquoi avez-vous quitté votre précédente entreprise?

106

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

96

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

94

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

92

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

92

Qui lit le canal résultant et où écrit-il ensuite le résultat pour que la méthode Status puisse y accéder ?

90

Sur combien d'hôtes ou d'instances le service fonctionnait-il ? Combien de conteneurs ont été lancés ?

88

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contient ip:port d'une instance spécifique func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs contiennent les adresses de toutes les instances équilibrables 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

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

87

Comment implémenter la méthode Status pour obtenir l'état de la tâche par ID ?

74

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

67

// à la recherche du meilleur -- ??? // si non trouvé, compare inflight

54
/11