29 | 流式计算:如何通过集群实现实时计算?
陶辉
该思维导图由 AI 生成,仅供参考
你好,我是陶辉。
上节课我们介绍了在有边界的存量数据上进行的 MapReduce 离线计算,这节课我们来看看对于无边界数据,怎样实时地完成流式计算。
对于不再变化的存量数据,可以通过分而治之的 MapReduce 技术将数据划分到多台主机上并行计算,由于待处理的数据量很大,我们只能获得分钟级以上的时延。当面对持续实时产生动态数据的场景时,业务上通常需要在秒级时延中及时地拿到运算结果。
比如,商家为了拉新促活,会为特定的用户群体(比如新用户或者不活跃用户)推出优惠活动,为了防止“羊毛党”通过大量主机并行地“薅羊毛”,系统要能实时地聚合分析所有优惠券的使用者特点,再基于业务规则及时地封掉“羊毛党”帐号或者 IP 地址,才可以控制住风险范围,提高营销活动的收益。那对于整个系统持续生成的大量订单数据,怎样才能提供秒级的聚合分析结果呢?
最初的流式计算方案,是在时间维度上定期地将数据分片,再基于 MapReduce 思想在空间维度的多台主机上实现并行计算,这样也能获得实时计算结果。然而,对每片数据执行批量计算,想要在秒级甚至毫秒级拿到计算结果并不容易。当网络不稳定时,数据会因为报文延误而乱序,简单的基于时序分片会导致计算结果失真。当数据之间具有明显的业务关系时,固定的时间窗口更是难以得到预期的分析结果。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
流式计算是一种通过集群实现实时计算的技术,适用于处理无边界数据,如持续产生的动态数据流。文章介绍了流式计算的工作原理和常用的数据分片窗口。流式计算通过固定时间窗口的批处理解决方案实现实时计算,同时也可以在每个消息到来时计算出中间状态,提高整体性能。此外,文章还介绍了有状态计算和无状态计算的区别,以及滑动窗口和计数窗口等常见窗口类型。另外,为了避免乱序事件影响统计结果,可以使用水位线减少乱序概率。总的来说,流式计算通过并行的Map计算和Reduce操作实现实时计算,同时结合不同类型的窗口来确定待计算的数据,以满足不同业务场景的需求。文章内容详实,对流式计算的工作原理和常见窗口类型进行了深入讲解,适合读者快速了解流式计算的基本概念和技术特点。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《系统性能调优必知必会》,新⼈⾸单¥59
《系统性能调优必知必会》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 那时刻可以采用kappa架构,比如Kafka,来解决lambda架构带来的系统复杂性,以及同一逻辑需要批、流两套实现。 另外Apache beam也是不错的选择,一套代码可以实现批、流两套数据处理。2020-07-242
- 惘 闻当然,并不是有了水位线,第 1 个窗口就会无限制的等下去。 这句话没有上文映照啊?没有水位线第一个窗口就不等了吗?有了水位线第一个窗口在等什么呀?2021-05-13
- 潘政宇陶老师,请教个问题,我用netstat查看nginx 在那个进程listening,发现有的在master进程,有的在worker进程,这是为什么啊,我的理解应该是在master进程上啊,是reload的原因吗2020-07-24
收起评论