谈谈对云数据库分布式存储的理解

背景

本篇基于阿里云数据库PolarDB,以及作为一个分布式存储服务开发者,聊聊对云数据库分布式存储的看法。
就数据库的用途来说,数据库提供计算和存储能力,帮助用户来完成数据的生产,存储,处理和消费的过程,云数据库系统也需要为用户提供相应的功能支撑。云数据库服务减少了用户IT设施的成本支出,并提高了数据库的可用性,性能,弹性以及安全性。
传统数据库系统运行在硬件系统上,冯·诺伊曼体系的基本原理是——存储程序和程序控制,即代码数据的保存和存取指令的顺序执行,在云数据库系统上的体现是计算+存储能力,计算能力包括分布式事务的处理,并行计算及资源调度,存储能力关注分布式存储的数据一致性,安全性和可用性及数据存储模型。
在这里插入图片描述

云数据库在架构上,将上面提到的计算和存储能力分离,解耦,用分布式云存储代替本地存储,并将每层服务资源池化,可根据实际业务需求独立的伸缩扩展。

正文

本地存储

单机的MySQL架构如下所示:
在这里插入图片描述
分为服务,引擎和文件日志三部分,在InnoDB引擎下,数据和索引存储在磁盘的idb文件,同时还有三种日志用于宕机恢复的redolog,用户事务回滚的undolog,以及用于备份的binlog。由于单机系统的性能和资源受到限制,通常采用分库或分表的方式来处理日益剧增的数据,以及搭建Mysql集群才提高数据库的可用性。

分布式存储

PolarDB采用计算和存储分离架构,计算节点和存储节点通过RDMA协议进行数据传输。数据库实例拥有主节点(读写)和只读节点,共享存储资源。
在这里插入图片描述

资源分配

PolarDB实例创建时,向存储层系统PolarStore申请存储块资源,并将申请到的存储资源与计算节点进行绑定,用户连接数据库实例通过计算节点来实现对存储资源的读写。一个存储集群包含多台存储节点,分配资源尽量分散,以提高数据库的读写性能。

负载均衡

一个存储节点被划分为多块虚拟磁盘,每块磁盘上所包含的数据量不同,为了提高某些业务场景下(比如用户促销活动)的读写性能,需要存储层根据特定的算法来实现数据迁移,来保证存储资源的负载均衡。

可用性

数据库实例的一份数据包含多个副本,如果leader副本不可用,及时选取出新的leader来保证存储资源的高可用。

数据一致性

数据的多个副本之间通过ParallelRaft协议,允许一定程度的乱序确认和乱序提交来保证数据一致性。
在这里插入图片描述

可扩展性

存储层服务本身提供了存储集群资源的扩容和缩容功能,以及PolarDB实例存储资源的扩容和缩容功能。

结语

分布式存储相对于本地存储,将数据库的存储资源与计算资源分离开来,通过分布式存储服务的一系列技术,能够独立,实时的伸缩资源,并匹配实时的工作负载,提高了存储资源调度的灵活性,使得资源利用率最大化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值