Twitter Storm 里有神马

Twitter Storm

twitter storm是twitter的流计算框架。本文简单的介绍该框架。

twitter主要包括4个东东

Nimbus

用户提交一个topology首先是提交给nimbus,nimbus对提交过来的topology开始分配任务,将任务信息写入到zookeeper中。这是主要的工作,还有其他的一些工作,比如定是清理一些jar包,目录什么的。

Supervisor

这个家伙人如其名,是个监工,它从zk中读取那些nimbus分配给自己的任务,从nimbus所在的机器上下载相关的代码,配置文件等等。然后启动worker,让它们开始干活。并通过心跳监控他们是否挂掉。

 

Worker

worker(进程)就是一台机器的端口,注意一个worker不会为多个topology服务。它被supervisor启动后,开始定期给supervisor汇报自己的状态。然后从zk中找到自己要启动的task(线程),启动。

 

Task

标准的劳工,跟worker一起发送接收tuple。注意task不会直接跟其他worker直接通信,都是由所属worker代劳。task只需要往所属worker的队列中发送消息,指定taskid, worker会根据taskid,发送给taskid所属的worker,然后由worker转发给task。

 

 

通过zk 存储一些信息量不是很大的东东,比如说task、supervisor的心跳。worker的心跳是写在本地的。由supervisor来监视。

通过zeroMQ实现worker与worker之间的通信,task与worker之间的通信。

 

要完成一个完整的topology,首先要在spout中将消息获取,要借助一些其他的东东,例如kv数据库。storm的事务也是通过其他的东东来保证,比如kafka。

 

还想说下ack, storm是通过ack来保证消息可靠处理的。每一个由spout发送的tuple都需要明确指定一个messageid, 这样storm就知道了这个消息是否被完全处理。

你可能感兴趣的:(流计算,twitter storm)