本质

  1. 基于消息的流水线处理模型
  2. 是一套类似MapReduce一样的编程模型
  3. 内核是一套调度系统

适合的业务

  1. 高并发的计算任务
  2. 数据流之间相互无依赖

编程模型

  1. Topology:即一个数据流的拓扑结构,包含多个Spout和Bolt
  2. Spout:从外部获取数据,包含DB,Hbase,Kafka等
  3. Bolt :计算单元,系统内计算流转数据

角色

  1. Nimbus: 资源调度角色,可主备
  2. Supervisor: 接受nimubs 任务安排,启动任务,管理Worker
  3. Worker: 进程
  4. Executor: 执行线程,继承自Runnable
  5. Task: 执行逻辑单元,继承自Runnable

ack机制

ack闭环,保证数据不丢失(以后会结合源码分析ack实现)

  1. 设置acker 的并行个数,如果设置为0,acker失效,不能保证数据不丢失,或者设置配置topology.acker.executors(默认为null,即与该任务的work数一致)

    stormConf.setNumAckers(JStormUtils.parseInt(conf.getProperty("jstorm.acker.num")));
  2. Spout 发送消息必须带msgId,否则不能实现acker闭环

    collector.emit(new Values(strMsg), new KafkaMessageId(partition, toEmitMsg.offset()));
  3. Bolt发送消息必须传入接收到的tuple作为anchors参数的值,这样才能锚定tuple,将此Bolt纳入Ack闭环中

        public List<Integer> emit(String streamId, Collection<Tuple> anchors,List<Object> tuple)
  4. topology.max.spout.pending设置,默认为null,无限。对spout task接收速度进行流控。当topology.max.spout.pending=5000,对于spout而言,还有5000个没有进行ack,就会停止spout的nextTuple。

    topology.max.spout.pending设置后,会降低整个系统的吞吐量,可根据自己系统要求自行设置,以先某个数值开始,不断增加,最终达到系统稳定且吞吐量合适

    topology.max.spout.pending要起作用,必须锚定tuple,因为这个是在ack闭环的基础上实现的。所以必须满足条件1,2,3

  5. spout发送的事件在超时时间(topology.message.timeout.secs 默认为30s)内没有最终ack闭环,系统就会自动调用spout.fail,由spout编写者自行处理,一般在里面实现重传,如果实现不好,或者不处理,数据也会丢失

  6. acker闭环并不保证数据不丢失,只是提供了一个机制可以实现数据不丢失,取决于Spout的编写者。acker闭环完成会调用spout.ack,闭环失败或者超时会调用 spout.fail

Jstorm 基本概念相关推荐

  1. Flink 基本原理与生产实践分享【入门必读,概念清晰】

    Flink 基本原理与生产实践分享[入门必读,概念清晰] https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会 ...

  2. 阿里的STORM——JSTORM

    看介绍文档貌似挺好: https://github.com/alibaba/jstorm 阿里拥有自己的实时计算引擎 类似于hadoop 中的MR 开源storm响应太慢 开源社区的速度完全跟不上Al ...

  3. Flink如何取代JStorm,成为字节跳动流处理唯一标准?

    AI前线导读: 本文将为大家展示字节跳动公司将 Jstorm 任务迁移到Apache Flink 上的整个过程以及后续计划.你可以借此了解到字节跳动公司引入Apache Flink 的背景,Apach ...

  4. JStorm中的并行( parallelismction )介绍

    JStorm中的并行( parallelismction )介绍 JStrom中.一个计算任务通过多台机器使得计算分解为多个独立并行执行在集群内执行的任务(tasks).从而得到水平扩展. JStor ...

  5. JStorm-介绍-阿云栖社区

    摘要: 1.概述 JStorm 是一个类似于 Hadoop 的MapReduce的计算系统,它是由Alibaba开源的实时计算模型,它使用Java重写了原生的Storm模型(Clojure和Java混 ...

  6. CentOS 6.8 安装JStorm集群(jstorm-2.1.1 )

    Alibaba JStorm 是一个强大的企业级流式计算引擎,是Apache Storm 的4倍性能, 可以自由切换行模式或mini-batch 模式,JStorm 不仅提供一个流式计算引擎, 还提供 ...

  7. Flink学习1-基础概念

    Flink学习1-基础概念 Flink系列文章 更多Flink系列文章请点击Flink系列文章 更多大数据文章请点击大数据好文推荐 摘要 本文是作者学习Flink的一些文档整理.记录和心得体会,希望与 ...

  8. 并发框架Disruptor(核心概念 入门 高性能原理-伪共享 CAS 环形数据 生产和消费模式 高级使用 )

    并发框架Disruptor 并发框架Disruptor Disruptor概述 背景 什么是Disruptor 为什么使用Disruptor Disruptor 的核心概念 Ring Buffer S ...

  9. RPC 笔记(03)— gRPC 概念、安装、编译、客户端和服务端示例

    1. gRPC 概念 gRPC 是 Google 开源的一款高性能的 RPC 框架.GitHub 上介绍如下: gRPC is a modern, open source, high-performa ...

最新文章

  1. ASP.NET2.0 文本编辑器FCKeditor的冰冷之心 【月儿原创】
  2. 我的名片能运行Linux和Python,还能玩2048小游戏,成本只要20元
  3. Metrics.NET 项目
  4. NVelocity的宏使用
  5. C语言algorithm主函数,C语言中主函数中相关有关问题?
  6. 自定义View的三个构造函数
  7. vue报错:dependencies were not found: * element-ui in ./src/main.js * element-ui/lib/theme-chalk/inde
  8. Cisco单臂路由实验
  9. 网站访客系统php,PHP实现网站访客来访显示访客IP浏览器操作系统
  10. 怎么用计算机连接电视,电视当电脑显示器怎么连接
  11. linux input子系统分析--子系统核心.事件处理层.事件传递过程
  12. idea拦截了html中的静态资源,IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)...
  13. 区块链技术指南 序章理解感悟
  14. allegro使用经验
  15. 计算机专业毕业设计题目哪个简单,计算机专业毕业设计题目计算机专业毕业设计的类型...
  16. medusa 使用教程
  17. 嵌入式Linux小项目之图片编解码播放器(5)
  18. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
  19. 程序员晒出从毕业到工作5年照片,抱怨头发掉光了,网友:很真实
  20. 芯片在计算机中作用是什么,逻辑芯片的作用是什么

热门文章

  1. 【测控电路】ADDA转换电路
  2. RHCSA-1 linux介绍与基本命令
  3. 如何在网页中视频加速
  4. 计算机入门教程 office2007入门,大学计算机基础教程Office2007版.PPT
  5. CKEditor学习笔记2(CKEditor基本配置修改)
  6. 【滤波器】基于高通+低通+带通+带阻FIR滤波器设计含Matlab源码
  7. 3dmax 管子动画_3Dmax怎么制作发光管?
  8. TP4056锂电池充电IC
  9. 推荐一款jquery前端插件(zoomify),灯箱效果插件(用于图片看大图的效果),简单易用!
  10. python读取股票数据_如何利用程序(如python) 从新浪财经或者雅虎财经获取到所有A股数据(历史日线数据,实时股票数据)?...