Golang
Progetta un sistema di applicazione di scacchi: matchmaking, creazione di sessioni di gioco e registrazione dei risultati. Indica i servizi, la loro interazione e gli archivi di dati.
Supponiamo che il nostro microservizio debba accedere a un'API esterna, ad esempio un gateway di pagamento, ma questa inizia improvvisamente a rallentare molto o addirittura a cadere. Come proteggi normalmente la tua applicazione da questi vicini per evitare che fallisca tutto il nostro servizio?
Cosa sono la replica, lo sharding e la partizionamento?
tipo Sem interfaccia { Lock() error //restituisce un errore se il canale è pieno TryLock() bool // tentiamo semplicemente di bloccare, se funziona ritorna true Release() //rilascio del canale Cap() int // numero di goroutine in lavoro FreeSpace() int //mostra quanto spazio libero c'è nel canale } //struttura //channel - pensare a un buffer //capacity int //mutex
Cos'è l'idempotenza nelle richieste al servizio?
Parlami di te, della tua esperienza, come hai scelto il percorso IT e dello sviluppo, perché proprio Go, come sei avanzato nella tua carriera?
/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { }
È possibile standardizzare la gestione degli errori?
Cos'è un inode in Linux?
Quali garanzie di consegna offre Kafka? Cosa bisogna fare sul produttore per garantire esattamente una volta?
Cosa posso fare con il nuovo pool? Posso aggiungere compiti dopo l'inizio?
La dimensione del buffer del canale influisce su qualcosa nel pool di worker?
Quale comando in Git può essere usato per ottenere aggiornamenti dal repository remoto senza unirli al branch corrente?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil }
Come avete distribuito il nuovo servizio in produzione? Quali sono state le difficoltà durante il trasferimento?
Quali volumi di dati sono stati trasferiti a ClickHouse per gli analisti?
Quali problemi possono esserci nell'uso dei trigger?
Quando l'indice non aiuta o addirittura danneggia?
Cosa stai cercando ora per te, perché vuoi cambiare azienda/progetto/prodotto?
Come si possono gestire le goroutine e tutte vengono eseguite su un singolo thread?