Architettura del sistema di sito e-commerce scalabile?

1

Se devo progettare l'architettura del sistema per un sito scalabile come Amazon / BestBuy, quale può essere un'architettura di sistema di alto livello. cercato su Google ma non ha ottenuto molti dati.

Di seguito è riportato il diagramma di sistema di alto livello basato sulla comprensione delle mine

Per illustrare la mia comprensione prenderò due casi d'uso

  1. Aggiunta dell'inventario al sistema dal venditore
  2. Ricerca prodotto per utente

Aggiunta dell'inventario al sistema dal venditore: - il venditore può caricare singoli prodotti o può eseguire il caricamento collettivo con qualsiasi formato concordato, ad esempio Excel, CSV ecc.

  1. Una volta effettuato il caricamento del venditore, la chiamata passerà al server web (attraverso il servizio di bilanciamento del carico)
  2. Esisteranno alcuni servizi aziendali in quel server web. Ad esempio, se utilizzo Tomcat (server Web basato su Java), i servizi basati su Java possono trovarsi in tomcat. alcuni altri servizi in altri / stessa lingua possono esistere come processi separati con in macchina stessa / diversa in base alla configurazione hardware.
  3. Il server web
  4. eseguirà il servizio di caricamento dei venditori che segnerà i prodotti in base alla categoria e li caricherà in un cluster memcached. Questo assicurerà al venditore il tempo di risposta veloce. Saranno separati più server memcached per ogni categoria (verranno replicati per gestire il crash del server)
  5. I lavori batch di Asynch in background leggeranno i dati da questi cluster memcached e li archivieranno in DB (Mongo DB). Una volta memorizzato, aggiornerà la voce memcached con productId

Ricerca prodotto per utente: - l'utente può digitare qualsiasi nome prodotto e ricerca. Questo mi sembra un trucco dal punto di vista del ridimensionamento. Posso pensare a due approcci qui

Approccio basato sulla cache

  1. Tieni l'elenco dei prodotti in memcache per telefono. Questo elenco telefonico può contenere una mappa in cui la chiave può essere brandName e può essere nuovamente mappata. Questa mappa nidificata conterrà modello come chiave e dettaglio del prodotto come chiave. I dettagli del prodotto possono inoltre contenere un elenco di venditori ecc.

  2. Ora il servizio di ricerca eseguirà richieste multi-get (probabilmente la riduzione delle mappe può essere sfruttata qui) a tutti i prodotti cache lusters archiviati
    siccome il sistema non sa quale sia la categoria a cui appartiene quel nome

Scarica dal DB

  1. Come abbiamo il DB sharked. il carico è già distribuito sul server DB. Quindi possiamo colpire il DB, utilizzare l'indice DB e recuperare i dettagli

  2. Questo punto sarà uguale al punto 2 nell'approccio sopra.

Non sei sicuro di quale sia più appropriato e utilizzato da una delle principali app di e-commerce?

Inoltre questa architettura sembra scalabile? Qualche punto di miglioramento?

    
posta user3222249 19.03.2017 - 11:10
fonte

0 risposte