Topologia Storm per gestire i carichi di lavoro di tipo "sito di incontri"

1

Supponiamo che io scriva un sito di incontri, simile a okcupid. ci sono profili, e ho bisogno di calcolare la tabella "match" (N ^ 2) - dato ogni 2 profili che cosa è la corrispondenza tra loro?

Stavo pensando che questo potrebbe essere fatto creando uno spout per ascoltare su una coda "profili nuovi / aggiornati" (diciamo kafka, non importa), ma allora come abbattere la corrispondenza per raggiungere qualsiasi grado di parallelismo?

Se ho un singolo bullone che confronta il profilo con l'intero DB che non scala.

Se creo un altro beccuccio, per "tutti i profili" verrà eseguito in un ciclo continuo e non si fermerà mai (?)

Ovviamente il presupposto è che il "tasso di abbandono" (tasso di profili nuovi / aggiornati) è meno di un problema rispetto alla pura dimensione del database.

Qualche suggerimento su come progettare la topologia sarebbe molto gradito.

    
posta radai 16.03.2015 - 05:13
fonte

2 risposte

3

L'ovvia risposta a questo problema è "non fare N ^ 2", almeno non per l'intero valore di N - puoi respingere molto rapidamente ampie parti del tuo set di dati per tutti i tipi di motivi:

  • Sesso sbagliato. Mentre io sono un tipo liberale, non sono ancora interessato a uscire con altri ragazzi. Ci possono ovviamente essere alcune eccezioni a questo - ad es. bisessuali.
  • Paese sbagliato. Non importa quanto siano caldi, non ho intenzione di uscire con qualcuno in Australia se sono con sede nel Regno Unito. Di nuovo, potrebbero esserci delle eccezioni, ma la maggior parte delle persone non sta cercando una relazione a distanza. (Più in generale, invita le persone a dire fino a che punto sono disposti a viaggiare per una relazione. New York-California probabilmente non lavorerà per la maggior parte delle persone).

Probabilmente ci sono molti più criteri a cui non ho ancora pensato: in questo modo hai risolto il problema della "dimensione del database" e ottenuto il risultato di qualcosa di trattabile.

Per inciso, sospetto che troverai Data Science of Love visualizzazione interessante . Disclaimer: conosco personalmente il presentatore, ma non ho alcun rapporto professionale con lui o eHarmony.

    
risposta data 16.03.2015 - 21:41
fonte
2

Anche se non ho lavorato in quest'area, sembra che questo sia il tipo di problema che si potrebbe usare come Apache Giraph da gestire. In sostanza, vuoi una grande quantità di "cose" che sospetti siano "correlate" l'una all'altra probabilmente su un numero elevato di dimensioni e desideri abbinarle in modo ottimale in base alle partite più forti.

Non si desidera codificare in modo rigido quali sono queste cose, le possibili dimensioni che possono essere correlate e le regole che definiscono ciascuna relazione. Non solo sarebbe molto lavoro, non sarebbe scalabile.

Questo link è un prodotto grafico proprietario, ma fa un buon lavoro mostrando come un modello di dati grafico si applicherebbe agli appuntamenti online. Lo stesso concetto potrebbe essere fatto con Apache Giraph, o con qualsiasi altro strumento di calcolo del grafico:

link

    
risposta data 20.03.2015 - 21:24
fonte

Leggi altre domande sui tag