- 1
- 0
- 约1.26万字
- 约 9页
- 2018-02-19 发布于浙江
- 举报
Storm消息可靠的性的保障机制
Storm消息可靠性的保障机制
以WordCountToPology为例:
// 构造Topology
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout(SPOUT_ID,new SentenceSpout(), 2)// 指定 Spout ,2 指的是使用2个executor来运行spout
.setNumTasks(4);//指定tasks的数量
// 指定 SentenceSpout 向SplitBolt发射tuple 随机分组
builder.setBolt(SPLIT_BOLT, new SplitBolt(), 3) // 3 指的就是使用3个executor来执行bolt
.shuffleGrouping(SPOUT_ID);
builder.setBolt(COUNT_BOLT, new CountBolt(), 2).fieldsGrouping(SPLIT_BOLT, new Fields(word));
builder.setBolt(PRINT_BOLT, new PrintBolt(), 1).globalGrouping(COUNT_BOLT); // 全局分组
这个topology从一个队列中读取句子,然后将句子分解成若干个单词,然后将它每个单词和该单词的数量发送出去。这种情况下,从 spout 中发出的 tuple 就会产生很多基于它创建的新 tuple:包括句子中单词的 tuple 和 每个单词的个数的 tuple。这些消息构成了这样一棵树:
如果这棵 tuple 树发送完成,并且树中的每一条消息都得到了正确的处理,就表明发送 tuple 的 spout 已经得到了“完整性处理”。对应的,如果在指定的超时时间内 tuple 树中有消息没有完成处理就意味着这个 tuple 失败了。这个超时时间可以使用 Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS 参数在构造topology时进行配置,如果不配置,则默认时间为 30 秒。
在消息得到完整性处理后或者处理失败后会发生什么
为了理解这个问题,让我们先了解一下 tuple 的生命周期。下面是定义 spout 的接口(可以在 Javadoc 中查看更多细节信息):
public interface ISpout extends Serializable {
void open(Map var1, TopologyContext var2, SpoutOutputCollector var3);
void close();
void activate();
void deactivate();
void nextTuple();
void ack(Object var1);
void fail(Object var1);
}
首先,通过调用 Spout 的 nextTuple 方法,Storm 向 Spout 请求一个 tuple。Spout 会使用 open 方法中提供的SpoutOutputCollector 向它的一个输出数据流中发送一个 tuple。在发送 tuple 的时候,Spout 会提供一个 “消息 id”,这个 id 会在后续过程中用于识别 tuple。
使用 Storm 的可靠性机制的时候你需要注意两件事:首先,在 tuple 树中创建新节点连接时务必通知 Storm;其次,在每个 tuple 处理结束的时候也必须向 Storm 发出通知。通过这两个操作,Storm 就能够检测到 tuple 树会在何时完成处理,并适时地调用 ack 或者 fail 方法。Storm 的 API 提供了一种非常精确的方式来实现着两个操作
因此SentenceSpout需要做如下修改,在nextTuple方法中,发送tuple时,增加一个msgId;如果返回确认成功,则调用ack方法,把执行成功的msgId从缓存中移除,如果超时,或者异常,在调用fail方法,进行重试。具体实现如下:
public class SentenceSpout extends BaseRichSpout{
private static final Logger logger = LoggerFactory.getLogger(SentenceSpout.class);
/**
* tuple发射器
*/
pr
您可能关注的文档
最近下载
- (高清版)B-T 6739-2022 色漆和清漆 铅笔法测定漆膜硬度.pdf VIP
- 康玉明-如何撰写国家自然科学基金申课件.ppt VIP
- 在带头固本培元、增强党性等“五个带头”对照检查发言材料2篇范文2026年.docx VIP
- 2025《医疗器械经营质量管理规范》培训课件.docx VIP
- 农产品质量安全检测知识竞赛考试题库资料500题(供参考).pdf VIP
- 卓梅尼GTEC188 电梯控制系统调试手册v1.4.pdf
- 汽轮机热力性能试验的技术应用.ppt
- 心理痛苦评估表、焦虑、抑郁自评量表、预期性悲伤量表、社会支持评定量表、患者尊严量表.pdf VIP
- 心律失常专题宣讲.ppt VIP
- 网红直播对消费者购买决策行为影响因素研究.docx
原创力文档

文档评论(0)