当前位置: 网学 > 编程文档 > 其他类别 > 正文

Storm数据流模型的分析及讨论

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
如下图所示:

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/2C122815114.png" />

1)每个处理结点启动流处理过程后,开启网络服务,监听从上一级处理结点发出的TCP连接请求,接收从上一级结点发来的数据;

2)处理结点不间断地接收从上一级处理结点发来的数据,对于每条数据记录,根据数据流名进行筛选,将其分发到该数据流所对应的处理进程中;

3)将从每个特定数据流发来的数据,广播到所有以该数据流作为输入数据流的数据处理任务实例中;

4)数据处理任务实例从其输入数据流中接收数据,按照过滤条件进行筛选,然后将符合过滤条件的数据记录发送给外部应用程序进行处理;

5)外部应用程序启动外部处理进程,对数据进行实际处理过程,并将每条数据记录的处理结果返回给相应的数据处理任务实例;

6)数据处理任务实例从外部应用程序收集处理后的结果数据,并依次将其转发到对应的输出数据流中;

7)输出数据流进程接收发向该数据流的数据,然后按照数据流的订阅关系,将数据发送到所有订阅了该数据流的下一级处理结点;

8)根据下一级处理结点的IP地址和端口号,通过TCP请求与下一级处理结点建立网络连接,然后将数据按序传输到下一级处理结点。

二者在数据流模型上的不同之处

至于两个系统的实现细节,我们先不去做具体比较,下面仅列出二者在数据流模型上的一些不同之处(这里并不是为了全面对比二者的不同之处,只是列出其中的关键部分):

1)  在Storm中,数据流Stream是在Topology内进行定义,并在Topology内进行传输的;而在上面提到的流处理系统中,数据流Stream是在整个系统内全局唯一的,可以在整个集群内被订阅。

2)  在Storm中,数据流Stream的发布和订阅都是静态的,所谓静态是指数据流的发布与订阅关系在向Storm集群提交Topology计算任务时,被一次性生成的,这一关系在Topology的运行过程中是不能被改变的;而在上面提到的流处理系统中,数据流Stream的发布和订阅都是动态的,即数据处理任务task可以动态的发布Stream,也可以动态的订阅系统内已经生成的任意Stream,数据流的订阅关于通过分布式应用程序协调服务ZooKeeper集群的动态节点来维护管理。

好了,有了以上的对比,我们不难发现,对于本文所举的应用场景实例,Storm的数据流模式尚不能很方便的支持,而在这里提到的这个流处理系统的全局数据流模型下,这一应用场景的需求可以很方便的满足。

总结的话

个人觉得,Storm有必要实现不同Topology之间Stream的共享,这个至少可以在不损失Storm现有功能的前提下,使得Storm在处理实际生产环境下的一些应用场景时更加从容应对。

至于如何在现有Storm的基础上实现这一需求,可能的方式很多。一种简单的方式是通过Zookeeper来集中存储、动态感知Topology之间Stream的“发布-订阅”关系,同时在Storm的消息分发过程中对这种情况加以处理。

以上观点,如果不对之处,欢迎大家指出。

原文链接:http://www.cnblogs.com/panfeng412/archive/2012/07/29/storm-stream-model-analysis-and-discussion.html

  • 上一篇资讯: 系统边界设计
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号