¿Con qué bibliotecas se escriben métricas en Go?
Golang
¿Para qué está escrito este código? ¿Qué problema técnico de negocio resuelve?
¿Qué métricas? ¿Con qué herramientas vamos a registrar estas métricas?
// Tarea 4 // En un servicio CRUD "típico", en algún momento algunos métodos comenzaron a funcionar lentamente y el servicio empezó a timear. // El servicio consiste en: // * Balanceador de carga de aplicaciones (L7) - recepción de solicitudes entrantes y terminación TLS // * Backend (rest, java/kotlin o golang) - procesamiento de solicitudes y lógica de negocio // * Base de datos (postgres) - almacenamiento y procesamiento de consultas SQL // ¿Cómo actuar correctamente para entender la causa de los problemas y desarrollar soluciones para mejorar la situación?
// Tarea 3 // Describir qué tarea resuelve este código // ¿Qué problemas hay en esta solución? // ¿Cómo reescribiría este código?
¿Qué hacer con la base de datos y el balanceador de carga en caso de problemas de rendimiento?
¿Cómo acceder al perfilador pprof en el servidor de producción?
¿En qué trabajaste?
// Tarea 3 // Describir qué tarea resuelve este código // ¿Qué problemas hay en esta solución? // ¿Cómo reescribirías este código? var c int type Trace struct { // Algunos campos aquí } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
¿Qué índices utilizaste en el trabajo? ¿Qué aplicaste en la práctica? ¿En Wildberries?
¿Qué harás cuando en tu equipo cambien los prioridades todos los días y aparezcan nuevas tareas urgentes?
¿Cómo funciona el particionado en PostgreSQL en su núcleo?
¿Qué índices utilizas en PostgreSQL?
¿Qué problemas hay en el código con el contador global? ¿Cómo solucionarlo?
¿Cómo hacer que Increaser sea universal, no vinculado al número 100?
¿En qué gráfico vio el problema al usar pprof?
// Tarea 3 // Describir qué tarea resuelve este código // ¿Qué problemas hay en esta solución? // ¿Cómo reescribirías este código? var c int var mu sync.RWMutex type Trace struct { // Algunos campos aquí } 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] }
¿Puede Increaser convertirse en la implementación de Sender? ¿En qué se diferencia lógicamente Increaser de Sender?
¿Puedes contar cómo diseñaste e implementaste la API REST y gRPC para los servicios internos y externos de la plataforma?