Storm事务API

Spout
ITransactionalSpout<T>,同BaseTransactionalSpout<T>,普通事务Spout
IPartitionedTransactionalSpout<T>,同BasePartitionedTransactionalSpout<T>,分区事务Spout
IOpaquePartitionedTransactionalSpout<T>:同BaseOpaquePartitionedTransactionalSpout<T>,不透明分区事务Spout


Bolt
IBatchBolt<T>:同BaseBatchBolt<T>,普通批处理
BaseTransactionalBolt:事务Bolt

接口Icommitter:标识IBatchBolt 或BaseTransactionalBolt是否是一个committerCoordinatedBolt


[size=large]ITransactionalSpout<T>普通事务Spout[/size]
ITransactionalSpout<T>:普通事务Spout
-- ITransactionalSpout.Coordinator<X>
--initializeTransaction(BigInteger txid, X prevMetadata) :创建一个新的metadata,当isReady() 为true时,发射该metadata(事务tuple)到“batch emit”流
--isReady() :为true时启动新事务,需要时可以在此sleep

-- ITransactionalSpout.Emitter<X>
-- emitBatch(TransactionAttempt tx, X coordinatorMeta, BatchOutputCollector collector) :逐个发射batch的tuple


[size=large]IPartitionedTransactionalSpout<T>:分区事务Spout[/size]
IPartitionedTransactionalSpout<T>:分区事务Spout,主流事务Spout,原因是目前主流Message Queue都支持分区,分区的作用是增加MQ的吞吐量(每个分区作为一个数据源发送点),主流MQ如Kafka、RocketMQ
-- IPartitionedTransactionalSpout.Coordinator
-- isReady() :同上
-- numPartitions() :返回分区个数。当增加了数据源新分区,同时一个事务被replayed ,此时则不发射新分区的tuples,因为它知道该事务中有多少个分区。

-- IPartitionedTransactionalSpout.Emitter<X>
--emitPartitionBatchNew(TransactionAttempt tx, BatchOutputCollector collector, int partition, X lastPartitionMeta) :发射一个新的Batch,返回Metadata
--emitPartitionBatch(TransactionAttempt tx, BatchOutputCollector collector, int partition, X partitionMeta) :如果这批消息Bolt消费失败了,emitPartitionBatch负责重发这批消息

[size=large]IOpaquePartitionedTransactionalSpout:不透明分区事务Spout[/size]
IOpaquePartitionedTransactionalSpout<T>:不透明分区事务Spout
--IOpaquePartitionedTransactionalSpout.Coordinator
--isReady() :同上 --IOpaquePartitionedTransactionalSpout.Emitter<X>
-- emitPartitionBatch(TransactionAttempt tx, BatchOutputCollector collector, int partition, X lastPartitionMeta)
-- numPartitions()

它不区分发新消息还是重发旧消息,全部用emitPartitionBatch搞定。虽然emitPartitionBatch返回的X应该是下一批次供自己使用的(emitPartitionBatch的第4个参数),但是只有一个批次成功以后X才会更新到ZooKeeper中,如果失败重发,emitPartitionBatch读取的X还是旧的。所以这时候自定义的X不需要记录当前批次的开始位置和下一批次的开始位置两个值,只需要记录下一批次开始位置一个值即可,例如:
public class BatchMeta {     
public long  nextOffset; //下一批次的偏移量    
}
Storm中涉及到的类 Storm事务中涉及到的类,以及在非事务、事务、分区事务、不透明分区事务的比较的信息汇总 立即下载

相关推荐

OpenWRT系统启动流程全解析:从procd到ubus的完整链路(附源码分析)

本文深入解析了OpenWRT系统从内核移交控制权到用户空间服务就绪的完整启动链路。核心聚焦于进程管理器procd与通信总线ubus的协同工作机制,通过源码分析揭示了状态机转换、服务注册与事件分发的内在逻辑,为系统定制、启动优化与故障调试提供了清晰指南。

weixin_28335283的博客 534

【Storm】JavaAPI处理词频统计案例

【Storm】JavaAPI处理词频统计案例在 Storm 中一个拓扑由一个Spout和多个Bolt组成,Spout主要做接收数据、数据分发的工作,Bolt主要做数据处理。1. 案例处理流程,2. 业务处理代码

zhouwhui 的博客 1483

Quantum Espresso实战进阶:HSE混合泛函在能带计算中的精准应用

本文深入探讨了在Quantum Espresso中应用HSE混合泛函进行高精度能带计算的实战方法。针对传统DFT方法低估半导体带隙的问题,HSE通过混合精确交换能,显著提升计算精度。文章详细讲解了从输入文件配置、参数设置(如nqx网格、exxdiv_treatment)、到自洽与非自洽计算流程,以及结果可视化与对比的全过程,并提供了关键的调优与避坑指南,助力实现从PBE到HSE的精准进阶。

