重磅!流式数据库新星 RisingWave 是下一个 Apache Flink 吗?
英文原文:https://singularity-data.com/blog/is-risingwave-the-next-apache-flink/
两周前,我们开源了云原生流式数据库RisingWave 。很快,该项目就获得了开源社区的广泛关注,并成为使用 Rust 编写的第一大热门项目!
我们很高兴 RisingWave 引起了开源社区的兴趣。因为我们的使命是使流处理民主化——让流处理变得简单、负担得起且易于使用!一个更令人兴奋的细节:我们正在从头开始构建这个云原生流式数据库。
你是对的。市场上有许多流处理系统,在过去十年中,我们看到了很多。那我们为什么要建立另一个流系统?社区的一个常见问题是:RisingWave 与Apache Flink有何不同?而这个博客就是关于这一切的——从开发人员的角度来看,这是一个简化的、易于理解的指南。
Github Trending:https://github.com/trending/rust?since=weekly(2022 年 4 月 17 日截屏)
Apache Flink 是什么?
Apache Flink,最初称为 Stratosphere,是由柏林工业大学的一组研究人员发起的分布式流处理引擎。自 2011 年5 月首次发布以来,Flink 在学术界和工业界都获得了极大的欢迎。它是目前全球最知名的流处理系统(如果你认为我做错了,请挑战我!)。
作为早期参与 Flink 流处理框架(也称为 Stratosphere Streaming)设计的早期贡献者之一,我见证了这个项目在过去十年中的成长和演变。
我对 Stratosphere Stream 的建议(2014 年提交)
诞生于大数据时代,设计背后的一些关键思想是:
Flink 将自己定位为流计算引擎:它不提供数据持久化能力。相反,它专注于提供跨数千台机器的实时数据处理能力。为此,Flink 遵循 MapReduce 的设计,为用户提供了一组低级编程 API(Java 语言),可用于在大型集群上实现并行和分布式算法。
Flink 是为大数据栈原生设计的:它高度依赖各种大数据服务(如 Zookeeper、HDFS 和 Yarn),并且可以与其他大数据系统(如 Cassandra 和 HBase)完美集成。与 MapReduce 一样,Flink 采用shared-nothing 架构,每台机器存储和处理自己的数据,完全独立于其他机器。
通过耦合计算和存储,Flink 可以获得极高的可扩展性,但它的弹性变得更加难以实现和管理。使用 Flink 来支持流式应用程序可能会非常昂贵。系统用户可能必须不断地为峰值容量提供资源,以避免在工作负载波动期间出现延迟峰值。
Flink 经受住了时间的考验,这从它在过去十年中在大数据世界中的受欢迎程度反映出来。然而,进入云时代,大家都在寻找简单、实惠的云端解决方案。Flink 可能不再是流处理的最佳答案。这就是促使我们构建新的云原生流处理系统的原因。RisingWave 诞生了!
什么是 RisingWave ?
RisingWave 是一个从头开始构建的云原生流式数据库。从 Amazon Redshift 签约后,我于2021 年初启动了该项目。经过超过 15 个月的开发,RisingWave 现在在 Apache License 2.0 下开源,我们正在与开源社区一起构建该项目。
RisingWave的内部架构
为了简化流处理,我们重新审视了一个古老的研究方向:流式数据库。流式数据库的想法可以追溯到数据流管理系统 (DSMS)的早期提议,该系统以与数据库中的数据管理相同的方式管理数据流。与许多其他数据库一样,RisingWave 可以摄取数据、存储数据并回答来自最终用户的并发访问请求。所有这些请求都可以用 PostgreSQL 风格的 SQL 来表达。
RisingWave 不仅仅是一个 SQL 数据库系统,它还提供流处理能力:它使用流数据,执行连续查询,并以物化视图的形式动态维护结果。在数据库内部处理数据流与在流计算引擎内部处理数据流有很大不同:流数据会立即被摄取到数据表中;对流数据和历史数据的查询被简单地建模为表连接;查询结果直接在数据库内部维护和更新,无需推送到下游系统。
RisingWave 建立在现代云基础架构之上。云基础设施带来的一个关键优势是,RisingWave 可以根据用户的需求,分别无限扩展计算和存储资源。这提供了根据流工作负载不断获得最佳性价比的机会。为了充分释放云基础设施的力量,RisingWave还采用了分层架构:计算层和存储层完全解耦,可以按需扩展,并且在这两层中间增加了一个特殊的缓存层,从而减少远程存储访问的频率。
RisingWave 与 Flink 有何不同?
现在让我们回到我们的问题:RisingWave 与 Flink 有何不同?尽管 RisingWave 和 Apache Flink 都为实时应用程序提供了流处理能力,但它们在很多方面都不同:
定位
Flink 是一个流计算引擎,使用户能够处理流数据。它不保留用户数据,也没有针对用户发出的并发查询进行优化。
RisingWave 的核心是一个可以使用数据并为最终用户提供查询服务的数据库系统。与传统的 SQL 数据库相比,RisingWave 擅长提供以低延迟处理流数据的能力。
目标
Flink 旨在在固定资源量的情况下最大化性能。其计算存储耦合架构使其能够以高成本实现无限扩展。
RisingWave 关心性能。最重要的是,RisingWave 专为优化成本效率而量身定制。它采用分层架构,充分利用云资源,为用户提供对成本和性能的细粒度控制。
接口
Flink 原生提供了一个低级的 Java API。虽然低级 API 为专家提供了完全控制底层数据流的能力,但开发和调试却很困难,尤其是对于系统爱好者而言。Flink 也提供SQL 接口,但它的大数据方言需要用户在编写任何 SQL 查询时特别注意。
RisingWave 提供与 PostgreSQL 兼容的标准SQL接口。用户可以像使用 PostgreSQL 一样处理数据流。
生态系统
Flink 是一个与大数据生态系统深度融合的大数据系统。用户需要将 Flink 与 Zookeeper、HDFS、Yarn 等其他开源大数据系统一起部署。
然而,RisingWave 是一个与云生态系统完全集成的云原生系统。RisingWave 是现代数据堆栈不可或缺的一部分:用户可以将 RisingWave 与他们喜欢的云中任何系统连接,例如 Apache Kafka、Apache Pulsar、Redpanda、Amazon Kinesis 等。RisingWave 与 PostgreSQL 的有线兼容性进一步允许用户访问繁荣的PostgreSQL 生态系统。
操作
Flink 操作起来相当困难和昂贵,因为它深深植根于大数据堆栈中。操作 Flink 本质上需要用户使用多个系统,包括 Zookeeper、HDFS 等。用户可能不得不手动重新配置系统,以提高应对工作负载波动的效率。
RisingWave 的云原生设计大大降低了系统操作的门槛。RisingWave 不依赖任何大数据服务,其解耦的计算和存储架构极大地简化了弹性管理。
目标用户
Flink 的目标用户主要是数据工程师和专家。运营成本和学习曲线让业余用户难以充分利用 Flink 的威力。
RisingWave 不仅针对工程师,还针对数据科学家、分析师、决策者以及任何需要新结果的人。它可以在云端轻松部署和维护,并且可以在很少人为干预的情况下实现弹性。其 PostgreSQL 风格的 SQL 还使用户可以轻松地编写他们的流应用程序。
结论
Flink 是一个大数据引擎,而 RisingWave 是一个云数据库。
RisingWave 不是下一个 Flink。它是云时代流处理的答案。