5

Ich baue eine Website, die es Benutzern ermöglicht, verschiedenen Mitgliedern zu folgen, und wann immer dieses Mitglied Beiträge veröffentlicht, fügt es diese in umgekehrter chronologischer Reihenfolge zu allen Aktivitäten der Anhänger hinzu. Ziemlich alltägliches Zeug heutzutage.Wie sicher ist es, nur Redis zu verwenden, um Activity-Streams zu implementieren?

Aber ich habe Probleme bei der Ermittlung der skalierbarsten/zukunftssichersten Art der Implementierung (ohne Joins).

Ich benutze Kolben/heroku/sqlalchemy/postgres. Ich denke mit dem Open-Redis-Addon und mache sowas wie Instagram erwähnt: Jeder Benutzer hat eine Redis-Liste und wann immer ein "Followed" -Beiträge, fügt er den Beitrag am Anfang jeder Follower-Liste hinzu und verkleinert seine Gesamtgröße.

Ich weiß einfach nicht genug über redis, um zu wissen, ob es sicher ist, sich darauf für jeden Benutzer Streams zu verlassen. Mit open-redis erwähnen sie nichts über Persistenz, also weiß ich nicht, ob das gerade eine alltägliche Sache ist, die heutzutage angenommen wird.

Wenn redis nicht 100% zuverlässig/sicher ist, irgendwelche Gedanken darüber, wie ich das mit postgres/Hstore tun könnte (keine Joins bitte).

+0

Es wäre gut, diesen Artikel über Redispersistenz zu lesen http://oldblog.antirez.com/post/redis-persistence-demystified.html –

Antwort

1

Ich denke, es ist sicher genug. Redis unterstützt zwei Formen von persistence. Sie können die AOF-Persistenz so konfigurieren, dass Sie im Falle eines Absturzes wahrscheinlich keine Daten verlieren.

Redis ist relativ einfache Software und stürzt nicht leicht ab. Meine anekdotische Beweise sind eine App, wo alles in Redis gespeichert ist. Es speichert derzeit etwa 340k Tasten in Redis für etwa 220k Benutzer und zugehörige Informationen. Redis ist nie abgestürzt oder hatte irgendwelche Probleme. Die App läuft seit fast 6 Monaten und ich habe Redis nur neu gestartet, wenn ich den Server mehrmals neu starte.

1

Der Name für das, was Sie tun, heißt "Fan-out on write" und es gibt einige gute Diskussionen zu diesem und anderen Ansätzen hier: http://www.quora.com/Activity-Streams/What-are-the-scaling-issues-to-keep-in-mind-while-developing-a-social-network-feed.

Es gibt tatsächlich einen Beitrag zu diesem Thema speziell mit Redis hier: http://nosql.mypopescu.com/post/4588381681/activity-feeds-with-redis.

Eine Sache, auf die ich Leute warnen, ist vorzeitige Skalierung - machen Sie mit, was funktioniert, bis Sie weiter gehen müssen. Ihre Verwendung von Redis sollte ziemlich sicher sein, bis zu einem ziemlich hohen Maßstab.

Dies ist ein alter Post, also sind Sie wahrscheinlich in diesem Projekt bereits abgeschlossen, aber für jeden anderen, der diesen Weg einschlägt, kann es sinnvoll sein, einen Dienst zu verwenden, der die Activity-Streams für Sie verwaltet. Vollständige Offenlegung: Collabinate (http://www.collabinate.com), der Dienst meines Unternehmens, wurde speziell dafür entwickelt, die Erstellung von Activity-Streams sehr einfach, performant und skalierbar zu machen.

3

Wir bauten eine Lösung für die 2. größte Online-Mode-Community und öffnet unseren Ansatz gelesen: https://github.com/tschellenbach/Feedly Es ist derzeit die größte Open-Source-Bibliothek bei der Lösung dieses Problems gerichtet. Sie können Redis und Cassandra als Speicher-Backends verwenden.

Wir laufen seit über einem Jahr ohne Probleme auf Redis. Bei richtiger Konfiguration läuft es extrem stabil und es ist unwahrscheinlich, dass Daten verloren gehen.

Das gleiche Team, das Feedly erstellt hat, bietet auch eine gehostete API, die die Komplexität für Sie handhabt. Werfen Sie einen Blick auf getstream.io Es gibt Client-Bibliotheken für Python, PHP, Node und Ruby.

Zusätzlich haben einen Blick auf diese hohe Skalierbarkeit Post waren wir einige der Design-Entscheidungen erklären beteiligt: ​​ http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html

This tutorial werden Sie Setup ein System wie Pinterest Feed mit Redis helfen. Es ist ziemlich einfach, mit anzufangen.

Um mehr über Feed-Design lernen empfehle ich einige Artikel zu lesen, die wir auf Basis Feedly auf:

Verwandte Themen