weixin_28363123的博客 226

Storm常用API

API简介Component组件1)基本接口       (1)IComponent接口       (2)ISpout接口       (3)IRichSpout接口       (4)IStateSpout接口       (5)IRichStateSpout接口       (6)IBolt接口       (7)IRichBolt接口       (8)IBasicBolt接口2)基本抽象...

liangzelei的博客 2858

H无穷控制学习笔记——加权灵敏度H无穷控制问题

一、加权灵敏度H无穷问题 系统结构如上图所示。被控对象P的状态空间方程为(Ap,Bp,Cp,DpA_p,B_p,C_p,D_pAp​,Bp​,Cp​,Dp​),加权函数W1的状态空间方程为(A1,B1,C1,D1A_1,B_1,C_1,D_1A1​,B1​,C1​,D1​),加权函数W2的状态空间方程为(A2,B2,C2,D2A_2,B_2,C_2,D_2A2​,B2​,C2​,D2​),加权函数W3的状态空间方程为(A3,B3,C3,D3A_3,B_3,C_3,D_3A3​,B3​,C3​,D3​)。

一饮丶一啄的博客 4350

【运筹学】什么是基变量?对于线性规划问题中“基”概念的理解(3月3日学习笔记)

在学习《线性规划与目标规划》的过程中,课程的主讲老师郭韧给出了对于基概念的定义如下图 图片来源:运筹学(中国大学mooc网) 由此我产生了几个疑惑:1.如何理解B是线性规划问题的一个基?2.为什么说最多有CnmC_n^mCnm​个基呢?     1.如何理解B是线性规划问题的一个基?1.如何理解B是线性规划问题的一个基?1.如何理解B是线性规划问题的一个基? 在回答第一个...

纸羊同学的博客 3万+

大数据系列——Storm安装和API

1. 实时计算 有别于传统的离线批处理操作(对很多数据的集合进行的操作) 实时处理,说白就是针对一条一条的数据/记录进行操作 实时计算计算的是无界数据 2. 有界数据和无界数据 2.1 有界数据 离线计算面临的操作数据都是有界限的,无论是1G、1T、1P、1EB、1NB 数据的有界必然会导致计算的有界 2.2 无界数据 实时计算面临的操作数据是源源不断的向水流一样,是没有界限的 数据的无...

qq_31683033的博客 193

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 848

第五章:Storm深度解析

1.Storm 框架概述 2.Storm 高可用集群搭建 3.Storm Topology 4.第一个Storm程序 5.Storm远程模式 6.Storm编程详解 7.Storm集群架构 8.Storm任务分配流程 9.Storm集群的容错机制 10.Storm线程模型及消息系统

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管

本文介绍了基于51单片机外部中断(INT0/INT1)的四个实践案例:1)INT0控制LED开关;2)INT0中断实现数码管计数/清零;3)INT0中断构建秒表功能(启动/暂停/清零);4)INT0/INT1双中断独立控制两组数码管计数。每个案例包含电路原理图、接线说明及完整源代码,重点演示了外部中断在硬件控制中的应用方法。附加硬件工程师笔试面试资料链接,涵盖器件知识、Multisim教程等内容,适合嵌入式学习者参考实践。(149字)

XU157303764的博客 1913

【Storm】Strom事务主要API及官方案例分析

1、事务主要API (1)Spout (a)ITransactionalSpout<T>,同BaseTransactionalSpout<T>,普通事务Spout (b)IPartitionedTransactionalSpout<T> ,接口,分区事务,增加消息队列吞吐量,现在的消息队列大多支持分区;同BasePartitionedTransactiona...

晚风中的自由 491

强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】

本次实践作业将在以下环境进行: 该环境由一个 6×6 网格组成,其中黄色圆圈为智能体出发点,黑色格子为无法通过的墙壁,若智能体向着墙壁方向移动,则会停留在原地,地图边界的移动同理。带有黄色边框的格子为终止状态,即若智能体行动至此状态则整个 episode 结束。红色和绿色表示当前该状态的奖励值,奖励越高则绿色越深,奖励越低则红色越深。状态空间:36(0-35 这 36 个整数,左下角为 0,向右 +1,向上 +6)动作空间:4(0-3 这 4 个整数分别代表左、右、上、下)奖励函数:普通格子 -0.1,到

zik的博客 1398

Storm之——事务主要API(基于Storm0.9.x)

转载请注明出处:http://blog.youkuaiyun.com/l1028386804/article/details/79464949SpoutITransactionalSpout&lt;T&gt;,同BaseTransactionalSpout&lt;T&gt;,普通事务SpoutIPartitionedTransactionalSpout&lt;T&gt;,同BasePartitionedTra...

冰河的专栏 1058

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大数据-Storm流式框架(七)---Storm事务

