实时数据处理革命:从传统数据栈到新一代流处理解决方案

本文主要是介绍实时数据处理革命:从传统数据栈到新一代流处理解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“数据像鱼一样,越放越臭,不像酒,越陈越香。”

图片

上述观点可能显得有些尖锐,但也有其道理所在。随着企业努力利用数据来实现新的商业模式,现有的数据栈明显无法继续满足需求,因为传统数据栈设计之初并未考虑到如今企业对于“超低延迟”的要求。

在深入探讨新应用不断涌现的需求之前,让我们回顾大约十年前的数据和分析领域的主要趋势,毫无疑问是“大数据”运动。思想领袖们用三个 V 来定义“大数据”:体量(Volume)、速度(Velocity)和多样性(Variety)。

简而言之,“大数据”指的是来自新来源的大量且复杂的数据集。这些数据集对于传统软件来说过于庞大,但可以用来解决以前无法解决的业务问题。

企业有巨大的潜力从海量数据中提取有意义的信息。然而,由于缺乏处理如此庞大数据集的工具,这一潜力尚未被充分发挥。大家引入 Hadoop 这类技术期望能够释放这一潜力,但这些大数据技术主要关注解决体量方面的问题,大多数用户没有看到其必要性或价值,所以没有被广泛使用。

为什么会这样呢?

原因有很多,但主要原因是数据的有限保质期。数据从业者面临实时访问数据的挑战,准确地说是在数据的内在价值还很高时实时访问数据的挑战。简单地将原始数据存储在数据湖中类似于数据倾倒,而不是利用数据。

另一个重要原因是即便数据可访问,其原始形式通常也不足以进行有效分析。要从数据中提取有价值的信息,复杂的提取-转换-加载(ETL)过程变得必要。数据依然被隔离在独立系统中,并与特定应用紧密相连。数据源的集成最近才通过消息队列和 CDC 连接器得以改善。

1. 数据特征的演变

传统数据从业者都会关注以下特征:
数据从业者关注的传统数据特征:Accuracy (准确性);Completeness (完整性);Reliability (可靠性)
数据库管理系统用 ACID (Atomicity, Consistency, Isolation, Durability)原则支持这些特征。

  • 原子性(Atomicity):通过全有或全无的语义确保完整性。
  • 一致性(Consistency):通过约束确保数据准确性。
  • 隔离性(Isolation):为数据完整性和准确性提供保证。
  • 持久性(Durability):基于不可变写入确保数据的可靠性。

ACID 原则在满足各种业务需求方面是有效的。当前的数据处理系统确保在任何数据栈中对这些特征的强大支持,所以企业能够处理依赖于静态数据快照的工作量。虽然业内已经通过各种优化来提升处理工作的速度和实时能力,但这些改进仍不能满足需要。

数据圈内,越来越多的人达成共识,认为应将数据视为连续无限的流,而不是快照。企业不再满足于了解过去发生了什么,他们更加关注预测未来结果,这需要对数据进行“实时”分析。在这种情况下,“实时”是由数据延迟定义的,而不是查询延迟。为了更好地理解,我们需要为数据的定义建立一套新的特征。

为了解决这些特征,新的数据处理范式是必要的。这个范式将:

  • 处理离散事件数据。
  • 连续处理实时数据。
  • 集成多个数据流进行状态处理。

2. 早期流处理解决方案

要支持上一节讨论的新的数据处理范式,新的数据处理栈是必要的。这个数据栈应具备以下特征:

  • 事件数据语义以保持事件数据的一致性。
  • 增量计算模型以对实时数据进行连续更新。
  • 熟悉的关系数据模型,将流视为表,以实现各种数据源的无缝集成。

第一代流处理系统:流处理系统已经在满足这些需求方面努力了一段时间。第一代流处理系统,如 Spark Streaming、Apache Heron 和早期版本的 Flink,在某些方面证明了其价值。例如,它们在微批处理方面表现出色,适合特定的使用场景。Spark Streaming 对于希望将流处理纳入现有工作负载的 Spark 用户来说,是一个有价值的补充。总体而言,这些系统继承了成熟的批处理模型的许多优点。

然而,它们也从传统批处理模型中继承了调度和协调问题。它们不支持真正的事件时间语义,这对于在事件驱动架构中构建应用至关重要。此外,这些技术仅关注数据处理方面。缺乏数据存储意味着需要一个单独的数据存储来实现持久化,从而导致应用性能下降和运营开销增加。此外,这些系统主要为早期采用者设计,他们习惯于使用低级 API 和接口。因此,这些技术在快速轻松构建实时应用方面没有显著进展。

3. 新一代流处理解决方案

为了使流处理更加广泛地被采用,必须将 SQL 作为标准 API。此外,新系统应包括内置存储层以有效处理数据检索。

流式数据库的出现:其旨在结合流处理引擎的增量处理能力与传统数据库的基于 SQL 的分析和持久化能力。新一代流式数据库的出现可以改善依赖于独立平台进行流处理和批处理所带来的操作低效问题。流式数据库,如 RisingWave 和 Materialize,旨在使用 SQL 查询和实时物化视图连续处理事件数据流。它们还会持久化历史事件数据以供进一步分析。

与将数据存储在外部数据库中的流计算引擎不同,流式数据库设计之初就考虑到了提供内置处理和持久化能力。这意味着单一的流式数据库就可以作为 Apache Flink + Apache Cassandra 等工具组合的可行替代方案。这样做简化了部署、配置、集成和管理。通过流式数据库,数据库功能向上游转移,实现数据到达时的实时处理,并促进数据的即时服务。

4. 展望未来

通过结合早期流处理引擎和传统数据库系统的优势,我们正在降低流处理的门槛,让更广泛的用户群体受益。这种融合的影响是深远的,企业可以利用实时数据分析做出明智的决策,预测结果,并获得竞争优势。连续的实时数据处理和多数据流的集成支持各种应用场景,包括欺诈检测、实时个性化、供应链优化和物联网分析。此外,流处理的大众化使数据工程师、数据科学家和数据分析师能够在无需大量专业技术知识储备的情况下开发实时应用。

5. 关于 RisingWave

RisingWave 是一款开源的分布式流处理数据库,旨在帮助用户降低实时应用的开发成本。RisingWave 采用存算分离架构,提供 Postgres-style 使用体验,具备比 Flink 高出 10 倍的性能以及更低的成本。

👨‍🔬加入 RW 社区,欢迎关注公众号:RisingWave 中文开源社区

🧑‍💻快速上手 RisingWave,欢迎体验入门教程:github.com/risingwave

💻深入使用 RisingWave,欢迎阅读用户文档:zh-cn.risingwave.com/docs

🔍更多常见问题及答案,欢迎搜索留言: risingwavelabs/discussions

这篇关于实时数据处理革命:从传统数据栈到新一代流处理解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081485

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本