5

私は、ユーザーがさまざまなメンバーを「フォロー」できるようにする Web サイトを構築しています。そのメンバーが投稿するたびに、すべてのフォロワー アクティビティ ストリームに時系列の逆順に追加されます。最近ではかなり一般的なもの。

しかし、これを実装する最もスケーラブルで将来性のある方法 (結合なし) を決定するのに苦労しています。

フラスコ/ヘロク/sqlalchemy/postgres を使用しています。私は Open-redis アドオンを使用して、前述の instagram のようなことを行うことを考えています: 各ユーザーには redis リストがあり、「フォローされた」投稿が行われるたびに、各フォロワーリストの先頭に投稿が追加され、その合計サイズがトリミングされます。

私は、すべてのユーザーがストリーミングするたびに redis だけに依存することが安全かどうかを知るには、redis について十分に知りません。open-redis では、永続性については何も言及されていないため、最近では永続性が一般的であると想定されているだけなのかどうかはわかりません。

redis が 100% 信頼性/安全ではない場合、postgres/Hstore でこれを行う方法について考えてください (参加しないでください)。

4

3 に答える 3

1

十分安全だと思います。Redis は 2 つの形式の永続性をサポートしています。クラッシュが発生した場合にデータが失われないように、AOF 永続性を構成できます。

Redis は比較的単純なソフトウェアであり、簡単にはクラッシュしません。私の事例証拠は、すべてが Redis に保存されているアプリです。現在、約 220,000 人のユーザーと関連情報のために約 340,000 のキーを Redis に保存しています。Redis がクラッシュしたり、問題が発生したことはありません。アプリはほぼ 6 か月間実行されており、サーバーを数回再起動するときに Redis を再起動しただけです。

于 2013-01-25T16:16:34.067 に答える
1

あなたがしていることの名前は「書き込み時のファンアウト」と呼ばれ、これやその他のアプローチに関する良い議論がここにあります: http://www.quora.com/Activity-Streams/What-are-the-scaling -ソーシャルネットワークフィードの開発中に留意すべき問題.

実際には、Redis でこれを具体的に行うことに関する投稿があります: http://nosql.mypopescu.com/post/4588381681/activity-feeds-with-redis

私が人々に警告していることの 1 つは、早すぎるスケーリングです。Redis の使用は、かなり大規模になるまでは非常に安全です。

これは古い投稿なので、おそらくこのプロジェクトは完了していませんが、この道を進んでいる他の人にとっては、アクティビティ ストリームを処理するサービスを使用するのが理にかなっているかもしれません。完全な開示: 私の会社のサービスである Collabinate ( http://www.collabinate.com ) は、ビルド アクティビティ ストリームを非常にシンプルでパフォーマンスが高く、スケーラブルにするように明示的に設計されています。

于 2013-09-27T00:56:08.013 に答える