Tutte le note

Quando una chiamata remota dovrebbe diventare una regola locale

Un calcolo chiama un altro servizio quattordici volte per una risposta. Il problema è la rete o il disegno?

Nei sistemi a servizi il costo nascosto è la moltiplicazione delle chiamate. Un ciclo che prepara i dati di quattordici addon e per ognuno interroga un servizio è lento perché fa quattordici volte un lavoro che si può fare una volta. Dodici chiamate da 150 millisecondi valgono più di una da 200.

Le due mosse

La prima è caricare in blocco. Un registro di fatti raccoglie in anticipo tutto ciò che il calcolo chiederà e lo ottiene con una sola query, poi il ciclo legge dalla memoria. Quattordici preparazioni diventano una: circa 1,8 secondi in meno sul percorso più lento, e un tempo di risposta complessivo più basso del 30%.

La seconda è spostare le regole. Se un servizio remoto viene chiamato solo per rispondere sì o no a una regola di blocco, e la regola dipende da dati che il chiamante ha già, la regola può vivere nel chiamante. Si toglie una chiamata di rete da ogni valutazione di offerta, e la latenza remota sparisce dal percorso.

Il criterio

Una chiamata remota è giustificata quando l'altro servizio possiede dati o decisioni che il chiamante non deve conoscere. Quando invece il chiamante ha già tutto e chiede solo di applicare una regola, sta pagando la rete per niente. La domanda da farsi è di chi è la regola. Se la risposta è del chiamante, si porta a casa.

Il passo successivo, quando la latenza residua sta nel volume dei dati, è la risposta progressiva: mostrare le prime offerte mentre le altre arrivano. Abbassa la latenza percepita senza toccare il calcolo.

Descrivici il sistema. Ti diciamo cosa vediamo.

Dieci minuti, una domanda alla volta. Alla fine, la nostra lettura onesta del caso. È il filtro, prima ancora della call.