流式计算优化:时效性 [王方浩视角]

本文探讨了流式计算在时效性要求高的场景中的重要性,如金融风控和推荐系统。介绍了流式计算优化的几个关键方面:拓扑排序减少重复计算,多线程利用资源,IO合并优化IO操作,以及分支预测和预取策略提高计算效率。通过这些方法,可以更好地应对实时数据处理的需求。
摘要由CSDN通过智能技术生成

1. 背景-什么是流计算

在传统的数据处理流程中,总是先收集数据,然后将数据放到数据库中,当人们需要的时候通过查询对应的数据进行处理。这样看起来没什么大问题,但是当我们遇到以下场景的时候就有问题了。比如:金融风控,双十一抢购,推荐系统等,这类系统有一个共同的特点,就是对时效性要求非常高。

所谓“时光一逝不复返,往事只能回味“。我们举一个简单的例子,当前你的余额宝账户有3000块,你去商场消费了2000。这时候触发支付宝结算,假设支付宝处理这笔数据需要10秒,而10秒之内,你接着又消费了2000,这时候应该提示你余额不足了,但由于结算程序还在处理,实际上余额还有3000,那么你这2000又结结实实可以消费了。10秒后支付宝反应过来了,这时候钱已经扣了,找谁还钱去啊,这样引发了很大的金融风险。

其实还有一个简单的办法,支付宝在结账的时候(10秒钟之内)禁止消费,又带来的问题是交易量下跌,这样的损失更加接受不了,所以这就对数据的实时处理要求非常高,这1秒的数据这1秒就要处理完,下一秒的数据可能又是其它的情况了。数据就像流水一样不断变化,我们需要实时的处理数据

2. 流式计算优化之拓扑排序

2.1 流式计算

流式计算就是实时查询并且对数据进行计算,假设我们遇到了如下计算场景:

A = D + B
B = C + E
C = D + E

我们需要计算得到 A 的值,如何才能最快的计算出结果呢?我们可以从以下几个方面来分析问题。

2.2 单线程

如果是单线程的情况,我们只能线性的去执行任务,最开始计算 a = d + b,先计算 d,然后计算 b,而 b = c + e,只能再去计算 c,而 c = d + e。先计算出 d 和 e 相加得出 c,然后计算 c 加 e 得出 b,最后计算 d 加 b 得出 a。最后我们统计计算 a,一共做了多少次计算:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值