Sobes.tech

Golang

Haben Sie während Ihrer gesamten Berufstätigkeit Führungsaufgaben übernommen?

117

Mit welchen Datenbanken und anderen Datenspeichersystemen haben Sie gearbeitet?

114

In welche Richtung wären Sie interessiert, sich in Bezug auf Aufgaben und Karrieresektor zu entwickeln?

106

Warum ziehen Sie neue Angebote in Betracht und warum haben Sie Ihr vorheriges Unternehmen verlassen?

104

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

103

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

101

Wie kann man die Anzahl der Goroutines begrenzen, sodass nicht mehr als 'threads' Methoden von Process gleichzeitig laufen? Wer wird die Aufgaben aus dem Kanal holen?

93

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

92

Auf wie vielen Hosts oder Instanzen lief der Dienst? Wie viele Container wurden gestartet?

88

Wer liest den resultierenden Kanal und wo schreibt er dann das Ergebnis, damit die Status-Methode darauf zugreifen kann?

88

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

86

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

84

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

78

Wie implementiert man die Methode Status, um den Status der Aufgabe anhand der ID zu erhalten?

72

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

65

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr enthält ip:port einer spezifischen Instanz func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs enthalten die Adressen aller balancierbaren Instanzen 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 }

64

// Code für die best() Funktion // mit Fehlerbehandlung, falls kein Backend verfügbar ist

55

// Suche nach dem Besten -- ??? // Falls nicht gefunden, vergleiche inflight

48
/11