创建健壮的拓扑结构
在之前的相关实践中,我们已经定义了许多核心概念,并且实现了两个不同的拓扑结构,它们都在本地集群中运行。现在,我们将为一个新的场景设计并实现另一个拓扑结构,该场景对保证元组(tuples)的处理和维护容错性有更严格的要求。为了满足这些要求,我们将引入一些与可靠性和故障相关的新概念,了解处理故障的工具,并深入探讨数据处理的各种保证类型,从而创建出符合生产标准的拓扑结构。
可靠性要求
在之前处理热力图应用时,我们需要快速处理大量对时间敏感的数据。实际上,只需对部分数据进行采样,就能得到当前特定地理区域内场所受欢迎程度的近似值。如果在短时间内未能处理某个元组,它就会失去价值,因为热力图关注的是当下。所以,我们不需要保证每个消息都被处理,大部分处理即可。
然而,在某些领域,这种做法是完全不可接受的,每个元组都至关重要。在这些场景中,我们必须保证每个元组都被处理,可靠性比及时性更重要。即使需要对一个元组重试 30 秒、10 分钟甚至 1 小时(或达到合理的阈值),它在系统中的价值与首次尝试时相同。
Storm 具备保证每个元组都被处理的能力,这是确保功能准确实现的可靠措施。从高层来看,Storm 通过跟踪哪些元组被成功处理,哪些未被处理,然后重新播放失败的元组,直到它们成功,来提供可靠性。
支持可靠性的要素
要实现可靠性,Storm 有多个关键部分需要协同工作:
- 可靠的数据源和相应可靠的 Spout。
- 锚定的元组流。
- 能够在处理每个元组时进行确认或通知失败的拓扑结构。
- 容错的 Storm 集群基础设施。
接下来,我们将重点关注前三个组
超级会员免费看
订阅专栏 解锁全文
3716

被折叠的 条评论
为什么被折叠?



