Domanda

Quali sarebbero le migliori pratiche per la seguente situazione. Ho un negozio di e-commerce che abbassa i livelli di inventario da un distributore. Il sito dovrebbe, ogni volta che un utente carica una pagina dei dettagli del prodotto, utilizzare l'API di terze parti per i dati più aggiornati? Oppure, il sito dovrebbe utilizzare API di terze parti e quindi conservare tali dati per un certo periodo di tempo nel proprio sistema e aggiornarli periodicamente?

Per me sembra ovvio che dovrebbe essere aggiornato ogni volta che viene caricata la pagina dei dettagli del prodotto, ma che dire dei negozi di e-commerce ad alto traffico? In questo caso vengono utilizzate soluzioni completamente diverse?

È stato utile?

Soluzione

In questo caso, memorizzerei sicuramente nella cache i risultati dal sito del distributore per un certo periodo di tempo, piuttosto che colpirli ogni volta che ricevi una richiesta. Tuttavia, non utilizzerei semplicemente un timeout di 5 minuti o 30 minuti per tutte le voci della cache. Invece, userei un po 'di euristica. Se possibile, ad esempio se l'applicazione è scritta in una lingua come Python, è possibile allegare un semplice script a ogni prodotto che implementa il timeout.

In questo modo, se si tratta di un articolo che viene richiesto di rado o di uno che ha una grande quantità disponibile, è possibile memorizzare nella cache più a lungo.

if product.popularityrating > 8 or product.lastqtyinstock < 20:
   cache.expire(productnum)
distributor.checkstock(productnum)

Questo ti dà la flessibilità che puoi chiamare se ne hai bisogno. Inizialmente, puoi impostare tutte le regole su qualcosa del tipo:

 cache.expireover("3m",productnum)
 distributor.checkstock(productnum)

In realtà, lo script probabilmente non includerebbe la chiamata della funzione checkstock perché sarebbe nell'app principale, ma è inclusa qui per il contesto. Se Python sembra troppo pesante da includere solo per questa piccola quantità di flessibilità, allora dai un'occhiata a TCL che è stato specificamente progettato per questo tipo di lavoro. Entrambi possono essere facilmente integrati in applicazioni C, C ++, C # e Java.

Altri suggerimenti

In realtà, c'è un'altra soluzione. Il vostro distributore mantiene il catalogo dei prodotti sui loro server e vi dà accesso tramite Open Catalog Interface . Quando un utente desidera effettuare un ordine, viene reindirizzato sul posto al catalogo del distributore, sceglie gli articoli e quindi trasferisce la selezione al tuo negozio.

È ampiamente utilizzato nella filiale SRM (Supplier Relationship Management).

Dipende da molti fattori: il traffico verso il tuo sito, la frequenza con cui cambiano i livelli di inventario, l'impatto sul business dei dati obsoleti, la frequenza con cui i supplers ti permettono di chiamare la loro API, lo SLA della loro API in termini di disponibilità e prestazioni , e così via.

Una volta che hai queste risposte, ci sono ovviamente molte possibilità qui. Ad esempio, per un sito a basso traffico in cui è importante ottenere l'inventario corretto, è possibile chiamare l'API di terze parti su ogni chiamata, ma ripristinare un comportamento alternativo (come l'utilizzo di dati memorizzati nella cache) se l'API non risponde entro un determinato timeout.

A volte, le API ben progettate includeranno suggerimenti sul periodo di validità dei dati. Ad esempio, alcune API REST su HTTP supportano varie intestazioni di controllo della cache HTTP che possono essere utilizzate per specificare un periodo di validità o per recuperare i dati solo se sono cambiati dall'ultima richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top