Jstorm事务,实现Storm事务思想Storm 事务的核心设计思想:

https://github.com/alibaba/jstorm/wiki/%E4%BA%8B%E5%8A%A1

storm的事务主要用于对数据准确性要求非常高的环境中,尤其是在计算交易金额或笔数,数据库同步的场景中。

storm 事务逻辑是挺复杂的,而且坦白讲,代码写的挺烂的。 JStorm下一步将重新设计基于Meta 1 和Meta3 的事务模型,让使用者更简便,代码更清晰。 源码可以参考 jstorm-example

Storm 事务的核心设计思想:

Transaction 还是基于基本的属性之上,做的一层封装,从而满足transaction ##核心设计1 提供一个strong order,也就是,如果一个tuple没有被完整的处理完,就不会处理下一个tuple,说简单一些,就是,采用同步方式。并对每一个tuple赋予一个transaction ID,这个transaction ID是递增属性(强顺序性),如果每个bolt在处理tuple时,记录了上次的tupleID,这样即使在failure replay时能保证处理仅且处理一次 ##核心设计2 如果一次处理一个tuple,性能不够好,可以考虑,一次处理一批(batch tuples) 这个时候,一个batch为一个transaction处理单元,当一个batch处理完毕,才能处理下一个batch,每个batch赋予一个transaction ID。 ##核心思想3 如果在计算任务中,并不是所有步骤需要强顺序性,因此将一个计算任务拆分为2个阶段: processing 阶段:这个阶段可以并发 commit阶段:这个阶段必须强顺序性,因此,一个时刻,只要一个batch在被处理 任何一个阶段发生错误,都会完整重发batch

[

](https://github.com/alibaba/jstorm/wiki/%E4%BA%8B%E5%8A%A1#%E7%BB%93%E6%9E%9C)结果 一次性从Meta或Kafka 中取出一批数据,然后一条一条将数据发送出去,当所有数据均被正确处理后, 触发一个commit 流,这个commit流是严格排序,通常在commit流中进行flush动作或刷数据库动作,如果commit流最后返回也成功,spout 就更新Meta或kafka的偏移量,否则,任何一个环节出错,都不会更新偏移量,也就最终重复消费这批数据。 其实,相当于把一个batch当做一个原子tuple来处理,只是中间计算的过程,可以并发。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏维C果糖

敲开 GitHub 的大门 · 注册账号

在「初识 GitHub · 简介篇」一文中,我们已经初步了解了 GitHub,里面有众多的业界大神、有丰富的学习资料、有著名的开源项目代码,我们也可以在 Git...

28960
来自专栏Material Design组件

Human Interface Guidelines — Sharing and Actions

16930
来自专栏云飞学编程

金牌讲师带你抓取百度图片并封装可执行文件,好东西一定要分享!

点击链接加入群【python┮】:https://jq.qq.com/?_wv=1027&k=5PBsmOo

10120
来自专栏杨建荣的学习笔记

orabbix结合python发送图形报表(一) (r6笔记第33天)

在数据库的运维工作中,如果有一种运筹帷幄的感觉,那么其中一种方式就是看报表,比如喝着咖啡缓缓打开电脑,几十台,上百台的机器的负载明细都在眼底。如果某个地方出现了...

32160
来自专栏杨建荣的学习笔记

MySQL参数对比浅析(r11笔记第97天)

今天按照计划,决定得总结下MySQL的参数了,说来想来,立即就做。 大体算了下,手头的环境主要还是使用了Percona分支,官方的相对较少,就暂且按照Per...

37760
来自专栏NetCore

从三个方面提高网站的链接广泛度

从三个方面提高网站的链接广泛度      网站的链接广泛度(Link Popularity)在搜索引擎排名中的作用已得到广泛的认同和重视。实际上,即使...

18550
来自专栏Linyb极客之路

性能测试之常见术语浅析

对被测系统不断施加压力,直到性能指标超过预期或某项资源使用达到饱和,以验证系统的处理极限,为系统性能调优提供依据;

15330
来自专栏七夜安全博客

linux命令反混淆-忙里偷闲

大家也都知道最近一直在做的是webshell的检测,为啥突然搞了一下linux命令反混淆呢?纯属忙里偷闲之举,主要听了几位大佬的关于linux恶意命令检测这方面...

20120
来自专栏CDA数据分析师

10月精选Python开源项目Top10!

【导读】过去一个月里,我们对近 250 个 Python 开源项目进行了排名,并挑选出热度前 10 的项目。这份清单的平均 github star 数量高达 1...

9510
来自专栏散尽浮华

web cache server方案比较:varnish、squid、nginx

linux运维中,web cache server方案的部署是一个很重要的环节,选择也有很多种比如:varnish、squid、nginx。 下面就对当下常用的...

616100

扫码关注云+社区

领取腾讯云代金券