Ho un'applicazione HTTP con operatori autonomi che funzionano bene. Il problema è che alcune volte hanno bisogno di eliminare e ricostruire le loro cache, quindi smettono di rispondere per un massimo di 30 secondi.Ricerca di un bus di messaggi per la condivisione del carico HTTP
Ho esaminato un certo numero di bilanciatori di carico, ma nessuno di essi sembra risolvere questo problema. Ho provato Perlbal e alcuni moduli Apache (come fcgid) e inviano volentieri richieste ai lavoratori che sono impegnati nella ricostruzione della loro cache.
Quindi la mia opinione è questa: non esiste una soluzione di bus di messaggi in cui tutte le richieste http vengono accodate, lasciando agli operatori l'elaborazione dei messaggi quando sono in grado di farlo?
Oppure - in alternativa - un bilanciamento del carico che può tenere conto del fatto che i lavoratori sono a volte in grado di rispondere.
aggiunto in seguito: Sono consapevole del fatto che una strategia potrebbe essere che i lavoratori potrebbero utilizzare un protocollo di gestione per informare il bilanciamento del carico quando sono occupati, ma questa soluzione sembra kludgy e temo che ci saranno alcuni casi limite ciò si traduce in errori spuri.
In realtà ho ho appena trovato il progetto Mongrel2 che promette qualcosa di molto simile a quello che ho descritto sopra, ma sono un po 'scoraggiato dal fatto che la loro ultima versione (1.8) sembra essere instabile (vedi il loro numero # 148) e che il loro master non ha stato aggiornato per 6 mesi. – mzedeler
Si consiglia di prendere in considerazione la possibilità di modificare la strategia della cache e utilizzare una LRU che si espelle automaticamente o qualcosa del genere. Se una eliminazione/rigenerazione ti fa perdere tutto per 30 secondi, c'è qualcosa di sbagliato nel modo in cui lo stai usando. – Kylar
@Kylar: Sono d'accordo sul fatto che 30 secondi siano troppo lunghi, ma a partire da ora quella parte è molto difficile da cambiare. – mzedeler