このendpointは、Postの編集metadataを含むように更新されました。これらのmetadataの詳細は、“Edit Posts” の基礎をご覧ください。
Decahose stream
- 拡張・強化された URL: - 短縮 URL を完全に展開し、追加の metadata(ページタイトルと説明)を提供
- Stream partitioning - 2 つのパーティション(各パーティションが Decahose stream のボリュームの 50% を保持)
- 信頼性の向上 - バックエンドシステムの地理的冗長化
ENTERPRISE
いいねのストリーミング
- Likes は独立した専用の stream で配信されます
- Likes は歴史的に「Favorites」と呼ばれてきました。拡張されたネイティブ形式のペイロードではこの命名が維持されています
- Streams には公開いいねのみが含まれます
- 公開とは、いいねしたユーザー、Post の作成者、Post のすべてがプラットフォーム上で公開であることを意味します
- Likes はリツイートに非常に似ており、公開のエンゲージメントシグナルを表します
- ペイロード要素には以下が含まれます:
- 元の Post オブジェクト
- 元の Post を作成した Actor オブジェクト
- いいねアクションを実行した Actor オブジェクト
- オリジナルコンテンツのみにいいねできます
- リツイートにはいいねできません。リツイートへのいいねは元の Post に適用されます
- 引用した Tweet はいいねが_可能_です
- いいねアクティビティには、該当する Gnip Enrichments(購入/適用済みの場合)が含まれます
- 対応製品 / 機能
- Likes stream は Backfill をサポートします(購入/適用済みの場合)
- likes stream に Replay のサポートはありません
- likes に対する Search および Historical のサポートはありません
- 現時点で PowerTrack に likes のサポートを追加する予定はありません
- Decahose で配信される 10% サンプルの Posts について、stream には該当する公開いいねの 100% が含まれます
- パーティション: 2
- URL 構造
ガイド
復旧と冗長性
- 複数環境をサポートするため、アカウントに対して Additional Streams をデプロイできます。これらの stream は相互に独立しており、識別のために異なる stream_label が付与されます。
- 接続維持を支援するため、各 Decahose stream は 冗長接続 をサポートしています。最も一般的な構成は、1 つの stream に 2 つの接続を持たせ、クライアント側にも 2 つの独立したコンシューマ(理想的には異なるネットワーク上)を用意する形です。この設計により、クライアント側のネットワーク、サーバー、データストア経路にわたって冗長性を確保できます。各接続では data の完全なコピーが配信されるため、クライアント側は重複データを許容し、重複を適切に処理する必要があります。
- 「ハートビート」は 10 秒ごとに送信されます。ただし、Decahose stream は data のボリュームが十分に大きいため、短時間(例:数秒)でも Posts が流れない場合は接続問題を示す可能性があります。したがって、「data の沈黙」とハートビートの欠如の両方で切断を検知できます。
追加のストリーム
概要
Recovery はデータ復旧ツールです(一次的なデータ収集には使用しないでください)。直近の X の履歴データについて、ローリングの5日間ウィンドウに対するストリーミングアクセスを提供します。これは、リアルタイムの stream において消費側アプリケーションがデータを取り逃した場合、短時間の切断によるものか、あるいは一定期間リアルタイムデータの取り込みに失敗したその他のあらゆるケースであっても、データを復旧するために利用してください。Recovery の使用
データの可用性
バックフィル
- 接続時に常に ‘backfillMinutes=5’ を使用し、提供される重複した data を処理する方法を取ることもできます。
- 5 分以上切断された場合は、Recovery を使用して data を回復できます。
-
切断時間の長さを判断する。
- 5 分以内か?
- stream で Backfill が有効な場合は、適切な ‘backfillMinutes’ パラメータを含む接続リクエストを準備する。
- 5 分より長いか?
- Recovery stream がある場合は、切断期間について Recovery リクエストを行う(必要に応じて Rules API を使用し、可能であれば現在のリアルタイムのルールセットで実施)。
- 5 分以内か?
- 新しい接続をリクエストする。
- バックフィルの実装 バックフィルにより、stream 接続から切断される前の時点にさかのぼって再接続でき、最大 5 分の切断に対応します。これは接続リクエストにパラメータを含めることで実装されます。
- 別拠点から冗長 stream を取り込む 冗長 stream を同じ本番環境にライブで取り込み、data の重複排除ができる場合、通常の stream と冗長 stream の両方で同時にダウンタイムや切断が発生しない限り、Recovery は不要です。冗長 stream を本番環境にライブ取り込みできない場合は、別の「緊急」データストアに書き込むことができます。そうしておけば、プライマリの stream 接続で切断やダウンタイムが発生した際に、欠落期間のプライマリデータベースを補完するための data を手元に確保できます。
- Recovery の実装 切断やダウンタイムがプライマリ stream と冗長 stream の両方に影響する場合は、Decahose Recovery を使用して欠落した data を回収します。API はアーカイブの 5 日間のローリングウィンドウを提供しており、そのウィンドウから一度に 1 時間以下の範囲でリクエストし、stream で取り込むのが最適です。これはリアルタイム stream と並行して行います。Recovery が提供する 5 日間のウィンドウを超える Decahose データの復旧手段はないため、重大なダウンタイムに備えて冗長 stream を活用し、あなた側で data の完全なコピーを確保しておくことが重要です。
- 受信した Posts をカウントする 取り込み App の最初の段階で受信した生の Posts の件数をカウントし、その数値を最終データストアに到達した Posts の件数と比較できるようにします。差分を監視し、受信後に data がドロップされる原因となる問題をチームに通知できます。
- 異常な保存量を分析する 最終データベースに保存された data の量を分析し、異常な減少がないか確認することも検討してください。これも問題を示す可能性がありますが、状況によってはボリュームの低下が正常である場合もあります(例: X プラットフォームが利用できず、人々が一定期間 Posts を作成できない場合)。
API リファレンス
Decahose stream
メソッド
メソッド | 説明 |
---|---|
GET /{stream-type}/:stream | データstreamに接続 |
GET :stream
Firehose stream への永続接続を確立し、この接続を介してリアルタイムの data が配信されます。リクエスト仕様
リクエストメソッド | HTTP GET |
接続タイプ | Keep-Alive これはリクエストのヘッダーで指定する必要があります。 |
URL | ダッシュボードのstreamのAPIヘルプページで確認できます。以下の構造を使用します: Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
パーティション(必須) | partition=\{#} - 完全なstreamを利用するためにパーティショニングが必須となりました。パーティションパラメータを指定してstreamに接続する必要があります。以下は各streamのパーティション数です:* Decahose: 2パーティション |
圧縮 | Gzip。Gzip圧縮を使用してstreamに接続するには、接続リクエストでAccept-Encodingヘッダーを送信するだけです。ヘッダーは以下のようになります: Accept-Encoding: gzip |
文字エンコーディング | UTF-8 |
レスポンス形式 | JSON。リクエストのヘッダーでレスポンスのJSON形式を指定する必要があります。 |
レートリミット | 60秒間に10リクエスト。 |
バックフィルパラメータ | バックフィルが有効なstreamを購入している場合、GETリクエストに「backfillMinutes」パラメータを追加して有効にする必要があります。 |
読み取りタイムアウト | クライアントで読み取りタイムアウトを設定し、30秒を超える値に設定してください。 |
Tweet編集のサポート | すべてのTweetオブジェクトには、Tweetの編集履歴を記述するTweet編集metadataが含まれます。詳細については、「Edit Tweets」基礎ページを参照してください。 |
レスポンス
Status | Text | Description |
---|---|---|
200 | Success | 接続は正常に確立され、到着し次第、新しいアクティビティが送信されます。 |
401 | Unauthorized | 無効な認証情報により HTTP 認証に失敗しました。リクエストで認証情報を正しく使用していることを確認するため、console.gnip.com に認証情報でログインしてください。 |
406 | Not Acceptable | 一般的には、クライアントが stream からの gzip エンコーディングを受け入れるためのヘッダーを適切に含めていない場合に発生しますが、他の状況でも発生する可能性があります。 次のような JSON メッセージが含まれます: “This connection requires compression. To enable compression, send an ‘Accept-Encoding: gzip’ header in your request and be ready to uncompress the stream as it is read on the client end.” |
429 | Rate Limited | App が接続リクエストの上限を超過しました。 |
503 | Service Unavailable | X サーバー側の問題です。指数バックオフ方式で再接続してください。この問題に関する通知が X API Status Page に掲載されていない場合、10 分経っても接続できないときはサポートまたは緊急窓口に連絡してください。 |