2009-08-26 9 views
0

私はFriendfeedのようなソーシャルネットワークに取り組んでいます。ユーザーがフィードリンクを追加すると、私はcronジョブを使って各ユーザーのフィードを解析します。毎時間10.000のリンクを解析するなど、多数のユーザーがこれを実行できますか、それによって問題が発生しますか?それができない場合、FriendfeedやRSSリーダーには何が使われていますか?大きなデータのためのCronジョブ

答えて

0

このデザインが良いかどうかを判断するには十分な情報がありませんが、基本的な質問に答えるには、10kの質問に対して非常に集中的な処理をしない限り、1時間ごとのcronジョブハンドル。

フィードをどのように処理するか、特にユーザーあたりのフィード数とフィード数を持つユーザー数に関するプロセスのスケーラビリティは、さらにアドバイスするのに役立ちます。

4

あなたのハードウェアに関する情報を質問に追加することを検討することができます。これは、実装がどの程度容易に実現できるかをアドバイスしたいと考えている人にとっては大きな違いになります。

何百万ものリンクを解析すると、大きなcronジョブが問題になります。 (、あなたはおそらくべきではない場合)私はあなたが次のことをやっていると仮定しています:ユーザーがそれを2回のフェッチを避けるために、同じフィードを購読するとき

  • を実現します。
  • 新しいフィードを取得するときに、フィードが変更される可能性があることを示すサイトマップが存在するかどうかを確認し、その値を合理的な間隔で再訪してください。
  • システム負荷とメモリ使用量をチェックしてしばらくの間眠りにつく。

これは、1時間ごとのcronが生成する汗の量を減らします。

何百万というフィードを収穫している場合は、その作業を配布することをお勧めします。これは、データベースの作成中に念頭に置いておきたいことです。

もう一度、使用しているハードウェアの詳細とソリューションの拡張の程度を質問で更新してください。無限に拡大するものはありませんので、現実的にしてください:)

0

これらの10,000のフィードへのネットワークアクセスの制限要因は、あなたはフィードを連続的に処理することができ、1時間に10,000回(潜在的に約350msのレイテンシを必要とする)する可能性があります。

もちろん、処理を高速化するために複数のプロセスが同時に作業したいと思うでしょう。

0

これまでに選択したソリューションは、成功した場合(私が望む)、パフォーマンスの問題が発生します。

FFの創設者として何度も言いました。最高の実際のソリューションを選択する唯一の解決策は、プロファイル/測定です。数字では選択肢が明らかになります。

So:数ヶ月で予想される(現実的な)状況に近いテストアーキテクチャを構築し、プロファイル/測定します。

0

このような大きなデータジョブの場合は、IronWorkerをチェックアウトすることを検討してください。それはそれのために作られており、サービスなので、サーバーや規模に対応する必要はありません。スケジューリング機能が組み込まれているため、ワーカー・タスクを1時間ごとに実行するようにスケジューリングし、そのタスクは10,000個のジョブをキューに入れ、それらをすべて並列に実行できます。