00:00
接下来我们再来说一下到底哪些行业需要处理流数据,那前面我们说是这个实际生产项目当中啊,数据产生的过程基本上都是一个流式数据的产生,那大家就会想到,那到底哪些行业需要处理这样的流数据呢?就像我们前面举的这个例子,如果说这个你给别人发消息啊,啊,就像聊天的这种场景的话,我们是不是就应该处理的是流数据,但如果说你是写信的场景的话,那就应该处理的是批数据,对吧?哎,所以这这在不同的场景下,可能你要处理的数据也不一样,那哪些行业需要处理流数据呢?首先我们要思考的就是。流数据到底在哪些行业会产生,那这个问题其实非常简单啊,之前我们说的是不是绝大多数的这个行业啊,绝大多数的应用,你只要收集数据,这个数据都是源源不断发生的呀,都不会说我确定的一个时间段啊,它一定就是这段时间去产生啊,很少有这样的场景,大部分它都是源源不断发生的,所以说可以说每个行业都有流失的数据,那到底哪些行业对这个流失处理要求更高呢?
01:12
大家想这个流处理跟我们前面说的这个批处理,它最大的差别在哪里?是不是就是低延迟实时性好啊,诶,所以我们就自然想到了,那哪些场景对这个数据处理的延迟性要求更高啊,那所以我们就会想到他一定要用处理流数据更好的那种大数据处理引擎啊,那所以我们看一下啊,这里边列出了几个比较典型的行业,首先就是电商和市场营销啊,那这一部分我们举的例子是电商,其实大家想到只要跟市场营销相关,那几乎每个公司应该都有这方面的需求,那主要它用来干什么呢?诶诶,你像生成一些数据报表,或者我要去做一些广告投放,另外还有一些是业务流程的需要。这里面比较典型的一个例子就是数据报表啊,大家可以想象一下,就是数据报表我们传统来讲的话怎么做。
02:07
因为在很多网站里边,他要做这个数据报表,可能涉及到的数据量是不是非常非常大,诶大家想一下,我可能统计的是,比方说你要统计一天的数据的话,这个还比较少了啊,往往就要统计一周的,一个月的,甚至一个季度的数据啊,那当然甚至还有可能一年的数据啊,那所有这样的数据,这个数据量可能非常非常的庞大,然后他可能根据我们得到的某个结果要去,呃,就是制定下一阶段的某些市场指标,一些商业指标要去做调整,那对于这样的一个数据报表,我们传统来讲怎么做呢?啊,那你所有的数据我都不都收集齐了吗?对吧?呃,做ETL之后,我直接扔到那个have里边,接下来是不是我直接这个SPA have,然后直接去跑,跑一个CQ把它这个查出来呀,比方说你要统计我们过去一个季度的所有的销量,那我是不是就挨个把那个所有的数据,那个销量值,呃,销售值。
03:04
所有的加起来得到一个结果就完事了,那如果大家做过相关的这种工作的话,肯定就会有经验,有一些场景下,如果我们要做这个,比方说比较复杂的一些连表查询,最后算一个结果的话,那可能你在hi上去运行的话。可能要运行很长时间,对不对,有可能要运行好几小时,甚至上天都有可能,这就是数据特别特别大啊,海量数据,你要做这个离线处理的一个代价。那在有些场景下,我们可能就会觉得,呃,有些场景下你等几分钟没什么问题,但是如果要等几个小时的话,这可能就有问题了,比方说举一个例子啊,我我们自己是一个公司的大数据开发工程师啊,那呃,可能我们就有这样的对应的这些开发任务啊,市场总监就来跟你说了啊,我们现在需要上个季度的这个统计报表,需要把上个季度所有的这个销售的数据啊,相关的这个数据统计出来,打印出来一张报表,就是比方说我们下个月的一号,呃,早上八点钟,我准时就要给CEO去做一个汇报。
04:11
诶,那大家想这样一个需求的话,非常简单啊,我直接写一个CQ对吧,但他他要的是这个我上一个季度的所有的数据,那我就等到这个季度结束的那一天,到晚上12点啊结束了,接下来我就开始跑这个CQ,开始运行做计算,但是大家想这个可能需要运行很长时间是吧。甚至就有可能你要运行好几个小时,甚至有可能要跑一天,那有可能他第二天要给这CEO做汇报,我们就跑不完啊,那就没办法,你就只能跟,呃,市场总监说了,那不好意思,这个你数据量太大,做这个数据处理做不完,这样我们商量一下,你第二天再去做汇报吧,那市场总监肯定说这CEO还能等你的时间吗?我们这个做这个市场分析策略的调整多重要一天,这就是涉及到很大的损失啊,啊,那所以没办法,那那我们就只能是今天出,那今天出怎么办呢?那我稍微调整一下,既然我这个运行就总要跑接近一天时间,那我是不是可以提前一天来做啊,但是大家想这个这种方式又有什么问题,对,那是不是就少了一天的数据,最后有可能导致那个数据不正确啊,但是一般情况可能少一天的数据可能也差不了太多,不会影响到最终的结果,但是如果说刚好这最后一天这个销售额就发生了一个比较大的变动,那我们。
05:32
最后就只好拿着这个结果跟销售总监说了啊,哎,直接这个当天是出了一个结果,已经跟CEO做汇报了,第二天我们又只好找到他说,哎呀,不好意思,我们那个最后一天的那个数据发生了比较大的变化,呃,所以我们这个数据呢,还是再重新跑一下,你看要不要把这个结果再更新一下,再给CEO重新做个汇报。那想在真实工作场景里边,如果你要是这么去做这件事儿的话,可想而知,在这个公司里边啊,其他部门的同事他会怎么想啊,他会觉得他不会认为这是我们当前的这个集群计算的能力不够,他会觉得就是就是我们代码的问题,就是我们这个整个架构,或者说我程序的问题,其实某种意义上还真的就是架构的问题,为什么呢?之前我们做的这种方式都是批处理的方式,对吧?哎,那大想批处理的方式是所有数据都到齐,都攒齐了之后,我再去跑这个CQ,再去做计算,一个一个便利去把它拿出来去做统计,那当然它就很慢啊,啊那大家想我们现在可以做一个什么事情呢?是不是我可以直接做一个流处理,就是来一个数据就直接处理一次。
06:45
那这个过程其实就相当于是只要来了数据之后,我立刻就把对应的那个数据就做,比方说我统计这个销量值,我直接是不是就加叠加上去了,那叠加上去之后,最后我要输出这个结果的时候,我是不是直接输出一个最终的结果就可以了呀?那这个过程是不是就相当于我最后不需要有任何的重复计算的过程,直接你到了那个时间点,只要我数据都到齐,我是不是直接就可以输出结果。
07:13
这个过程就非常非常对吧?啊,这就是流处理跟批处理最大的一个差别,它相当于是把我们最后便利数据挨个去叠加,计算的这个过程直接分散到每一个数据来的时候,就直接把这个工作做了,对吧?啊,所以从架构上来讲,流处理就可以极大的提升计算的效率,最后输出的时候就可以做到非常的实时。啊,这就是呃,流处理的一个基本的应用啊,那除了这个电商和市场营销之外啊,另外还有其他的一些行业,比方说就是后面这个物联网啊,IOT这个大家可能也听说过,就是呃,Internet of things,它其实就是万物互联,呃就是所有的这个物体啊,本身它应该能够采集数据,能够生成数据,然后呢,还要在联网连接起来传输数据,去做计算处理控制,对吧?啊这就是物联网的概念,那这个行业里边最典型的应用大家看是什么?
08:13
在工业上的话,那就是有一些传感器对吧,传感器实时的数据,我们做这个采集显示,或者说做一些报警对吧?啊,这比方说有一些工业设备啊,这个温度太高了啊,或者说出现这个一些异常的情况了,那那我们可能采集到数据之后直接做报警啊,那另外还有就是交通运输业,你像我们这个现在我们做这个智能智能交通智能控制,那当前我们路况上的一些信息和汽车当当前发生的一些数据,那是不是都是连续不断产生的呀,但想这个这跟传感器一样,对吧?道理是一样的,那你说你像这些数据你要做处理,做控制,你能说攒一批,隔一会儿之后再去做控制吗?那肯定不能,这个对实时性要求更高,你甚至说隔几秒钟之后,有可能这个这个车都已经偏到不到哪哪里去了啊,所以说在有一些场景下,我们必须要处理这个流失数据,而且延迟一定要低,对实时性的要求非常高的。
09:11
啊,那另外还有一些就是比方说电信业基站可以做这个流量调配啊,这主要就是说大家知道我们的这个手机连接这个基站啊,我们的这个信号它其实没有特定的要求,就是说我一定比方说呃,我们在北京就只能连接北京的基站啊,其实你如果到了这个,比方说你到了周边啊,到了这个密云,到了延庆离边界比较近的地方的时候,你会发现那就会直接收到比方收到河北的信号了啊,所以其实这个基站本身它是可以就是离谁近直接就调调配过去的。啊,那在传统来讲的话,电信的这个行业,它的这个,呃,流量调配呢,它主要就是看你的这个地理位置,对吧,你到了进入到哪个哪个境内就连接哪个基站,呃,就比方说你收到是北京的信号还是河北的信号啊,那在有一些场景下呢,它可能就会有比较大的问题,比方说出现一些比较大的灾难,或者说一大片区域发生故障的时候,这个可能就会比较有问题,这个给大家举一个例子,就是像呃,零八年汶川地震的时候啊,首先基基站就少了,然后又同时又有大量的流量进来,很多人都在打电话发短信,对不对?呃,突然有一个峰值,诶,那就导致他是不是处理不过来了。
10:28
哎,直接就导致直接就瘫痪了,所有的那个信息都进不去了,呃所以呃,当然了,对于我们一般人来讲的话,这个其实也无所谓对吧,你你隔两天如果只要能,只要没事儿啊,联系上之后,呃知道没问题就可以了,但是对于有一些你像救援团队对吧,救援物资,你这个如果跟里边联系不上的话,可能这个代价是非常大。啊,那大家会想到,如果说我可以做一个实时的流量调配的话,我检测到这边呃,有这个峰值,哪一部分地区有这个流量峰值,我直接就把周边的那些基站都调配过去,去增强这一部分的处理能力,那是不是就可以保证我们可以应对这种突发的这种事件啊。
11:11
啊,对吧,这其实在有一些特定的场景下,还是非常有意义的啊,最后还有一个就是银行和金融业啊,这个比也是比较有特色,就是大家可能听说过有一个说法叫银行家工作时间啊,什么叫银行家工作时间呢?就是早期的银行,银行,呃,这个上班的人啊,银行家。他下午下班非常早,就是下一般下午就是大概有个三四点钟直接就下班了就走了,为什么呢?不是因为银行钱多不用干活啊,是因为每天三四点钟就要结束当天的所有交易,要开始做。盘点结算了啊,因为你当前如果这个账对不齐的话,第二天继须在之前的基础上去做这个,呃,交易的话,那可能这个账都乱了嘛,所以他每天必须要留下这个时间去做这件事儿,所以大家看这个盘点核算,它其实相当于是个什么事啊。
12:07
就是我的当天的这个交易都已经发生了,发生完了,然后我现在又要把所有的交易收集起来,收集一批,最终再去做一个核对,对吧?诶对,所以大家看这就是一个批处理的过程嘛,所以它比较耗时间,所以大家会想到我们可以怎么样去调整它呢?那你每发生一个交易,发生一笔交易记录,我直接去做核算不就完了吗?那所以大家想我可以把这个转成一个实时的结算盘点啊,然后对应还可以做一些这个消息的推推送,另外还可以检测一些异常的行为,所以这个在银行和金融业现在应用也是非常广泛的,这就是当前我们这个各行各业啊,都要用到流数据的处理。
我来说两句