深入浅出一文读懂 “分布式数据库存算分离”, 分布式数据库改造的挑战

您所在的位置:网站首页 分布式数据仓库 深入浅出一文读懂 “分布式数据库存算分离”, 分布式数据库改造的挑战

深入浅出一文读懂 “分布式数据库存算分离”, 分布式数据库改造的挑战

#深入浅出一文读懂 “分布式数据库存算分离”, 分布式数据库改造的挑战| 来源: 网络整理| 查看: 265

深入浅出一文读懂 “分布式数据库存算分离”, 分布式数据库改造的挑战 2021-11-24 4374 1

庞毅

中国区数据存储CTO办公室资深产品经理

分布式数据库应用过程中,既解决了业务发展中的大量问题,也面临自身架构限制造成的可靠性,扩展性等问题,需要大量额外硬件投入和应用改造弥补。面对从可用到高效的挑战,改变“解题思路”采用存算分离架构成为业界主流。

一、存算分离架构能解决数据库分布式改造存在的灵活性差,应用改造复杂等问题

提到分布式数据库改造,大家第一反应是应用侧或者数据库侧去做改造,很少人会从基础设施去做。但是从现在的业界的技术发展趋势,让我们看到一个很大的变化,互联网巨头都不约而同采用共享存储的方式,通过存算分离架构,去提升数据库的整体能力,尽量减少分布式化分片造成的影响。

存算分离不是某种数据库特有的。一些开源数据,比如像MySQL、PostgreSQL,openGauss,从逻辑架构来讲,本身就是分离的架构。逻辑架构分开之后,物理架构包括计算、存储、网络也是可以拆开。存算分离方案发展到目前已经不是一个孵化中的方案而是一个已经相对成熟的方案。大家都去做存算分离这个事情,必然是解决了一些关键性的问题,不然大家不会费力气再折腾新的一个架构。

可以从应用侧改,把应用分库分表拆开,但是拆细之后业务应用的改造也变得非常复杂;也可以通过硬件堆叠去保证可靠性,但是运维和成本都会变得很高。还有个思路就是从基础设施去改造,把数据库的上面一层变成无状态,通过把数据下沉到下面专业的基础设施上面来做,提高整个数据的存取,可靠性、运维能力。

国内某运营商采用传统架构,把数据放到了服务器本地盘里面部署MySQL,然后通过数据库之间的复制来提供高可用,整个CPU的利用率不到10%,为了达到相同的集群规模,需要部署更多服务器,造成资源的浪费。这是因为计算跟存储不是固定配比。在不同的业务条件下,不同的业务场景下,需求不一样。采取了存算分离架构之后,计算存储包括网络资源的扩展,互相不依赖。

二、存算分离的架构优势使其成为解决数据库改造问题的钥匙,网络技术的发展促成了存算分离在云原生数据库中的广泛应用

存算一体架构在故障恢复和搬迁时都要全量恢复数据,不仅降低了可靠性,也增加了运维工作量和成本,同时迁移扩容时间不可控,需要更多资源冗余来弥补,所以华为OceanData分布式数据库存算解决方案,在基于存算分离架构上,利用容器的技术把整个数据库的一层做成无状态,真正的数据通过持久化卷的方式存到存储,磁盘故障有存储保障,服务器故障的时候,通过容器K8S的自动编排的技术,快速恢复数据。几个小时的数据重构时间,缩短至分钟级,大大提升系统效率和可靠性。

有个客户一个几百G数据库down掉之后,他花了3个小时,和5个相关的工程师去解决。因为很多的操作要手工去做,没有办法完全形成自动化。云原生里有个“不可变基础设施”的概念,无状态解耦之后,数据都落在了解耦的存储上,计算部分就可以任意的去漂移,按照AWS说法就是计算是可以停机,可以故障去修复,也可以增加或者减少实例,去应对计算资源的需求和故障迁移,但是存储一定是要长期在线的状态而且不能容忍降级的发生。因为交易型的数据库它的数据规模虽然相对来讲不是那么大,但是它要求性能和容量都具备一定的扩展性。

