ストリーミングデータを処理する Client の構築
クライアント設計
- filter stream エンドポイントへの HTTPS ストリーミング接続を確立する。
- ストリームからルールを追加・削除するために、filter stream rules エンドポイントへ POST リクエストを非同期で送信する。
- 低トラフィック時の処理 – ストリーミング接続を維持し、ポストオブジェクトとキープアライブシグナルを検出する。
- 高トラフィック時の処理 – 非同期処理を用いてストリームの取り込みと追加処理を分離し、クライアント側バッファが定期的にフラッシュされるようにする。
- クライアント側で利用量の追跡を管理する。
- ストリーム切断を検出し、状況を評価して自動的にストリームへ再接続する。
ストリーミングエンドポイントへの接続
データの取得
- 任意の順序で出現するフィールド
- 予期しないフィールドまたは欠落しているフィールド
- ソートされていない投稿
- 重複したメッセージ
- 任意のタイミングでストリームに流れてくる、新しい任意のメッセージタイプ
バッファリング
- クライアントがストリームを十分な速度で読み取っていることを確認してください。通常、ストリームを読み取りながら本格的な処理を行うべきではありません。ストリームは読み取りに専念し、アクティビティは別のスレッド/プロセス/データストアに渡し、処理は非同期で行ってください。
- データセンターが、大きな持続的データ量に加え、それを大きく上回るスパイク (例: 通常の 5〜10 倍のボリューム) にも対応できる十分な受信帯域幅を備えていることを確認してください。filtered stream の場合、必要となるデータ量およびそれに対応する帯域幅は、ルールによってマッチしている投稿に完全に依存します。
利用状況の追跡とルール管理
sample: オペレーターを追加し、マッチ率を 100% から sample:50 や sample:25 に下げることを検討してください。
さらに、事前に設定したしきい値をボリュームが超えた場合にチームへ通知する仕組みをアプリケーション内に実装することを推奨します。また、過剰なデータを取り込んでいるルールを自動的に削除する、あるいは極端な状況ではストリームから完全に切断するなどの対策を導入することも検討してください。