Storm 实时流计算 数据将在各个维度交叉关联,数据爆炸已不可避免, 流式处理加nosql产品因此产生, 前者解决实时处理框架,后者处理数据大规模存储计算.
基于对传统数据库处理的流式化. 对流式框架本身的研究. 工业界实时数据库.
2011年Twitter开源storm 可以快速搭建一套健壮易用的实时流处理框架,配合sql产品或nosql产品或mapreduce平台可做实时产品.
Topology DRPC Trident
Storm 开源的分布式实时计算系统,简单可靠的处理大量数据流. 使用场景为实时分析,在线机器学习,持续计算,分布式RPC,ETL等.
可以使用任意语言开发应用,推荐go语言
Storm集群中真正运行topology的主要有三个实体,工作进程,线程和任务.任务是真正进行数据处理的实体.每个线程可执行多个任务.spout,bolt被开发出来就是作为一个或多个任务的方式执行的.每台机器执行多个进程,每个进程有多个线程.计算任务在多个线程\进程和服务器之间并行进行,支持灵活的水平扩展.
保证spout发出的每条消息都能被完全处理. Spout发出消息后续可能会触发产生成千上万条消息,理解为消息树,spout发出的消息为树根,storm会跟踪这棵消息树的处理情况,只有这棵消息树的所有消息都被处理了,storm才认为spout发出的这个消息已经被完全处理了. 如果消息树中任何一个消息处理失败了,或整棵消息树在限定的时间内没有完全处理,那么spout发出的消息会重发.
为减少对内存的消耗,storm不会跟踪消息树中每个消息,而是将消息树当作一个整体跟踪,对消息树中所有消息的唯一id进行异或运算,通过是否为0判定spout发出的消息是否被完全处理,极大的节约了内存和简化了判定逻辑.此处会详细介绍.
有事务性拓扑保证消息只被处理一次.
多语言协议允许spout或bolt使用标准输入输出进行消息传递,消息内容为单行文本或json编码的多行文本.
支持本地模式,在进程中模拟storm集群的所有功能,以本地模式运行topology和在集群中运行类似,有利于开发测试.
zeroMQ作为底层消息队列,保证消息快速处理.
Storm计算任务以拓扑为基本单位,每个拓扑完成特定的业务指标,拓扑中的每个逻辑业务节点实现特定的逻辑,并通过消息相互协作.
配置逻辑节点的并发数
所有部署仅通过命令提交一个jar包,全自动部署,停止拓扑也是命令执行. 可图形化监控各个拓扑的信息,包括每个处理单元的状态和处理消息的数量
海量数据实时处理, 存储中间结果,写入数据库,,重启恢复容灾. 数据增量更新,数据库实时读写压力. 概率算法使用