- 浏览: 8298 次
- 性别:
- 来自: 广州
最新评论
文章列表
欢迎转载,转载请注明出处,徽沪一郎。
TridentTopology是storm提供的高层使用接口,常见的一些SQL中的操作在tridenttopology提供的api中都有类似的影射。关于TridentTopology的使用及运行原理,当前进行详细分析的文章不多。
从TridentTopology到vanilla topology(普通的topology)由三个层次组成:
面向最终用户的概念stream, operation
利用planner将tridenttopology转换成vanilla topology
执行vanilla topology
本文尝试Trident ...
欢迎转载,转载请注明出处,徽沪一郎。
本文详细分析TridentTopology的可靠性实现, TridentTopology通过transactional spout与transactional state相结合,能够做到tuple“只被处理一次,不多也不少”。也就是做到事务性处理exactly-once,要么成功,要么失败。
而一般的storm topology是无法保证eactly-once的处理的,它们要么是at-least-once(至少被处理一次,有可能被处理多次);要么是at-most-once(最多被处理一次,这样就存在遗漏的可能).
TridentTopology在设 ...
欢迎转载,转载请注明出处,徽沪一郎。
从用户层面来看TridentTopology,有两个重要的概念一是Stream,另一个是作用于Stream上的各种Operation。在实现层面来看,无论是stream,还是后续的operation都会转变成为各个Node,这些Node之间的关系通过重要的数据结构图来维护。具体到TridentTopology,实现图的各种操作的组件是jgrapht。
说到图,两个基本的概念会闪现出来,一是结点,二是描述结点之间关系的边。要想很好的理解TridentTopology就需要紧盯图中结点和边的变化。
TridentTopology在转换成为普通的Stor ...
欢迎转载,转载请注明出处,徽沪一郎。
本文从外部消息在worker进程内部的转化,传递及处理过程入手,一步步分析在worker-data中的数据项存在的原因和意义。试图从代码实现的角度来回答,如果是从头开始实现worker的话,该 ...
欢迎转载,转载请注明出版,徽沪一郎。
本文重点分析storm的worker进程在正常启动之后有哪些类型的线程,针对每种类型的线程,剖析其用途及消息的接收与发送流程。
概述
worker进程启动过程中最重要的两个函数是mk-worker和worker-data,代码就不一一列出了。worker顺利启动之后会拥有如下图所示的各类线程。
接收和发送线程
worker在启动的时候会生成进程级别的消息接收和消息发送线程,它们视具体配置而定,可以是基于zmq,也可以基于netty,这个没有太多好说的。socket connection的建立过程可以在tuple消息传递一文中找到说明。
...
概要
storm cluster可以想像成为一个工厂,nimbus主要负责从外部接收订单和任务分配。除了从外部接单,nimbus还要将这些外部订单转换成为内部工作分配,这个时候nimbus充当了调度室的角色。supervisor作为中层干部,职责就是生产 ...
欢迎转载,转载请注明出处源自徽沪一郎。本文尝试分析tuple发送时的具体细节,本博的另一篇文章《bolt消息传递路径之源码解读》主要从消息接收方面来阐述问题,两篇文章互为补充。
worker进程内消息接收与处理全景图
先上幅图简要勾勒出worker进程接收到tuple消息之后的处理全过程
IConnection的建立与使用
话说在mk-threads :bolt函数的实现中有这么一段代码,其主要功能是实现tuple的emit功能
bolt-emit (fn [stream anchors values task]
(let [out-tasks (if t ...
欢迎转载,转载时请注明作者徽沪一郎及出处,谢谢。
本文详细介绍了twitter storm中的nimbus节点的启动场景,分析nimbus是如何一步步实现定义于storm.thrift中的service,以及如何利用curator来和zookeeper server建立通讯。
对于storm client来说,nimbus是storm cluster与外部的唯一接口,是总的接口人,在这个接口上使用thrift定义的各种service。但是nimbus光接单并不干活,具体的脏活累活,这哥们都是分配到各个slots上的,让nimbus来具体管理各个slots也就是worker,似乎还是太累了, ...
jQuery 1.9变化有几点,最重要的是标题所提到的browser,live,die,sub,toggle这几个,如果你在使用过程中遇到高级版本不行,而低版本却可以的时候,那你就要了解一下是不是版本升级带来的影响了。之前也转载过一篇“jQue ...
<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if IE 5.0]> 只有IE5.0可以识别 <![endif]-->
<!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]-->
<!--[if gt IE 5.0]&g ...
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。
简单的说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。
LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址被使用,不过根据组织者的需要, ...
jBPM-jPDL学习笔记—框架设计简介(四)
- 博客分类:
- 工作流
jBPM-jPDL学习笔记—框架设计简介(四)
关键字: jbpm jpdl xml元素
上接 jBPM-jPDL学习笔记—框架设计简介(三)
<common node elements>(通用结点元素)
名称
类型
jBPM-jPDL学习笔记—框架设计简介(三)
- 博客分类:
- 工作流
jBPM-jPDL学习笔记—框架设计简介(三)
关键字: jbpm jpdl 元素定义
上接 jBPM-jPDL学习笔记—框架设计简介(二)
编号
PD-006
对象
jBPM-jPDL学习笔记—框架设计简介(二)
- 博客分类:
- 工作流
jBPM-jPDL学习笔记—框架设计简介(二)
关键字: jbpm jpdl 工作流
...上接 jBPM-jPDL学习笔记—框架设计简介(一)
jPDL业务流程模型
理解现实生活中的业务流程
下面我们通过一个简单的部门借款流程来了解现实中的业务流程 ...
jBPM-jPDL学习笔记—框架设计简介(一)
关键字: jbpm jpdl 框架设计 工作流
相关资料:
《jBPM学习笔记(V3.2环境部署)》
《jBPM学习笔记(流程设计与控制)》
概述: