2013-01-25 24 views
5

Buduję stronę internetową, która pozwoli użytkownikom "śledzić" różnych członków i zawsze, gdy ten członek opublikuje, dodaje go do wszystkich strumieni aktywności obserwatorów w odwrotnej kolejności chronologicznej. Całkiem pospolite rzeczy w dzisiejszych czasach.Jak bezpieczne jest używanie wyłącznie redis do implementacji strumieni aktywności?

Mam problem z określeniem najbardziej skalowalnego/przyszłościowego sposobu implementacji tego (bez sprzężeń).

Używam kolby/heroku/sqlalchemy/postgres. Zastanawiam się, używając dodatku Open-redis i robiąc coś podobnego do instagramu: każdy użytkownik ma listę redis i za każdym razem, gdy jest "śledzonym" postem, dodaje wpis do początku każdej listy obserwatorów i przycina swój całkowity rozmiar.

Po prostu nie wiem wystarczająco dużo o redis, aby wiedzieć, czy można bezpiecznie polegać na nim dla wszystkich strumieni użytkowników. W przypadku open-redis nie wspominają nic o trwałości, więc nie wiem, czy obecnie jest to zwyczajnie pospolita rzecz.

Jeśli redis nie jest w 100% niezawodny/bezpieczny, wszelkie przemyślenia na temat tego, w jaki sposób mogę to zrobić z postgres/Hstore (nie proszę o dołączenie).

+0

Byłoby dobrze przeczytać ten artykuł o trwałości redis http://oldblog.antirez.com/post/redis-persistence-demystified.html –

Odpowiedz

1

Myślę, że jest wystarczająco bezpieczny. Redis obsługuje dwie formy persistence. Możesz skonfigurować utrwalanie AOF, więc prawdopodobnie nie utracisz żadnych danych w razie awarii.

Redis jest stosunkowo prostym oprogramowaniem i nie ulega awarii. Moje niepotwierdzone dowody to aplikacja, w której wszystko jest przechowywane w Redis. Obecnie przechowuje około 340 tysięcy kluczy w Redis dla około 220 tysięcy użytkowników i powiązanych informacji. Redis nigdy nie rozbił się ani nie miał żadnych problemów. Aplikacja działała przez prawie 6 miesięcy i zrestartowałem serwer Redis tylko kilka razy po ponownym uruchomieniu serwera.

1

Nazwa tego, co robisz, nazywa się "fan-out on write" i istnieją dobre dyskusje na temat tego i innych podejść tutaj: http://www.quora.com/Activity-Streams/What-are-the-scaling-issues-to-keep-in-mind-while-developing-a-social-network-feed.

Istnieje rzeczywiście post na temat tego, szczególnie w przypadku Redisa: http://nosql.mypopescu.com/post/4588381681/activity-feeds-with-redis.

Jedną z rzeczy, na które zwracam uwagę, jest przedwczesne skalowanie - trzeba się z tym pogodzić, dopóki nie trzeba iść dalej. Twoje korzystanie z Redis powinno być całkiem bezpieczne, aż do dość wysokiej skali.

To jest stary post, więc prawdopodobnie zakończyłeś już pracę nad tym projektem, ale dla każdego, kto wyrusza tą drogą, może być sens korzystania z usługi, która będzie obsługiwać strumienie aktywności. Pełne ujawnienie: usługa mojej firmy, Collabinate (http://www.collabinate.com) jest wyraźnie zaprojektowana, aby strumienie aktywności budynków były bardzo proste, wydajne i skalowalne.

3

Zbudowaliśmy rozwiązanie 2. największa społeczność mody online i otwarty pochodzą nasze podejście: https://github.com/tschellenbach/Feedly To obecnie największa biblioteka open source na celu rozwiązanie tego problemu. Możesz używać zarówno Redis, jak i Cassandry jako zaplecza pamięci.

Prowadzimy Redis od ponad roku bez żadnych problemów. Jeśli jest prawidłowo skonfigurowany, działa wyjątkowo stabilnie i prawdopodobnie nie utraci danych.

Ten sam zespół, który zbudował Feedly, oferuje również hostowany interfejs API, który obsługuje złożoność. Spójrz na getstream.io Istnieją biblioteki klienta dla Python, PHP, Node i Ruby.

Ponadto przyjrzeć się tej wysokiej skalowalności postu byliśmy wyjaśnić niektóre z decyzji projektowych zaangażowanych: http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html

This tutorial pomoże Ci skonfigurować systemu podobnego paszy Pinterest Korzystanie Redis. Łatwo jest zacząć.

Aby dowiedzieć się więcej na temat projektu paszowego Gorąco polecam przeczytaniu niektórych artykułów, które oparliśmy feedly na:

Powiązane problemy