ホームページ >ウェブフロントエンド >jsチュートリアル >ストローによるデータフロープログラミング

ストローによるデータフロープログラミング

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-22 10:55:10676ブラウズ

古典的なコンピューティングモデルであるデータフロープログラミングは、Webスケールのリアルタイムサービスの急増のおかげで、リバイバルを経験しています。その固有のシンプルさ、スケーラビリティ、およびリソース効率により、多くのエンジニアリングの課題に最適です。 Node.jsフレームワークであるStrawは、元々リアルタイムの財務データ処理用に設計されており、控えめなハードウェアで毎秒数千のメッセージを処理できるデータフロー実装を容易にします。

ストロー構造コードは相互接続ノードにコードを作成します。各ノードは入力を受信し、それを処理し、結果を出力します。このモジュラー設計により、複雑な問題が簡素化され、スケーラビリティと回復力が向上します。この記事では、Twitterの消防符のマイニングでのアプリケーションをツイートデータのアプリケーションを詳述することにより、Strawの機能を示しています。 このプロセスでは、ノードを設定して、生データを摂取し、分析を実行し、リアルタイムの視覚化のためにWebSocketsを介してExpressサーバーとクライアントに結果を配布します。

ストローとヘイスタックの紹介

ストローは、それぞれが入力とゼロ以上の出力を備えたノードのトポロジを定義します。 ノードは、ユーザー定義の関数を使用して受信メッセージを処理し、接続されたノードの出力メッセージを生成します。 サンプルアプリケーションであるHayStackには、消防ホースからの生データ消費のためのノード、分析のためのデータルーティング、および分析ノード自体が含まれます。データは、WebSocketsを介してExpressサーバーとクライアントに中継されます。 フォローするには、Haystackをローカルにインストールします。 RedisとBowerは前提条件です。 バウアーインストール:。 Haystackのクローニングとセットアップ:

npm install -g bower

Firehose Data Streamの実行
<code class="language-bash">git clone https://github.com/simonswain/haystack
cd haystack
npm install
bower install</code>

Twitter Firehoseにアクセスするには、Twitterアプリを作成して取得したAPI資格情報が必要です(許可のみを読む)。 [APIキー]タブから

、およびconsumer_keyを取得します。 資格情報を使用して、HayStackのサンプル構成ファイル(consumer_secret)を更新します access_token_key 2つの別々の端子を使用してhaystackを実行します。1つはStrawトポロジ()、もう1つはExpressサーバー()用です。視覚化にアクセスしてくださいaccess_token_secretconfig.js

<code class="language-javascript">exports.twitter = {
  consumer_key: '{your consumer key}',
  consumer_secret: '{your consumer secret}',
  access_token_key: '{your access token key}',
  access_token_secret: '{your access token secret}'
};</code>

node runnode server.jsわらのトポロジー(run.js)http://localhost:3000

を理解しています

Dataflow Programming with Straw わらのトポロジーを定義します。 ノードとその接続はオブジェクトで指定されています。 たとえば、

ノードはディレクトリにあります。

(入力なし)メッセージを導入します。

選択的なメッセージルーティングの複数の出力を示します。run.js

<code class="language-javascript">var topo = new straw.topology({
  'consume-firehose': {
    'node': __dirname + '/nodes/consume-firehose.js',
    'output': 'raw-tweets',
    'twitter': config.twitter
  },
  'route-tweets': {
    'node': __dirname + '/nodes/route-tweets.js',
    'input': 'raw-tweets',
    'outputs': {
      'geo': 'client-geo',
      'lang': 'lang',
      'text': 'text'
    }
  },
  // ... more nodes
});</code>
例ノードの例(Consume-firehose.jsおよびroute-tweets.js)

nodes consume-firehoseroute-tweets

<code class="language-bash">git clone https://github.com/simonswain/haystack
cd haystack
npm install
bower install</code>

キャッチラングノード(言語集約用)

catch-langs言語カウントを集約し、圧倒的なクライアントを避けるために定期的に合計を放出します。 setIntervalを使用して、排出を制御し、言語数の増加を制御し、変更が発生したときに合計を放出します。

Express Server(server.js)およびクライアント側の視覚化(haystack.js)

expressとsocket.io(またはsockjs)を使用して、a server.jsを使用してストローからのWebインターフェイスとストリーミングデータを提供します。 クライアントサイド(straw.tap)は、このデータを受信して​​視覚化します public/js/haystack.js

結論

Haystackは、リアルタイムデータストリームのデータフロー処理を例示しています。 Strawの固有の並列性とモジュール性は、複雑なタスクを簡素化します。 ノードと視覚化を追加してヘイスタックを拡張します。

データフロープログラミングに関するよくある質問(FAQ)

以上がストローによるデータフロープログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。