Stiamo costruendo un'API REST che crea elementi in una rete CDN. Ogni elemento richiede da 5 a 7 secondi per essere creato e dobbiamo crearli il più rapidamente possibile finché ne abbiamo circa un milione.
Una scuola di pensiero nel nostro ufficio è che dovremmo fare molte piccole transazioni. Un altro è che dovremmo avere meno transazioni più grandi per ridurre al minimo la "chat" di rete, magari correndo come descritto qui .
Piccole transazioni sarebbero più semplici da implementare. Avrebbero implicato un po 'più traffico di rete (forse insignificante dato il tempo per articolo). Potrebbero anche essere vantaggiosi in caso di mancata creazione di un articolo.
Le prestazioni sono la nostra priorità, lo sviluppo costa un secondo. Questo post suggerisce che sia OK in linea di principio. Quale / come faccio?
Il nostro CDN offrirà immagini di proprietà in Nuova Zelanda. Pre-popoleremo il CDN con sei immagini di ciascuna proprietà che riteniamo possa essere richiesta. Le diverse immagini sono utilizzate da varie pagine nel nostro sito web.
Il processo di generazione dell'immagine ha questo aspetto:
for each property {
call remote 3rd-party API to find property details;
for each type of image required {
call remote 3rd-party API to get image;
}
}
L'API remota chiama ogni take tra 1 e 2 secondi. L'API remota è sul lato opposto del pianeta per i nostri utenti e i nostri server. Le cose che accadono localmente sono nell'ordine del millisecondo. Sto usando C # async
dove possibile.
Se qualcuno richiede un'immagine che non è già memorizzata nella cache della CDN, in genere ritorna in due o tre secondi, il che è accettabile. Lo carichiamo anche con AJAX, quindi l'utente non è in attesa.