5

Sto costruendo un sito Web che consentirà agli utenti di "seguire" membri diversi e ogni volta che i post dei membri lo aggiungono a tutti i flussi di attività dei follower in ordine cronologico inverso. Cose abbastanza comuni in questi giorni.Quanto è sicuro utilizzare solo redis per implementare i flussi di attività?

Ma sto riscontrando problemi nel determinare il modo più scalabile/a prova di futuro per implementarlo (senza join).

Sto utilizzando una bottiglia/heroku/sqlalchemy/postgres. Sto pensando di usare l'addon Open-redis e fare qualcosa come instagram menzionato: ogni utente ha una lista redis e ogni volta che un post 'seguito', aggiunge il post all'inizio di ogni lista di follower e taglia la sua dimensione totale.

Non so abbastanza di redis per sapere se è sicuro fare affidamento su di esso per ogni flusso di utenti. Con open-redis, non menzionano nulla sulla persistenza, quindi non so se questa è solo una cosa abbastanza comune in questi giorni che è appena scontata.

Se redis non è affidabile al 100%/sicuro, qualsiasi idea su come potrei farlo con postgres/Hstore (nessun join per favore).

+0

Sarebbebuono a leggere questo articolo su persistenza redis http://oldblog.antirez.com/post/redis-persistence-demystified.html –

risposta

1

Penso che sia abbastanza sicuro. Redis supporta due forme di persistence. È possibile configurare la persistenza AOF in modo da non perdere i dati in caso di arresto anomalo.

Redis è un software relativamente semplice e non si blocca facilmente. La mia prova aneddotica è un'app in cui è memorizzato in Redis tutto. Attualmente memorizza circa 340k chiavi in ​​Redis per circa 220k utenti e informazioni correlate. Redis non si è mai schiantato o ha avuto problemi. L'app è in funzione da quasi 6 mesi e ho riavviato Redis solo al riavvio del server un paio di volte.

1

Il nome per ciò che si sta facendo si chiama "fan-out on write" e ci sono alcune buone discussioni su questo e altri approcci qui: http://www.quora.com/Activity-Streams/What-are-the-scaling-issues-to-keep-in-mind-while-developing-a-social-network-feed.

In realtà c'è un post su questo in particolare con Redis qui: http://nosql.mypopescu.com/post/4588381681/activity-feeds-with-redis.

Una cosa che avverto le persone è il ridimensionamento prematuro: accontentarsi di ciò che funziona fino a quando non è necessario andare oltre. Il tuo uso di Redis dovrebbe essere abbastanza sicuro fino a scala abbastanza elevata.

Questo è un vecchio post, quindi probabilmente hai già completato in passato questo progetto, ma per chiunque altro si stia avventurando su questo percorso, potrebbe essere logico utilizzare un servizio che gestirà i flussi di attività per te. Divulgazione completa: il servizio della mia azienda, Collabinate (http://www.collabinate.com) è esplicitamente progettato per rendere i flussi di attività di costruzione molto semplici, performanti e scalabili.

3

abbiamo costruito una soluzione per il 2 ° più grande fashion community on-line e open source il nostro approccio: https://github.com/tschellenbach/Feedly E 'attualmente la più grande libreria open source al fine di risolvere questo problema. È possibile utilizzare sia Redis che Cassandra come back-end di archiviazione.

Abbiamo corso su Redis per oltre un anno senza problemi. Se impostato correttamente, funziona in modo estremamente stabile ed è improbabile che perda dati.

Lo stesso team che ha creato Feedly offre anche un'API ospitata, che gestisce la complessità per voi. Dai uno sguardo a getstream.io Esistono librerie client per Python, PHP, Node e Ruby.

Inoltre un'occhiata a questo post elevata scalabilità erano spiegare alcune delle decisioni di progettazione coinvolti: http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html

This tutorial vi aiuterà a configurare un sistema come il Feed di Pinterest utilizzando Redis. È abbastanza facile iniziare.

Per saperne di più sul design di alimentazione mi raccomando di leggere alcuni degli articoli che abbiamo basato Feedly on:

Problemi correlati