数据库分布式改造存在灵活性差、应用改造复杂等诸多问题,今天,两位专家继续探讨,如何通过存算分离架构和高效存储能力解决这些问题,以及存算分离后,对存储的选择。
为什么分布式数据库存算分离是时代的选择?
存算分离的架构优势使其成为解决数据库改造问题的钥匙,网络技术的发展促成了存算分离在云原生数据库中的广泛应用。
资深产品经理 庞毅
存算一体架构在故障恢复和搬迁时都要全量恢复数据,不仅降低了可靠性,也增加了运维工作量和成本,同时迁移扩容时间不可控,需要更多资源冗余来弥补。
首席架构师 张晓岩
是的,所以华为OceanData分布式数据库存算解决方案,在基于存算分离架构上,利用容器的技术把整个数据库的一层做成无状态,真正的数据通过持久化卷的方式存到存储,磁盘故障有存储保障,服务器故障的时候,通过容器K8S的自动编排的技术,快速恢复数据。几个小时的数据重构时间,缩短至分钟级,大大提升系统效率和可靠性。
资深产品经理 庞毅
我有个客户一个几百G数据库down掉之后,他花了3个小时,和5个相关的工程师去解决。因为很多的操作要手工去做,没有办法完全形成自动化。我知道云原生里有个“不可变基础设施”的概念,无状态解耦之后,数据都落在了解耦的存储上,计算部分就可以任意的去漂移,按照AWS说法就是计算是可以停机,可以故障去修复,也可以增加或者减少实例,去应对计算资源的需求和故障迁移,但是存储一定是要长期在线的状态而且不能容忍降级的发生。
我需要这样一个方案,因为交易型的数据库它的数据规模虽然相对来讲不是那么大,但是它要求性能和容量都具备一定的扩展性。
首席架构师 张晓岩
我们已经有这个方案了,华为OceanData方案采用了一种云原生的架构,通过容器和企业级存储的结合,可以做到整个计算侧是无状态的,数据库部署在容器里面,当数据库算力不够的时候,实现了算力的横向扩展;磁盘不够了,只需要把存储资源扩展。
同时企业级存储也采用了分布式架构,也是一种数控分离的架构,盘和处理单元是分开的,处理单元采用交全交叉互联的方式,与数据盘的资源联系在一起。当要扩性能的时候,只需要扩控制器,当容量不够的时候,只需要扩盘。
资深产品经理 庞毅
只有可靠性,扩展性的问题解决后,才能够放手去提升资源利用率。我们跟一些客户去做过相关的估算,如果可靠性的问题能解决的话,那么它的计算的利用率能够从10%提升到30%左右,成本将近节省一半,尤其是在机房和耗电能够降低大概60~70%。
那为什么之前大家没有去做存算分离这个事情?如果因为这个架构影响了性能的话,有点得不偿失。
首席架构师 张晓岩
我们跟很多客户聊过,他们以前也尝试过用这种存算分离的架构,整个性能出现断崖式的下跌,网络是很关键的一环。但是随着网络技术的发展,随着RoCE网络逐渐的成熟,可以通过无损以太网,NVMe协议,远端直接访问存储内存的数据,缩短整个lO路径。我们在客户场景实测发现,用NoF网络相比于FC网络,性能提升20%~30%,跟服务器的本地盘性能持平。给客户带来直观感觉就是性能没下降,但是可靠性提升了很多。
存算分离后,对存储的选择
近年来网络技术追赶上了介质和接口速率,因而出现了技术拐点,在这波数据库架构转型中, 25GE网络,RDMA,无损网络,无阻塞转发网络大量被应用,网络不再是瓶颈,那对于存储的选择呢?
资深产品经理 庞毅
当我把大量数据集中到存储上之后,如果存储的可靠性和存储性能达不到要求,将会成为整个系统的瓶颈。
首席架构师 张晓岩
是的,为什么我强调我们是端到端支持 NVMe over Fabric,因为网络虽然用了高速无损以太网RoCE网络,但只是解决了通道的问题,如果前端还是用传统SAS接口,无法解决问题。因此,存储也要端到端支持NVMe ,以及提升存储可靠性的亚健康主动检测,磨损均衡和反磨损均衡等。通过磨损均衡和反磨损均衡防止盘批量故障,同时换盘的动作都是主动告知,主动监测。
资深产品经理 庞毅
业界这些厂家在做存算分离的时候,也是要利用存储的一些能力来去解决问题,不管是亚健康还是磨损均衡,因为本地盘上没有亚健康检测,也没有磨损均衡能力,有些客户为保证性能,用NVMe的SSD卡,但是NVMe的SSD卡,很难在服务器上做RAID的,还有存储层的性能隔离也很难在服务器上实现。
首席架构师 张晓岩
专业的人干专业的事。整个IT架构中也一样,磁盘数据的管理放在存储上去做,无论从效率还是可靠性肯定是更好的。除了刚才讲的IO性能、磁盘的监测外,存储还可以做很多事情,企业级的存储支持快照备份,容灾的能力,我们之前一些客户用开源的工具做整个数据库的备份,恢复1TB的数据需要几个小时,效率很低。我们借助存储的快照技术,可以大大提升效率。
数据库是一个端到端的系统架构的方案,不光要考虑数据库软件自身,还要考虑整个集群管理,包括一些周边的备份容灾,以及整个基础设施的选择。所以华为构筑OceanData这样的一个解决方案出来,把整个数据库端到端的堆栈打通,去减少客户在他自己在拼装这些方案的时候遇到的这些问题。客户更多的是把心思放在他的业务上,而不是放在怎么去搭建出一套完整的数据库方案出来。