首页 > 其他分享 >Polardb 核心存储 polarfs 是怎么进行数据存储的(1)--译

Polardb 核心存储 polarfs 是怎么进行数据存储的(1)--译

时间:2023-06-22 13:02:59浏览次数:30  
标签:存储 -- PolarFS 节点 RDMA SSD polarfs 延迟


Polardb  核心存储 polarfs 是怎么进行数据存储的(1)--译_大数据

POLARDB 数据库中有一个核心是他重新设计的存储系统,polarfs,polarfs 是怎么设计的架构是怎样的,下面根据官方的一篇详细的英文文档作为翻译的目标 https://www.vldb.org/pvldb/vol11/p1849-cao.pdf

PolarFS 是专门为polardb 设计的分布式文件系统,他具有低延迟,高可用的特点并且这款存储系统运行在阿里云的基础上。PolarFS  本身利用了轻量级的网络站和IO栈并充分的利用了 RMDA, NVME 和 SPDK等技术。

在基于这样的技术情况下在我们的测试下,POLARRFS 的延迟已经减少到与本地SSD 磁盘系统延迟相当的状态。基于保持复制的一致性的问题,我们开发了parallelraft 一致性协议,他基于RAFT协议但打破了raft协议的限制中的串行性,在乱序的基础上,还能保证数据的一致性。Parallelraft继承了raft协议的简单,同时提供了更高的IO能力,最终成就了polarfs 为polardb提供最优的存储支持。

 1  介绍

最近一段时间存储和计算分离已经成为云计算的工业的主流,这样的设计让架构更加灵活并且可以充分的利用共享存储

1 计算和存储节点能够使用不同的类型的服务器硬件帮助,可以单独进行定制,如计算节点不在考虑内存和磁盘的容量,这让严重依赖应用环境的不可预期的部分脱离了计算节点。

2 在集群中的存储节点的磁盘来自一个存储池,他可以介绍磁盘碎片的缺陷平衡磁盘的利用率避免磁盘空间的浪费。(此部分基于商业风险不进行翻译,跳过到安全部分),为了保证数据的可靠性,数据库必须自己管理数据复制,存储使用通用文件系统,如ext4或XFS磁盘文件格式,在使用RDMA或PCIe SSD等低I/O延迟硬件时,内核空间和用户空间之间的消息传递成本可能会降低I/O吞吐量,问题更大的是存储不能支持所有类型的数据库集群架构,但这是高级云服务的必需品。

所以在这篇文字中,我们要描述和设计我们要讨论的对象polarfs,一个分布式文件系统,如我们之前所提到的,低延迟高吞吐量和高可用中采用的数据存储机制。

首先polardb使用目前最高级的硬件系统,如RDMA ,NVMe,通过使用轻量级的网络栈和IO栈,来规避数据在内核处理中产生的内核锁,同时PolarFS提供了一个类似posix的文件系统API,他被编译到数据库的进程中,替换操作系统与数据库之间的文件系统接口,数据库会直接调用。在设计中POLARFS也避免了数据调用中的上下文切换,降低了不必要的内存拷贝,利用大量的DMA在主存和RDMA NIC/NVMe磁盘之间传输数据,通过这些特性PolarFS端到端的传输延迟大幅度的降低,最终达到接近本地SSD 的性能。

Polardb  核心存储 polarfs 是怎么进行数据存储的(1)--译_python_02

部署在云生产环境的分布式文件系统通常有数千台主机,在这样的规模下,由硬件或软件错误引起的故障是常见的,因此需要一个通用的协议来保证所有提交的修改不能被丢失,副本和主数据一定要一致。

协议PAXOS可以满足以上的需求,raft协议是PAXOS的分支,很多分布式系统都是依照RAFT来进行开发的,而将此应用到POLARFS上,我们发现当使用延迟非常低的硬件,RAFT就严重的阻碍了POLARFS的I/O可伸缩性,因此我们开发了ParallelRaft协议,这是一种基于Raft增强共识的协议,允许乱序写入但保证最终的顺序性。

在POLARFS 上我们构建了一个以ALISQL 为基础的关系型数据库POLARDB,通过共享存储架构和多个只读实例,从上图看,POLARDB节点主要分为两类,写节点和只读节点,主和从节点共享一个数据存储结构。

PolarFS 支持以下的功能支持POLARDB 以下的功能

1   PolarFS  能够同步修改数据元信息,从主节点到从节点(包含所有的从节点)同时PolarFS 保证了文件元数据的修改是并发的同时是序列化,所有的节点的数据均死一致的,在节点切换或网络分区的情况下,产生的多个主节点中只能有一个节点写入数据成功。

(介绍文章每个章节的要点,略过)

2  背景介绍

这个章节简单的描述了 NAMe, SSD , RDMA 和他们相关的程序模块

NAVe SSD , SSD 是从传统的协议中演进而来的如SAS , SATA 到 NVMe, NVMe SSD 具有高带宽低延迟的交互性能。NVMe SSD 最大可以达到500K在100纳秒的延迟下进行数据传输,最近型的 3D Xpoint ssd 已经达到了10纳秒以下,对比NANE SSD提供超高的 Qos。

随着SSD 可以越来越快,内核的IO栈成本了新的瓶颈,正如之前研究的要传输4KB的数据就需要传输20000条指令。最近INTER 提出的提高存储性能的SPDK ,这组工具和连接库可以作为NVMe工作的基础,通过将所有的驱动程序放置在用户控件中并使用轮训的模式,而不是依赖中断来保证超高的性能,这避免了内核的上下文切换导致的中断处理的开销。

