流式数据库 |RisingWave 的架构、容错、数据持久化

在上一篇文章中,已经为大家分享了 RisingWave 相关核心概念和术语。本文将在此基础上为大家介绍 RisingWave 的架构、容错以及数据持久化。

1. 架构

RisingWave 的架构如下图所示。它由三个主要部分组成:Meta 节点、Compute 节点和 Compactor 节点。

  • Meta 节点负责管理 Compute 节点和 Compactor 节点的元数据,并协调整个系统的操作符。
  • Compute 节点负责从上游系统获取数据,解析和运行 SQL 查询,并将数据传送到下游系统。
  • Compactor 节点处理数据存储和从对象存储中检索数据。它们还执行数据压缩,以优化存储效率。
    RisingWave 架构

2. 容错

RisingWave 是一种容错的分布式流处理系统。让我们通过以下三个方面对其是如何处理故障的做整体了解:

  • RisingWave 如何从故障中恢复?
  • 发生故障时,RisingWave 如何确保数据的正确性和一致性?
  • RisingWave 的故障恢复对计算有何影响?

RisingWave 采用 Chandy-Lamport 算法创建检查点。检查点是代表整个系统在特定时间点的一致状态的全局快照。在 RisingWave 中,检查点被持久化到一个持久且高度可用的远程存储中。

读取查询时,RisingWave 总是从上一个检查点获取数据。这确保了数据的正确性和一致性。

如果发生故障,只有未保存到下一个检查点的状态才会丢失。RisingWave 所有内部有状态的算子都将从上一个检查点获取状态。这种方法避免了全部重新计算,因此不会造成长时间延迟。检查点间隔可以配置,默认为 10 秒。这意味着故障造成的延迟不应超过 10 秒。

例如,假设 RisingWave 集群已摄取 Kafka 数据 24 小时,在 1:00:25 出现故障,而最后一次检查点是在 1:00:20。在这种情况下,RisingWave 不会重新计算一天前的数据,而是从 1:00:20 的检查点开始重新计算。

为了尽量减少对计算的影响并提高效率,检查点是增量创建的。自上次检查点之后生成的状态会增量持久化到远程存储中。RisingWave 会在后台运行远程压缩任务来压缩检查点中的状态。这样可以回收空间,并提高读取性能。

3. 数据持久化

RisingWave 在创建检查点时,流算子和输出结果的增量状态会被持久保存在高可用的远程存储中,默认的检查点间隔为 10 秒。

在 RisingWave 中,Compute 节点在创建检查点之前会在内存中缓冲脏状态(脏状态指的是自上次检查点以来未保存的状态),从而执行写批处理。

当内存缓冲区超过某个内存阈值(可配置)或创建检查点时,脏状态将被刷新并持久保存在远程存储中。

RisingWave 并不要求所有数据都保存在内存中才能运行。数据可以持久化至:

  • S3 或与 S3 兼容的对象存储
  • 谷歌云存储,或 HDFS/WebHDFS(通过 Apache OpenDAL 实现支持)

如果有更多的内存资源,通常可以实现更好的缓存,从而提高性能,特别是对于要求很高的工作负载来说。不过,也可以通过分配有限的内存资源,实现中小型工作负载中等性能,从而节省一些成本。

4. 关于 RisingWave

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

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

🧑‍💻想要了解和探索 RisingWave,欢迎浏览我们的官网:risingwave.com/

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录算法训练营第42期 第一天 | LeetCode704. 二分查找、27. 移除元素】

代码随想录算法训练营第42期 第一天 | LeetCode704. 二分查找、27. 移除元素 一、704. 二分查找 解题代码C&#xff1a; class Solution { public:int search(vector<int>& nums, int target) {int l 0, r nums.size() - 1;while(l < r){int mid l r 1 >…

linux环境安装mongoDB

一、安装单体mogodb 目标&#xff1a;在Linux中部署一个单机的MongoDB&#xff0c;作为生产环境下使用。 提示&#xff1a;和Windows下操作差不多。 步骤如下&#xff1a; &#xff08;1&#xff09;先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。 &#xff08;2&…

SpringBoot Bean管理

我们知道可以通过Spring当中提供的注解Component以及它的三个衍生注解&#xff08;Controller、Service、Repository&#xff09;来声明IOC容器中的bean对象&#xff0c;同时我们也学习了如何为应用程序注入运行时所需要依赖的bean对象&#xff0c;也就是依赖注入DI。 本篇主要…

c++初阶知识——内存管理与c语言内存管理对比

目录 前言&#xff1a; 1.c&#xff0b;&#xff0b;内存管理方式 1.1 new和delete操作自定义类型 2.operator new与operator delete函数 2.1 operator new与operator delete函数 3.new和delete的实现原理 3.1 内置类型 3.2 自定义类型 new的原理 delete的原理 new…

Oracle12c及更高版本中引入的新特性CDB数据库容器和PDB可插拔数据库

Oracle的CDB&#xff08;Container Database&#xff0c;数据库容器&#xff09;和PDB&#xff08;Pluggable Database&#xff0c;可插拔数据库&#xff09;是Oracle 12c及更高版本中引入的新特性&#xff0c;旨在支持多租户环境&#xff08;Multitenant Environment&#xff…

