S jakými knihovnami se v Go píší metriky?
Golang
Na co je tento kód napsán? Jaký obchodně-technický problém řeší?
Jaké metriky? Jakými nástroji budeme tyto metriky zapisovat?
// Úkol 4 // U "typickém" CRUD servisu - v určitém okamžiku některé metody začaly fungovat pomalu a služba začala timeoutovat. // Služba se skládá z: // * Application Load Balancer (L7) - příjem příchozích požadavků a ukončení TLS // * Backend (rest, java/kotlin nebo golang) - zpracování příchozích požadavků a obchodní logika // * Databáze (postgres) - ukládání a zpracování SQL dotazů // Jak správně postupovat, abyste pochopili příčinu problémů a vyvinuli řešení ke zlepšení situace?
// Úloha 3 // Popište, jaký úkol tento kód řeší // Jaké problémy jsou v tomto řešení? // Jak byste přepsali tento kód?
Čím ses zabýval v práci?
// Úloha 3 // Popište, jaký úkol tento kód řeší // Jaké problémy jsou v tomto řešení? // Jak byste tento kód přepsali? var c int type Trace struct { // Některá pole zde } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Na jaké indexy jste se v práci odkazoval? Co jste v praxi používal? Na Wildberries?
Co uděláte, když se ve vašem týmu každý den mění priority a objevují se nové naléhavé úkoly?
Co dělat s databází a load balancerem při problémech s výkonem?
Jak funguje rozdělení v PostgreSQL pod kapotou?
Jaké indexy používáš v PostgreSQL?
Jaké problémy jsou v kódu s globálním čítačem? Jak je opravit?
Jak se dostat k profileru pprof na produkčním serveru?
Na jakém grafu jste viděli problém při používání pprof?
Jak udělat Increaser univerzálním — nezávislým na čísle 100?
// Otázka 3 // Popište, jaký úkol tento kód řeší // Jaké problémy jsou v tomto řešení? // Jak byste tento kód přepsali? var c int var mu sync.RWMutex type Trace struct { // Některá pole zde } 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 } }
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] }
Může se Increaser stát implementací Sender? Čím se logicky liší Increaser od Senderu?
Můžeš popsat, jak jsi navrhl a implementoval REST a gRPC API pro interní a externí služby platformy?