RDMA。RDMA技术提供了数据中心内部服务器之间的低时延网络通信机制。例如,在连接到同一交换机的两个节点之间传输一个4KB数据包需要大约7µs,比传统的TCP/IP网络栈要快得多。之前的大量研究[9,14,15,17,24,25,30]表明RDMA可以提高系统性能。应用程序通过Verbs API访问队列对(QP)与RDMA NIC进行交互。QP由发送队列和接收队列组成,并且每个QP与另一个完成队列(CQ)相关联。

Send/Recv动词通常被称为双边操作,因为每个Send操作都需要一个由远程进程调用的匹配Recv操作,而Read/Write动词被称为单边操作,因为远程内存由NIC操作,而不涉及任何远程CPU。PolarFS使用Send/Recv和Read/Write动词的混合。小的有效负载直接通过Send/Recv动词传输。对于大数据块或批量数据,节点使用Send/Recv谓词协商远程节点上的目标内存地址,然后通过Read/Write谓词完成实际的数据传输。通过轮询用户空间中的CQ而不是依赖中断,PolarFS消除了上下文切换。

Polardb  核心存储 polarfs 是怎么进行数据存储的(1)--译_数据库_03

待...  下一部分将开始介绍POLARFS 的构造

Polardb  核心存储 polarfs 是怎么进行数据存储的(1)--译_分布式_04

标签:存储,--,PolarFS,节点,RDMA,SSD,polarfs,延迟
From: https://blog.51cto.com/u_14150796/6534688

相关文章

  • POSTGRESQL 提高POSTGRESQL性能的一些习惯 (1)
    PostgreSQL是一个很有意思的数据库,在使用中有一些习惯可以在同等的硬件下,更加有效的使用硬件提供的资源,让管理和使用POSTGRESQL获得更多的性能。下面就说说一些使用POSTGRESQL的习惯。1 是否需要降低文件的数量POSTGRESQL的文件很多,这里指的文件的数量,主要指两方面的的文件,数......
  • POSTGRESQL VS MYSQL 到底那个数据库 RDS 技术含量高 ?
    以下内容纯属个人看法云数据库的RDS产品,在传统开源的系列里面大致可以选择的是POSTGRESQL和MYSQL两种,诚然在RDS的里面大部分产品最终的选择还是MYSQL,今天不想讨论产品的量,而是想讨论以下产品的难度,RDS产品在POSTGRESQL和MYSQL两种产品的难度问题。先说结果,POSTGRESQL......
  • Postgresql 如何降低 wal 占用磁盘空间,降低磁盘存储成本
    POSTGRESQLWAL的存储一直是一个值得讨论的问题,到底一个POSTGRESQL在极端的情况下,可以用多少的空间来存储WAL日志。这里不是要讨论逻辑复制槽,也不是讨论ARCHIVE,这里要讨论是一种极端的方法,尝试将POSTGRESQLWAL占用的磁盘空间最小化。这里主要针对的对象是,单机的POSTGRESQL,不......
  • MYSQL 8 UNDO 表空间 你了解多少
    UNDOLOG的主要目的是完成事务回滚和MVCC多版本控制中的读取过去事务的问题。UNLOG这里有三个层次的问题 1  undolog存在于undo log 的日志段中2 undolog的日志段存在于undolog的回滚段中3  unloglog的回滚段存在于undo 表空间和全局临时表空间中这里提到为......
  • POSTGRESQL 存储过程--如何写出新版本PG的存储过程的小案例
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS,SQLSERVER等,期待你的加入,最近在开始研究POSTGRESQL的存储过程,主要的原因有以下几个1因为要开发适合目前公司中......
  • MYSQL performance_schema 不显示信息 和调整 performance_schema 的配置
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS等,最近在某云使用了MYSQLRDS产品,说实话不怎么满意,和他家的其他产品比较我到时更原因使用PG的产品和云原生产品......
  • MYSQL POLARDB 学习系列之 拆解 POLARDB 7 (终结) 失败恢复与可靠性
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS,SQLSERVER等,期待你的加入,学习POLARDB已经有3-4个月的时间了,当然大部分还是在理论方面,实际上POLARDB在实际的操......
  • POSTGRESQL 提高POSTGRESQL性能的一些习惯 (3)
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS,SQLSERVER等,期待你的加入这个系列写到第三期了,实际上POSTGRESQL的优化和一个核心之一,这就是VACUUM,一个弄不清vac......
  • 数据库上云就可以 解雇 DBA ,来说说数据库上云那些 “有意思” 的事情
    随着问问题的同学越来越多,公众号内部私信回答问题已经很困难了,所以建立了一个群,关于各种数据库的问题都可以,目前主要是POSTGRESQL,MYSQL,MONGODB,POLARDB,REDIS等,期待你的加入,另外针对云的问题,我们可以多多交流互相学习————————————————————————正文......
  • Linux Nacos2.2.0版本集群搭建,常见报错问题解决
    准备:服务器,nacos,mysql,nginx,java,mavenNacos官网:https://nacos.io下载地址github:https://github.com/alibaba/nacos相关版本问题,见nacos官网手册查看集群配置图:官方的: 本次搭建集群配置图:开始搭建:修改nacos的配置文件“application.properties,cluster.conf.ex......