Se sto creando un'API webservice / Web per le richieste di assistenza, ci sono 2 strategie di threading a cui posso pensare.
Spiegherò questo in termini di Java (anche se la domanda potrebbe essere rilevante anche per qualsiasi altra lingua)
-
Nel thread principale, accetto la richiesta e la passo a una discussione. Il thread esegue l'elaborazione.
-
Nel thread principale, accetto la richiesta e la passo a una discussione. Questo thread inserisce la richiesta in una coda di lavoro ed esce. Si dispone di un pool di thread separato che elabora le richieste nella coda e le elabora.
Come faccio a scegliere questi metodi?
Nel primo metodo, posso eseguire quanti più thread come il mio sistema operativo / memoria mi consente e ogni richiesta inizia a essere elaborata non appena viene ricevuta. Tuttavia, le cose potrebbero rallentare se ci sono troppi thread. Nel secondo metodo, se ho un numero fisso di thread worker, quindi se tutti i thread sono occupati, le nuove richieste potrebbero dover attendere prima dell'inizio dell'elaborazione.
C'è un SLA che ci sarà una media di così tanti richieste all'ora e ogni chiamata al servizio web sarà elaborata entro x secondi.
C'è qualche teoria su come capire come meglio farlo. Saranno fatti molti test per confrontare, ma c'è già qualche teoria per questo? Quali fattori devono essere considerati?
Questo è un programma Java in esecuzione su Tomcat.