华为OceanData方案采用了一种云原生的架构,通过容器和企业级存储的结合,可以做到整个计算侧是无状态的,数据库部署在容器里面,当数据库算力不够的时候,实现了算力的横向扩展;磁盘不够了,只需要把存储资源扩展。同时企业级存储也采用了分布式架构,也是一种数控分离的架构,盘和处理单元是分开的,处理单元采用交全交叉互联的方式,与数据盘的资源联系在一起。当要扩性能的时候,只需要扩控制器,当容量不够的时候,只需要扩盘。

只有可靠性,扩展性的问题解决后,才能够放手去提升资源利用率。 如果可靠性的问题能解决的话,那么它的计算的利用率能够从10%提升到30%左右,成本将近节省一半,尤其是在机房和耗电能够降低大概60~70%。

很多客户聊过以前也尝试过用这种存算分离的架构,整个性能出现断崖式的下跌,网络是很关键的一环。但是随着网络技术的发展,随着RoCE(RDMA over Converged Ethernet)网络逐渐的成熟,可以通过无损以太网,NVMe协议,远端直接访问存储内存的数据,缩短整个lO路径。在客户场景实测发现,用NoF网络相比于FC网络,性能提升20%~30%,跟服务器的本地盘性能持平。给客户带来直观感觉就是性能没下降,但是可靠性提升了很多。

三、网络技术的成熟,以及高品质存储的出现,走向存算分离是必然的结果

早期各个云厂商并没有使用存算分离的架构,这其中有两个问题需要解决,一个是没有能满足性能和稳定性的存储网络,另一个是没有好的存储。

近年来网络技术追赶上了介质和接口速率,因而出现了技术拐点,在这波数据库架构转型中,25GE网络,RDMA,无损网络,无阻塞转发网络大量被应用,网络不再是瓶颈。

当把大量数据集中到存储上之后,如果存储的可靠性和存储性能达不到要求,将会成为整个系统的瓶颈。网络虽然用了高速无损以太网RoCE网络,但只是解决了通道的问题,如果前端还是用传统SAS接口,无法解决问题。因此,存储也要端到端支持NVMe,以及提升存储可靠性的亚健康主动检测,磨损均衡和反磨损均衡等。通过磨损均衡和反磨损均衡防止盘批量故障,同时换盘的动作都是主动告知,主动监测。

业界这些厂家在做存算分离的时候,也是要利用存储的一些能力来去解决问题,不管是亚健康还是磨损均衡,因为本地盘上没有亚健康检测,也没有磨损均衡能力,有些客户为保证性能,用NVMe的SSD卡,但是NVMe的SSD卡,很难在服务器上做RAID的,还有存储层的性能隔离也很难在服务器上实现。

专业的人干专业的事。整个IT架构中也一样,磁盘数据的管理放在存储上去做,无论从效率还是可靠性肯定是更好的。除了刚才讲的IO性能、磁盘的监测外,存储还可以做很多事情,企业级的存储支持快照备份,容灾的能力,之前一些客户用开源的工具做整个数据库的备份,恢复1TB的数据需要几个小时,效率很低。借助存储的快照技术,可以大大提升效率。

数据库是一个端到端的系统架构的方案,不光要考虑数据库软件自身,还要考虑整个集群管理,包括一些周边的备份容灾,以及整个基础设施的选择。所以为什么华为要构筑OceanData这样的一个解决方案出来,这个解决方案把整个数据库端到端的堆栈打通,去减少客户在他自己在拼装这些方案的时候遇到的这些问题。客户更多的是把心思放在他的业务上,而不是放在怎么去搭建出一套完整的数据库方案出来。

免责声明:文章内容和观点仅代表作者本人观点,供读者思想碰撞与技术交流参考,不作为华为公司产品与技术的官方依据。如需了解华为公司产品与技术详情,请访问产品与技术介绍页面或咨询华为公司人员。

# 数据存储


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3