Con quali librerie si scrivono metriche in Go?
Golang
Quali metriche? Con quali strumenti registreremo queste metriche?
A cosa serve questo codice? Quale problema tecnico di business risolve?
// Compito 4 // In un servizio CRUD "tipico", a un certo punto alcuni metodi hanno iniziato a funzionare lentamente e il servizio ha iniziato a timeout. // Il servizio è composto da: // * Load Balancer dell'Applicazione (L7) - ricezione delle richieste in ingresso e terminazione TLS // * Backend (rest, java/kotlin o golang) - elaborazione delle richieste e logica di business // * Database (postgres) - memorizzazione ed elaborazione di query SQL // Come agire correttamente per capire la causa dei problemi e sviluppare soluzioni per migliorare la situazione?
// Compito 3 // Descrivere quale compito risolve questo codice // Quali problemi ci sono in questa soluzione? // Come riscriveresti questo codice?
Cosa hai fatto al lavoro?
Come funziona la partizione in PostgreSQL sotto il cofano?
Cosa fare con il database e il load balancer in caso di problemi di prestazioni?
In quale grafico hai visto il problema durante l'uso di pprof?
Come accedere al profiler pprof sul server di produzione?
// Compito 3 // Descrivere quale compito risolve questo codice // Quali problemi ci sono in questa soluzione? // Come riscriveresti questo codice? var c int type Trace struct { // Alcuni campi qui } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Quali indici hai usato al lavoro? Cosa hai applicato nella pratica? Su Wildberries?
Quali indici usi in PostgreSQL?
Cosa farai quando le priorità nel tuo team cambiano ogni giorno e compaiono nuovi compiti urgenti?
Cosa facciamo con le metriche dopo la raccolta? Qual è il piano d'azione?
Quali problemi ci sono nel codice con il contatore globale? Come correggerlo?
Come rendere Increaser universale — non legato al numero 100?
func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }
// Problema 3 // Descrivi quale compito risolve questo codice // Quali problemi ci sono in questa soluzione? // Come riscriveresti questo codice? var c int var mu sync.RWMutex type Trace struct { // Alcuni campi qui } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }
Puoi raccontare come hai progettato e implementato le API REST e gRPC per i servizi interni ed esterni della piattaforma?