实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。
实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是实时流式计算呢?
谷歌大神Tyler Akidau在《the-world-beyond-batch-streaming-101》一文中提到过实时流式计算的三个特征:
1、无限数据
2、无界数据处理
3、低延迟
无限数据指的是,一种不断增长的,基本上无限的数据集。这些通常被称为“流数据”,而与之相对的是有限的数据集。
无界数据处理,一种持续的数据处理模式,能够通过处理引擎重复的去处理上面的无限数据,是能够突破有限数据处理引擎的瓶颈的。
低延迟,延迟是多少并没有明确的定义。但我们都知道数据的价值将随着时间的流逝降低,时效性将是需要持续解决的问题。
现在大数据应用比较火爆的领域,比如推荐系统在实践之初受技术所限,可能要一分钟,一小时,甚至更久对用户进行推荐,这远远不能满足需要,我们需要更快的完成对数据的处理,而不是进行离线的批处理。
但是这种模型肯定会带来离线批处理所不存在的两个问题:正确性与时间。
而这也正是实时流式计算的关键点:
1、正确性 一旦正确性有了保证,可以匹敌批处理。
2、时间推导工具 而一旦提供了时间推导的工具,变完全超过了批处理。
总结来说,我们得到的会是一条条的,随着时间流逝不断增长的数据,我们需要进行实时的数据分析,我们要解决大数据量,灾备,时序,时间窗口,性能等等问题。
而实时,流式其实是相对的概念,现在的很多技术更应该说是近实时,微批。但只要能不断的优化这些问题,实时流式的计算的价值就会越来越大。
由于大数据兴起之初,Hadoop并没有给出实时计算解决方案,随后Storm,SparkStreaming,Flink等实时计算框架应运而生,而Kafka,ES的兴起使得实时计算领域的技术越来越完善,而随着物联网,机器学习等技术的推广,实时流式计算将在这些领域得到充分的应用。
下面简单介绍目前常用的几种应用场景,未来将对Kafka,Storm,SparkStreaming,Flink等相关技术做具体介绍。
主要应用
1、日志分析
比如对网站的用户访问日志进行实时的分析,计算访问量,用户画像,留存率等等,实时的进行数据分析,帮助企业进行决策。
2、物联网
比如对电力系统进行实时的数据检测,进行报警,实时的显示,或者根据历史数据进行实时的分析,预测。
3、车联网
如今的车联网已经不限于物联网,还包括对用户,交通等等进行分析的一个庞大的系统,改善用户出行。
4、金融风控
通过对交易等金融行为实时分析,预测出未知风险。
还有很多应用的领域,而且未来会越来越多,在这个过程中具体的业务,以及与技术结合能产生什么样的价值,还需要不断的探索。