Come si esegue il bilanciamento del carico di lavoro

Problema, domanda

Distribuzione uniforme delle richieste tra i vari render. Alcuni render elaborano più richieste di altri.

Risoluzione, risposta

L'invio di una richiesta viene deciso in base alle statistiche che il dispatcher mantiene sulla reattività dei render. Il dispatcher mantiene un registro dei tempi di elaborazione accumulati per ogni render e per ogni categoria.   Semplificando, possiamo considerare il seguente scenario:
  • Una richiesta arriva al dispatcher.
  • Il dispatcher cerca di abbinare la richiesta con i diversi modelli di globo configurati nella sezione statistiche del file di configurazione, decidendo che la richiesta è, per esempio, di categoria HTML.
  • Il dispatcher consulta le statistiche di ogni render per controllare il tempo di elaborazione trascorso per la categoria HTML.
  • Il dispatcher inoltra la richiesta al render con il minor tempo di elaborazione accumulato per la categoria HTML.
  • Al ritorno della risposta, il dispatcher aggiunge il tempo di risposta alle statistiche mantenute per questa categoria.

Questa è la procedura semplificata, supponendo che non ci sia affinità di sessione, che tutti i render sono sempre disponibili, e che tutte le richieste siano elaborate con successo. Quando un render è offline o non è in grado di elaborare una richiesta con successo, il dispatcher aggiunge una penalizzazione alle statistiche di quel render. L'algoritmo reale è più complesso.

Conclusione: il bilanciamento del carico di lavoro non viene effettuato in base al numero di richieste a cui ogni server ha partecipato, ma al tempo necessario per elaborarle per la categoria di appartenenza.

Vedi anche la documentazione ufficiale del distributore per configurare il bilanciamento del carico di lavoro: https://docs.adobe.com/help/en/experience-manager-dispatcher/using/dispatcher.html#how-dispatcher-performs-caching

Logo Adobe

Accedi al tuo account