python取色器

本文使用创作助手。 要在Python中识别图片的颜色&#xff0c;你可以使用PIL&#xff08;Python Imaging Library&#xff09;库。以下是一种基本的方法来识别图片中的颜色&#xff1a; from PIL import Imagedef get_image_colors(image_path):# 打开图片image Image.open(i…

gite+picgo+typora打造个人免费笔记软件

文章目录 1️⃣个人笔记软件2️⃣ 配置教程2.1 使用软件2.2 node 环境配置2.3 软件安装2.4 gite仓库设置2.5 配置picgo2.6 测试检验2.7 github教程 &#x1f3a1; 完结撒花 1️⃣个人笔记软件 最近换了环境&#xff0c;没有之前的生产环境舒适&#xff0c;写笔记也没有劲头&…

图——图的遍历(DFS与BFS算法详解)

前面的文章中我们学习了图的基本概念和存储结构&#xff0c;大家可以通过下面的链接学习&#xff1a; 图的定义和基本术语 图的类型定义和存储结构 这篇文章就来学习一下图的重要章节——图的遍历。 目录 一&#xff0c;图的遍历定义&#xff1a; 二&#xff0c;深度优先…

【代码随想录】【算法训练营】【第58天 2】 [卡码102]沉没孤岛

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 58&#xff0c;周四&#xff0c;ding~ 题目详情 [卡码102] 沉没孤岛 题目描述 卡码102 沉没孤岛 解题思路 前提&#xff1a;修改孤岛的值 思路&#xff1a;DFS or BFS&#xff0c;使用visite…

探寻大模型回答9.9和9.11犯错的根本原因

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

每日OJ_牛客_排序子序列

目录 牛客_排序子序列 题解及代码 牛客_排序子序列 排序子序列_牛客笔试题_牛客网 题解及代码 本题依次比较整个数组 v[i1]>v[i] &#xff0c;则进入非递减序列判断&#xff0c;直到遍历到下一个值不大于等于为止count&#xff0c;然后进行下一位置的判断v[i1]<v[i]…

算法之判断对称二叉树

94. 二叉树的中序遍历101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;fa…

特斯拉新一代人形机器人Optimus二代:听说行走速度能够提升30%?

在当今这个快速变化的时代&#xff0c;人工智能已成为我们探索未来的一大驱动力。特斯拉以其在电动汽车领域的创新而闻名&#xff0c;而Optimus智能机器人的发布&#xff0c;更是将这种创新精神带到了一个新的领域 1. 智能机器人&#xff1a;Optimus的起源 2021年8月&#xff…

lua 游戏架构 之 TablePool`对象池

定义一个名 TablePool class&#xff0c;用于管理一个对象池。对象池是一种用于优化内存使用的技术&#xff0c;通过重用对象而不是频繁地创建和销毁对象&#xff0c;从而减少内存分配和垃圾回收的开销。 设计思路 1. **初始化**&#xff1a; - initialize 方法初始化对象…

虚拟摄像头怎么用?安卓虚拟相机替换本地摄像头教程(内含3个虚拟摄像头)

虚拟摄像头是一个软件摄像机&#xff0c;电脑没有物理摄像头时可以借助虚拟摄像头进行视频通话。当我们电脑没有自带的摄像头时&#xff0c;必须要外接摄像头才可以进行网络会议、视频直播。普通的摄像头像素不高&#xff0c;直接将手机充当电脑摄像头效果更佳哦。 虚拟摄像头我…

自动驾驶算法——Vehicle Control(一)

“ 在过去的几年里&#xff0c;无人驾驶汽车已成为人工智能领域的主要主力之一。鉴于交通死亡人数众多、老年人和残疾人的行动能力有限以及交通拥堵和拥堵问题日益严重&#xff0c;自动驾驶汽车有望解决我们社会最重要的问题之一&#xff1a;移动的未来。然而&#xff0c;让汽车…

Vue项目的构建方式

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

数学建模(1)

论文&#xff1a;做流程图 论文查重不能高于30% 论文 分模块备战 摘要不能超过一页的四分之三 数学建模的六个步骤: 【写作】---学术语言 团队练题

科普文:TaobaoVM信息收集

网上关于TaobaoVM的信息很少&#xff0c;只有一个简介&#xff0c;就没有其他信息。毕竟这是别人企业自己的jvm&#xff0c;不可能公开。 Taobao VM 由AliJVM团队发布。阿里&#xff0c;国内使用Java最强大的公司&#xff0c;覆盖云计算、金融、物流、电商等众多领域&#xf…

zabbix“专家坐诊”第246期问答

问题一 Q&#xff1a;有哪位大哥知道这是啥情况&#xff0c;6.4主动检查接口显示未知&#xff1f; A&#xff1a;看看agent配置文件的主采集有没有填写正确IP。 Q&#xff1a;我刚刚客户端重新授权&#xff0c;发现可以预警了&#xff0c;但是还是灰色的&#xff0c;我尝试输…