新闻

流式计算和实时计算有什么区别?

2022.11.29

本文相关内容摘自知乎问题“流式计算和实时计算有什么区别”下 DolphinDB 的回答。

流式计算和实时计算是以不同的维度对计算任务做出的分类,严格来讲,流计算与实时计算这两个概念并不可以拿来类比,与之对应的概念应为批计算和离线计算。

实时计算 VS 离线计算

按照数据处理的延迟分类,我们可以将计算分为实时计算离线计算

实时计算强调尽快响应每个到达的数据记录,比如毫秒级甚至微秒级的响应延迟。以统计股市或者电商平台的日总成交金额为例,实时计算指每当市场上发生交易时,系统立刻对最新的成交记录做出响应,更新当日的总成交金额。

与之相对的,在交易发生时不做及时响应,而是等到第二日再统计前一日的总成交金额,则称为离线计算

流计算 VS 批计算

按照数据处理的方式分类,我们可以将计算分为流计算和批计算。

流计算强调其处理的数据是无界的数据流,无界的数据流也称为流数据,工业设备上的传感器记录、股市的逐笔成交记录都是源源不断生成的流数据。针对数据流这个特征,流计算是一个持续的计算任务,处理的数据大小为单条记录或者微批的记录。

批计算处理的是有界的数据集,且数据集通常包含大批量数据,一次批计算不管是运行几分钟还是几个小时,总是会结束的。

以统计日总成交金额为例,即使是在每笔交易发生时做出实时响应,依然有两种截然不同的计算方法:若以当日截止当前所有的成交数据作为计算输入得到结果,这种基于全量数据集的计算称为批计算;而若是将成交数据看做一个序列,总是增量地处理最新到达的数据以更新统计结果,则称为流计算,总成交额可以通过最近一次统计的总成交额与最新一条成交记录的金额相加得到。在实时统计总成交金额的这个例子中,流计算是更优的数据处理方式。

因此,严格来讲,流计算与实时计算这两个概念并不可以拿来类比。

但由于业界通常以流计算作为实现实时计算的底层技术,比如近年来流计算引擎 Flink 在实时计算领域被广泛应用,因此很可能在一些场合中,在使用实时计算和流计算这两种表述时并没有进行严格的区分。

DolphinDB 的实时流处理框架

DolphinDB 的实时流处理是一个轻量化一站式平台,在金融量化分析、物联网等领域有着大量的用户。在没有太多选择的情况下,很多用户基于Kafka + Flink + 实时数仓来构建实时数据处理平台。与上述的开源多系统集成的实时计算解决方案相比,DolphinDB 的实时流处理框架是基于轻量一体化设计的原则,内置支持流数据的发布、订阅、预处理、实时内存计算、复杂指标的滚动窗口计算等,将通道,计算,存储三大组件均纳入一套系统内完成,不仅实现轻量化的部署和运维,而且也支持高可用模式部署,规避单点故障对实时生产系统造成业务上的影响。

从开发效率和计算性能上考虑,DolphinDB 设计了多个独立实时计算引擎,可以让业务人员以低代码的方式实现各种场景的复杂计算。DolphinDB 还提供了上百个实现了增量算法优化的内置算子,并支持内存交换方式输出计算结果,将整体计算链路的时延压缩到极致。此外,DolphinDB 作为时序数据库本身具有优秀的批计算能力,并且能够达到“流批一体”,即批计算和流计算可以使用同一套代码,并保证批计算与流计算的结果完全一致,在金融等领域此特性可以帮助企业实现产研一体,极大缩减从投研到投产的周期。

作为国内领先的时序数据库厂商,DolphinDB 集高性能时序数据库(time-series database)与全面的分析功能为一体,可用于海量结构化数据的存储、查询、分析、实时计算,实现 PB 级数据查询毫秒级响应以及复杂分析任务秒级响应,助力企业实时商业决策。

在国际权威的数据库排行网站 DB-Engines 今年11月的最新排名中,DolphinDB 持续保持时序数据库榜单国内排名第1,全球第9,也是唯一进入前10名的国产厂商。