storm 对于保证消息处理,提供了最少一次的处理保证。最常见的问题是如果元组可以被重发,可以用于计数吗?不会重复计数吗?strom0.7.0 引入了事务性拓扑的概念,可以保证消息仅被严格的处理一次。因此可以以完全精确的、可扩展的、容错的方式处理类似计数这类的情形。跟分布式 RPC 类似,事务性拓扑也不是 storm 的新特性,而仅仅是在 storm 原语如数据流、spout、bolt 和拓扑基础上的高层抽象。

yaya_jn的博客 516

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Storm 从入门到精通 第二十三讲 Storm 批处理事务 - 事务API

1. 事务APISpout (难点)ITransactionalSpout&lt;T&gt;,同BaseTransactionalSpout&lt;T&gt;,普通事务SpoutIPartitionedTransactionalSpout&lt;T&gt; --分区事务,增加消息队列吞吐量,同BasePartitionedTransactionalSpout&lt;T&gt;,分区事务SpoutI...

John,hao的专栏 799

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Storm在批处理和事务方面的机制分析

1、storm事务性topology的提出 对于容错机制,Storm通过一个系统级别的组件acker,结合xor校验机制判断一个msg是否发送成功,进而spout可以重发该msg,保证一个msg在出错的情况下至少被重发一次。但是在一些事务性要求比较高的场景中,需要保障一次只有一次的语义,比如需要精确统计tuple的数量等等。Storm 0.7.0引入了Transactional Topology

paul_wei2008的专栏 1592

【Storm】批处理事务原理以及事务

1、批处理 对于容错机制,Storm通过一个系统级别的组件acker,结合xor校验机制判断一个tuple是否发送成功,进而spout可以重发该tuple,保证一个tuple在出错的情况下至少被重发一次。但是在需要精确统计tuple的数量如销售金额场景时,希望每个tuple”被且仅被处理一次” 。Storm 0.7.0引入了Transnational Topology, 它可以保证...

晚风中的自由 788

Storm学习记录(九、事物)

目的:保证消息有且只被执行一次 一、分类 1.强顺序流(强有序) 引入事务(transaction)的概念,每个transaction(即每个tuple)关联一个transaction id。 Transaction id从1开始,每个tuple会按照顺序+1。 在处理tuple时,将处理成功的tuple结果以及transaction id同时写入数据库中进行存储。 缺点:一次只能处理...

在知识的海洋中遨游 199

Storm批处理事务详解

1.为什么需要批处理事务 在流式计算中,我们经常需要保证 exactly-once 语义。Storm的一个Spout在发送数据后如果处理失败,由于其ack/fail机制,我们可以得知是那一批数据处理失败,从而重新发送数据进行处理,但是这时会有一个问题,有可能会重复处理了同一批数据,尤其在一些要求比较高的场景(比如支付场景),这样会造成严重的后果,因此为了确保 exactly-once 语义,保证数...

不清不慎的博客 1009

Storm原理与实现

from http://duanple.blog.163.com/blog/static/7097176720138258405697/?latestBlog author:phylips@bmy 2013-02 1         Storm简介 1.1      简介 本文主要是从内部实现的角度来认识下Storm(0.7.1版本),因此需要用户对Storm的基本

好读书,每有会意,便欣然忘食。 1781

storm示例之trident

storm在0.7中引入了事务型拓扑,以满足对消息处理有着极其严格要求的场景,在storm的0.8版本之后,事务性已经被封装到Trident中。trident提供了一套非常成熟的批处理API来批量处理元组,可以对这些元组执行分组(group by)、连接(join)、运行函数、运行过滤器等,trident还封装了DRPC功能,同样支持DRPC远程调用。本文通过一个示例简介trident拓扑。

cjf_wei的博客 1590

Storm学习入门视频教程

Storm流计算从入门到精通之技术篇(高并发策略、批处理事务、Trident精解、运维监控、企业场景)课程讲师:Cloudy课程分类:大数据适合人群:初级课时数量:28课时用到技术:Storm集群、Zookeeper集群等涉及项目:网站PV、UV案例实战、其他案例咨询qq:1840215592课程亮点:1、Storm全面、系统、深入讲解,采用最新的稳定版本Storm 0.9.0.1 ;2、注重实践...

weixin_30929011的博客 77

Twitter Storm: Transactional Topolgoy简介

作者: xumingming 文章原始出处: http://xumingming.sinaapp.com/736/twitter-storm-transactional-topolgoy/   本文翻译自: https://github.com/nathanmarz/storm/wiki/Transactional-topologies 概述 Storm通过保

paul_wei2008的专栏 822
上一篇: Storm批处理事务原理详解
下一篇: 普通事务ITransactionalSpout实例
futureofstar
博客等级 码龄17年 0粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值