首页 >web前端 >js教程 >用稻草编程数据流程

用稻草编程数据流程

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-22 10:55:10682浏览

经典计算模型

数据流编程,由于网络规模的实时服务的激增,正在经历复兴。它固有的简单性,可扩展性和资源效率使其非常适合众多工程挑战。 Straw是一个Node.js框架,促进了数据流的实现,最初是为实时财务数据处理而设计的,并且能够在适度的硬件上每秒处理数千封消息。稻草结构代码为互连的节点:每个节点都会接收输入,处理并输出结果。这种模块化设计简化了复杂的问题,增强了可扩展性和弹性。本文通过详细介绍其在Twitter的Firehose中用于推文数据中的应用来展示Straw的功能。 该过程涉及设置节点以摄入原始数据,执行分析并通过Websockets进行实时可视化向Express Server和客户端分发结果。

稻草和干草概论>

稻草定义了节点的拓扑,每个拓扑都带有输入和零或更多输出。 节点使用用户定义的功能处理传入消息,从而为连接的节点生成输出消息。 示例应用程序Haystack涉及从消防人员那里消耗原始数据的节点,数据路由进行分析和分析节点本身。然后将数据通过Websocket传输到Express服务器和客户端。 要跟随,请在本地安装Haystack; Redis和Bower是先决条件。 鲍尔安装:

。 干草堆克隆和设置:npm install -g bower

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

>运行FireHose数据流>

>访问Twitter FireHose需要通过创建Twitter应用程序获得的API凭据(仅读取权限)。 从API密钥选项卡中获取

consumer_keyconsumer_secret。 用您的凭据更新Haystack的示例配置文件(access_token_key):access_token_secret> config.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>
),另一个用于Express Server(

)。访问node runnode server.js的可视化 http://localhost:3000

Dataflow Programming with Straw

了解稻草拓扑(run.js)

>

定义稻草拓​​扑。 节点及其连接在对象中指定。 例如:

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>
>目录中。

(无输入)引入消息; nodes演示了选择性消息路由的多个输出。consume-firehose route-tweets>

>示例节点(消耗firehose.js and route-tweets.js)

consume-firehose.js

<code class="language-javascript">// nodes/consume-firehose.js
var straw = require('straw');
var Twitter = require('twitter');

module.exports = straw.node.extend({
  initialize: function(opts, done) {
    this.twit = new Twitter(opts.twitter);
    process.nextTick(done);
  },
  run: function(done) {
    var self = this;
    this.twit.stream('statuses/sample', function(stream) {
      stream.on('data', function(data) {
        self.output(data);
      });
    });
    done(false);
  }
});</code>

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

>catch-langs节点(用于语言聚合)

>

catch-langs汇总语言计数,定期排放总计以避免压倒性的客户。 它使用setInterval来控制发射,增加语言计数并在发生变化时发射总数。

使用express和socket.io(或sockjs)使用A

从Straw中提供Web界面和流数据。 客户端(

)接收并可视化此数据。server.js> straw.tappublic/js/haystack.js结论

Haystack 示例用于实时数据流的数据流处理。 Straw的固有的并行性和模块化简化了复杂的任务。 通过添加节点和可视化来扩展干草堆。>

>

>关于数据流程编程的常见问题(常见问题解答)(本节在很大程度上与输入保持不变,因为这是一个独立的常见问题解答部分。)提供的常见问题解答是全面且编写良好的,并且不撰写,并且不撰写'' t需要为此重写而进行修改。

以上是用稻草编程数据流程的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn