流式计算典型系统技术分析|学习笔记

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习流式计算典型系统技术分析

开发者学堂课程【分布式计算入门流式计算典型系统技术分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/375/detail/4706


流式计算典型系统技术分析


目录:

一、业界典型系统技术概要分析


一、业界典型系统技术概要分析

1. Twitter Strom

(1)Twitter 内部使用、开源,被广泛使用的一套流计算系统

核心概念

Topology

完整地流计算作业

Spout

收集数据的任务

Bolt

进行相关计算的任务

Task Spout

Spout 、Bolt 负责某一数据分片的实体(调度的最小单位)

Acker

负责跟踪消息是否被处理的节点

(2)异或^

a^a=0  成对出现的一组数异或后都得0

a^b^a^b=0 与成对出现的顺序无关

Strom 很巧妙地利用了这个特性来跟踪整个数据数。也就是说它在任何一个 bolt 做处理的时候,先生成一个随机数。将这个随机数汇报到 acker。Acker 把那个数跟原来的那个数进行异或操作,然后 strom 将这个异或值传递到子节点。子节点在处理完成以后,将这个传递下来的数发给 acker 进行异或处理,同时迭代刚才那个过程。所以如果没有任何问题的话,那么任何的节点这个值都会成对出现,那最终这批数据处理完后, acker 将会异或成0。如果没有异或成0,将视为发生了故障,将会从源头重播这个数据。

acker 针对每个数据都进行这样的操作,所以在实战中会发现当 bench 的数据设置的非常小的时候,那么整个 acker 的数据,将会和本身数据量同等量级,这将会极大地影响整个系统的吞吐和性能。

这也是 storm  acker 机制非常致命的弱点。

(3)Nimbus-Zookeeper-Supervisor

系统单点(无状态)

负责接受 Topology ,进行资源调度

将调度信息记录到 Zookeeper 中

定期检查  Zookeeper 中各个 Supervisor  的心跳信息

根据心跳状态,决定是否重新调度

每台物理机上启动一个(无状态)

轮询 Zookeeper  中的调度任务信息,启动、删除  Task

定期将心跳信息写入 Zookeeper

容错

数据→发送→处理→ Acker 成功容易出现数据丢失 重复

那么在流式计算中间,其实要保证数据的完全的精确,所面临的问题要比离线和批量计算要复杂。因为整个数据是一个有状态的计算,所以整个数据到发送到处理结点到 acker 成功整个过程并不是原子操作。所以很容易出现数据的丢失、数据重复等问题。那么数据的丢失,可以被利用重播机制来解决,但是重播机制无法解决数据 onlyonce 的语义,也就是说数据多不少只被处理一次。

(4)Transactional Topology

需要跟踪整个源头数据的所有子孙消息

如何解决消息被重复处理的问题

1.png

注:用户代码利用唯一的 Batch ID 进行去重

storm 在 spout 上将源头消息串行的划分成一个一个的 bench ,将每个 bench 赋予一个完全递增的一个 ID ,记录在 ronkeep 中。那么利用 acker 机制来跟踪整个 bench 的数据是不是未完全处理,超时和节点异常情况下 spout 会种整体重播这个 bench 内的所有消息,影响中间状态的操作可以被并罚执行。用户可以有机会利用唯一的 bench 进行驱虫,也就是说假设你进行了一个加法操作,实际上用户这部分代码,整个计算是有状态计算。所以用户可能把这批的数据进行了加法操作。所以有可能计算成功,但是 acker 回去失败。

那么做一个有状态的计算,他不可能说把这个数据再重新全部去计算一遍,那么这个计算的结果会被累加,会被重复计算。所以 storm 给一个机会,给你分配了一个唯一的 id ,让用户代码自己去实践驱虫逻辑。

限制

整个 Topology 同一时刻只能有一个 Batch 正在执行

当然 stormy 要让用户使用这个唯一的id去做驱虫,它就有一个很强的约束,节点计算可以分布式计算,但是真正去提交到持久化状态的时候,整个拓扑同一时刻只能有一个 bench 的印象。正在执行这个提交操作。

(5)优点

消息在框架内不落地,处理非常高效

保证了消息至少被处理

Transactional Topology 为消息去重提供了可能

调度模式简单,扩展能力强

社区资源丰富

Transactional Topology 对 Batch 串行执行方式,性能下降严重

成本高

(6)动态调整并发度

自主调用 SplitShard\MergeShard

2.Google MillWheel

Bigtable 持久化中间结果

将每个节点的计算输出消息进行持久化

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
打赏
0
0
0
0
301
分享
相关文章
B端算法实践问题之设计一套实时平台能力如何解决
B端算法实践问题之设计一套实时平台能力如何解决
59 1
B端算法实践问题之Blink在实时业务场景下的优势如何解决
B端算法实践问题之Blink在实时业务场景下的优势如何解决
70 1
构建高效的数据流处理系统:从理论到实践
【8月更文挑战第27天】本文旨在通过深入浅出的方式,带领读者探索构建一个高效、可扩展的数据流处理系统的全过程。我们将从基本概念出发,逐步深入到架构设计、技术选型、实现细节,并最终展示如何将理论应用于实际项目中。文章不仅提供代码示例,还着重讨论了在设计和开发过程中遇到的挑战及解决策略,为希望深入了解或构建数据流处理系统的技术人员提供了一份实用指南。
TDengine 用户案例合集 | 智能环保项目的时序数据处理难点与优化实践
本篇文章汇总了三个典型的智能环保项目的数据架构升级实践,给有需要的企业参考。
253 1
综合能源系统分析的统一能路理论(三):《稳态与动态潮流计算》(Python代码实现)
综合能源系统分析的统一能路理论(三):《稳态与动态潮流计算》(Python代码实现)
146 0
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
430 0
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
《大数据分析原理与实践》——1.4 大数据分析的过程、技术与难点
本节书摘来自华章计算机《大数据分析原理与实践》一书中的第1章,第1.4节,作者 王宏志,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3474 0
《大数据分析原理与实践》——3.3 相关分析
本节书摘来自华章计算机《大数据分析原理与实践》一书中的第3章,第3.3节,作者 王宏志,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1396 0
《大数据分析原理与实践》一一1.4 大数据分析的过程、技术与难点
本节书摘来自华章出版社《大数据分析原理与实践》一 书中的第1章,第1.4节,作者:王宏志 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2895 0