Ho un modulo di grandi dimensioni che deve elaborare più di 10.000 richieste / risposte al secondo. Ogni richiesta ha un json e ha bisogno di elaborarlo e verificarlo sul database e generare la risposta sulla base della query db. Ecco un esempio
Function 1
function ('/get' , fucntion (req1 , res1 , next ){
//to process the req data
processData(req1 , res1 );
});
Function 2
processData(req1 , res1 ){
var J = JSON.parse (req1.body)
//it has to read db three times
//process the json build the response and return
condtionCheck(J , res1){
var a = someVlaue(){
//select a value from a collection set of nosql which have
//more than 1000 document and
//i have to itrate a for loop to check the condition .....etc
//...........
}
........
dataRead(var a , res1){
// is it possible to send response for the req1 object here
res1.send({value b: abcd123})
}
}
}
Function 3 ..... and so on
Il problema principale è che tutto il codice che ho scritto all'interno dei dati di processo è sincrono. Bacaue ogni codice dipende dalla richiamata precedente e ci sono così tanti controlli di condizione che vengono usati in più occasioni.
Quindi è bene mettere un'elaborazione così grande in modo sincrono all'interno del nodo? Se scrivo il codice usando async alcune volte tutto lo scenario è in una condizione di deadlock Come evitare un simile comportamento? Async o funzione come step hanno influenza sulle prestazioni? In una serie di funzioni come possiamo ridurre la latenza?