Una goroutine può scrivere direttamente in un'altra goroutine tramite un canale bufferizzato?
Golang
Hai domande per me?
Quale tecnologia/strumento usi?
// Il cliente passa un oggetto (Task) con i dati per eseguire il compito, // nel nostro esempio useremo una struttura vuota. // // Il gestore può elaborare al massimo N compiti contemporaneamente, // e non più di X compiti possono essere messi in coda. // Se non c'è spazio in coda, si restituisce immediatamente un errore al cliente. // // Il compito viene preso in carico se ci sono processori liberi. // Simuliamo la durata dell'elaborazione con time.Sleep(5*time.Second). // Appena un compito termina, prendiamo il prossimo dalla coda. // Se la coda è vuota, aspettiamo nuovi compiti dai clienti. // // Con un asterisco: ampliare la struttura Task e ottenere gli stati dei compiti tramite una richiesta separata. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // implementazione in sospeso } type Task interface { Do() }
Cosa dice la convenzione di Go sull'uso di WaitGroup e sui tipi restituiti (accettando interfacce, restituendo tipi concreti)?
Quali tipi di indici in PostgreSQL, oltre al B-tree, hai usato?
Come potremmo gestire esternamente gli errori che si verificano nelle attività, se volessimo farlo?
Qual è stato il tuo ruolo nelle decisioni architettoniche durante lo sviluppo del servizio di ricerca?
Hai usato CTE? Racconta cos'è.
Hai usato i contesti nella pratica? Raccontami.
func New(workers, queue, int) Scheduler { s := &scheduler { queue := make(chan Task, queue) for i := 0; i < workers; i++ { wg.Add(1) go func() { defer wg.Done() for task := range s.queue { task.Do() } }() } } return s } func (s *scheduler) Close() { close(s.queue) s.wg.Wait() } type Task interface { Do() }
È possibile creare un indice solo sulla replica, ma non sul master?
Ci sono ancora gare di dati nell'implementazione? In particolare nel metodo Keys, che restituisce una fetta di chiavi?
Vuoi scrivere un pool di worker classico?
Qual è la differenza tra SELECT FOR UPDATE e SELECT FOR SHARE?
Tipi di replica in PostgreSQL
Hai usato funzioni di finestra?
Il lavoro è consentito solo all'interno del territorio della Federazione Russa?
Hai esperienza nella scrittura di operatori Kubernetes, amministrazione di operatori, Helm Chart?
Perché non avete usato Redis invece di memorizzarlo nel database?