0

Search API と Streaming API の両方を使用してツイートを収集するために、製品プラットフォーム用の Twitter アダプターを構築しています。Java Executor Service と Twitter4j を使用してツイートを収集し、ツイート キューに送信するプロトタイプを開発しました。

提案を求めるいくつかの設計上の決定事項を次に示します。

  1. アダプタ クライアントをスケーラブルでフォールト トレラントにする方法は?
  2. 重複したツイートを取得しないようにする方法は?
  3. レート制限に達することなく、複数のユーザー ID を使用してツイートの取得を最大化する方法は?
4

1 に答える 1

1

いくつかの回答がありますが、Twitter API を使用してからしばらく経っていることを心に留めておいて

ください。

  1. クライアントの複数のインスタンス (つまり、クラスタリング) を使用します。これは実際に何を行うかによって異なりますが、アクティブ-アクティブまたはアクティブ-パッシブ クラスタリング モデルを使用することを決定できます。
  2. クラスタリングを行う場合 - アダプタに接続しているクライアントはありますか? その場合、スティッキー セッションをサポートするロード バランサが必要になります (そのため、特定のセッション中、クライアントは同じアダプタ インスタンスをアドレス指定します) - 詳細については、[この][1] リンクを確認してください。
  3. twitts にはキャッシングを使用することをお勧めします。キャッシュをキーから値へのマップとして見ると、キーはおそらく Twitter API から情報を取得するために使用する URL になる可能性があります (思い出すと、API はある種の RESTful Web サービス)
    キャッシュにエビクション ポリシーを設定する必要があります (つまり、データが関連していると見なされる期間) - これは、パフォーマンスの面でも、Twitter へのアクセス数を減らすのにも役立ちます (私はレート制限に関する質問の部分を参照しています)。
  4. ユーザー間で情報を共有できるかどうかを確認する必要があるかもしれませんが、これにはいくつかのロジックが含まれます。
    例 - ユーザー A がユーザー B をフォローし、B が A をフォローしている場合、より一般的なフォロワーまたはユーザーがフォローしている可能性があり、データを共有できます。
  5. 前に提案したようにクラスタリングを行う場合は、キャッシュを分散する必要があります。これにはEHCacheを使用できます
  6. データベースに情報を保存する場合 - スレッド ローカル ベース キャッシング システムを構築することにより、データベースへのアクセスを最小限に抑えるようにしてください (スレッド内で、同じエンティティに対して同じ ID に対して書き込みを行わずに 2 回 get を実行すると、アクセスできなくなります)。データベースを 2 回...)

結論として、これはアドバイスの氷山の一角にすぎません。要件、ユースケース、フローを注意深く理解し、それぞれを最適化する方法を確認する必要があります。

于 2012-06-26T07:46:02.050 に答える