Jstorm 基本概念

简介: Jstorm 基本概念

本质

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

适合的业务

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

编程模型

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

角色

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

ack机制

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

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

作者:glowd

原文:https://blog.csdn.net/zengqiang1/article/details/78436585
版权声明:本文为博主原创文章,转载请附上博文链接!

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
8月前
|
运维 负载均衡 测试技术
分布式基本概念-02
分布式基本概念-02
60 4
|
存储 安全 Java
【NiFi】(一)NiFi 简介及核心概念
【NiFi】(一)NiFi 简介及核心概念
2075 0
【NiFi】(一)NiFi 简介及核心概念
|
9月前
|
消息中间件 存储 监控
深入浅出:理解Kafka的核心概念与架构
深入浅出:理解Kafka的核心概念与架构
291 0
|
9月前
|
分布式计算 Hadoop 数据处理
Hadoop基础学习---6、MapReduce框架原理(二)
Hadoop基础学习---6、MapReduce框架原理(二)
|
9月前
|
存储 分布式计算 Hadoop
Hadoop基础学习---6、MapReduce框架原理(一)
Hadoop基础学习---6、MapReduce框架原理(一)
|
10月前
|
消息中间件 NoSQL 中间件
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(上)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建
167 0
|
10月前
|
消息中间件 存储 Kafka
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
149 0
|
12月前
|
消息中间件 存储 缓存
Storm核心组件、编程模型
Storm核心组件、编程模型
170 0
|
分布式计算 搜索推荐 NoSQL
|
大数据 数据挖掘
大数据框架原理简介(2)
大数据框架原理简介(2)
大数据框架原理简介(2)