分布式数据库面临着数据库可靠性,性能和成本的挑战日前,天翼云amp华为联合创新中心正式开业,双方将共同探索基于华为闪存的数据库云原创发展方向围绕重写存储引擎和高性能高可用存储不断创新,构建更易维护,更可用,更经济的分布式云原生数据库
1分布式数据库面临可靠性,性能和成本的挑战。
自1970年IBM数学家Edgar F. Codd提出关系模型以来,关系数据库已经有50多年的历史,期间关系模型变化不大,而数据库架构则经历了以ORACLE mdash为代表的商用数据库,gt,以互联网厂商去IOE+开源数据库mdash为代表的分布式架构,gt,云原生数据库满足业务需求的三大变革。
图1数据库架构的演变
在最近两次架构开发中,MySQL开源数据库扮演了重要的角色它具有灵巧,高效,易用的优点,因此应用广泛,生态成熟大多数行业都选择了MySQL开源数据库和分布式架构来替代商用数据库
数据可靠性:基于开源数据库的分布式数据库通过日志复制和回放生成多个副本,实现数据持久化和高可用性。由于日志处理机制的限制,在业务压力大或网络抖动时容易出现较大的延迟,导致数据丢失或集群失败的风险,
连续性问题:传统的故障处理方式是让系统运行在降级状态,而基于本地磁盘的MySQL部署方式需要从降级状态到正常状态的完全数据恢复,导致系统降级状态的时间非常长,大大增加了二次故障的风险,
性能影响:分布式事务和分布式查询在强酸场景下有明显的性能下降,很大程度上抵消了分布式转换的好处,
可扩展性差:由于数据库只能读写该服务器中磁盘的数据,为了性能扩展,通过添加实例来复制数据往往需要几个小时甚至一天以上的时间。同时,即使只需要计算资源,也必须相应增加一个本地存储,
2分布式数据库云原生转型的思路与实践
以上问题大多涉及数据库架构体系,仅靠数据库本身的优化很难从根本上解决同时,更换数据库要花很多钱,需要很长时间因此,目前业界的主流做法是通过对数据库进行云原生改造来解决问题
#61548,采用容器化,不可变基础设施等云原生技术架构,解决故障快速切换,资源弹性扩展等问题,
#61548,通过存储和计算的分离,将能力下移,特别是可靠性能力和数据密集型处理能力移至存储,可以利用存储能力快速提高数据库系统的可靠性和性能,同时降低数据库开发的难度但是,这种策略也对存储容量提出了更高的要求
#61548,通过存储和计算分离实现解耦的资源池化,提高资源利用效率和分发速度,
实现云原生数据库架构的第一步是保持MySQL等开源数据库的主从部署和本地数据访问架构,只将计算能力转移到容器,数据转移到外部存储第二步,通过数据库存储引擎的改造,完全实现多实例共享存储的协同优化方案
2.1容器化+存储—计算分离转型,以平滑演进模式向云原生迈出第一步。
TeleDB首次采用容器化+存储与计算分离的方案,实现向云原生数据库的平滑演进:
图2平滑演进云的原生数据库架构和原始架构的比较
2.1.1储存和计算的集装箱化和分离,Rdquo解决技术可靠性和资源利用问题。
根可以带来很多价值,对技术架构的确定起到最关键的作用TeleDB的平滑演进方案是抓住容器化和存储—计算分离架构两个根本技术,使TeleDB初步具备云原生数据库的能力,提高了可靠性和可扩展性,降低了成本
集装箱化实践:
#61548,计算资源池化:在容器化之前,为了提高资源利用率,需要在物理机上部署多个数据库实例或者使用虚拟机多实例模式难以实现实例间的资源隔离和定量分配,虚拟机对性能的影响限制了使用场景采用容器后,CPU和内存可以定量分配,实例隔离在容器中,性能损失很小,非常适合数据库业务
#61548,实现运维自动化和知识编码沉淀:容器声明式API可以将DBA的运维经验转化为自动故障和运维处理能力TeleDB开发了一套运营商资源控制器,实现了数据库集群的分发和管理,降低了运维成本,提高了可靠性
#61548,为存储—计算分离架构提供支持:Kubernetes容器平台提供CSI插件存储管理机制,实现存储的动态分配和容量扩展功能,这正是原有物理机部署所缺乏的。
计算与存储分离架构的实践:
#61548,存储资源池化:存储与计算的分离将存储与计算解耦,使资源不会因为单台服务器上缺少计算或存储中缺少任何资源而被分配,从而提高计算和存储的效率。
#61548,灵活的伸缩:如果在容量扩展期间发现服务器资源不足,那么最初需要通过完全复制数据将实例重新定位到其他服务器现在如果计算资源不足,可以通过容器漂移快速进行重定位,重定位时间可以从几天缩短到几分钟如果存储资源不足,可以直接动态扩展容量
#61548,集装箱漂移和快速补偿:
部署本地磁盘时,在服务器出现故障后,需要重建实例并完整复制数据这个过程需要时间,涉及运维人员的精力,甚至在业务高峰期也无法长时间修复或扩容,从而影响业务
存储分离后,容器不仅可以漂移到其他服务器实现故障快速恢复,还可以作为从节点重新加入集群后的增量同步数据,使数据恢复速度从每小时/每天级别缩短到分钟级别。
2.1.2集装箱化+存储与计算分离改造,实现资源利用率提升40%。
经过初期的云原生改造,在相同硬件条件下,通过灵活的调度和细粒度的资源控制,数据库部署密度提升了2倍以上,资源利用率提升了40%以上提高了TeleDB的可靠性,降低了成本,大大提高了应对互联网业务和疫情突发资源需求的能力
2.2数据库存储引擎+高性能高可用存储协作,迈出云原生的第二步。
2.2.1集装箱化+存储与计算分离难以解决的问题。
容器化+存储—计算分离方案以最简单的方式释放云原生架构的价值。可是,与其他云原生应用相比,该方案并非完全无状态,分离的存储和网络能力也限制了云原生架构的价值:
#61548,未能彻底解决数据可靠性问题:由于保留了用日志同步多个副本的方法,数据丢失或失效的风险没有得到解决,
#61548,扩展能力仍然不足:扩展read实例时,仍然需要复制全部数据量,因此无法快速扩展,
#61548,多重冗余:由于保存了数据库的多个副本,外部存储上的多个副本并没有起到提高可靠性的作用,反而抵消了成本优化效果,造成性能下降,
#61548,性能受限:保留数据库的网络,存储容量和高可用性方案影响数据库的整体性能,导致该方案的使用场景受限。
2.2.2多写存储引擎技术创新,打造共享存储多写云原生数据库。
多写存储引擎成为root技术的新方向。
要解决以上问题,还是需要技术创新除了容器化,还采用数据库多写存储引擎,高性能存储网络协议和专门开发的高性能高可用存储,实现存储与计算的分离同时利用存储在数据处理方面的优势,将大量原本需要数据库实现的功能转移到存储上这种通过多写存储引擎协同优化数据库和存储的架构已经成为业界云原生数据库的主流
使用多写存储引擎可以完全实现数据库无状态,并且可以获得更短的恢复时间,更好的性能和更好的可扩展性显然,选择多写多读方案作为数据库/存储协同优化的根技术是更好的选择
华为数据存储—天翼云,优势互补,共同创新
高性能存储网络,高性能,高可用的企业级存储和多写存储引擎横跨多个技术领域,其技术难点制约了云原生数据库的普及和发展为推动分布式数据库云原生架构的实现,华为与天翼云合作,以华为多写存储引擎和全闪存存储OceanStor Dorado为数据基础,依托天翼云TeleDB数据库,构建分布式云原生数据库
#61548,高可用性和易兼容性:灵活的容器化高可用性策略可以大大提高数据库服务的可用性和故障恢复能力。结合TeleDB优化的数据库引擎,与开源的MySQL具有原生兼容性,同时具备极致的扩展和收缩能力,方便业务平滑迁移,
#61548,多写支持:采用华为多写存储引擎,实现每个实例相同的数据库读写能力,无数据延迟与一写多读模式相比,故障恢复速度更快,多实例性能扩展无需修改应用,实现了技术的跨越式发展
#61548,TeleDB容器化+共享存储多写实现了数据库无状态:多个实例共享一个数据,避免了多重冗余,消除了日志复制中数据不一致的风险。无状态完全解绑了计算和存储的绑定,不需要复制数据和增加存储成本来扩展计算实例,
#61548,高可靠性:通过使用华为OceanStor Dorado全闪存存储的分布式AA负载均衡架构,RAID2.0持久化技术,亚健康管理,SSD磨损均衡/抗磨损均衡等能力,不仅满足了数据库数据持久化能力下沉到存储可靠性的严格要求,还补充了数据库快速数据重建,亚健康故障处理,SSD介质寿命延长,故障主动处理等能力,大幅提升了数据库的综合可靠性能力,
#61548,
高性能:华为OceanStor Dorado全闪存存储+多写存储引擎IO路径优化,相比原生MySQL数据库整体性能提升100%左右,
#61548,高性能无损网络:支持基于以太网的RDMA组网,相比IB组网可以实现高性能,低成本,通用的存储网络,
充分发挥数据库的多写能力和关键能力,下沉到存储,这是下一步的探索方向。
云原生数据库通过保留数据库SQL引擎,兼容原有数据库生态但是由于架构的变化,存储基础的能力只能通过数据库集成来实现TeleDB在基于MySQL的数据库开发和应用方面有着丰富的经验,对于实现存储和计算架构的分离,发挥华为闪存高可用,高性能,综合成本的优势有着至关重要的作用未来,双方将继续合作,探索如何充分发挥数据库的多写能力,通过TeleDB数据库系统化方案实现关键能力下沉到存储,进一步提升数据库的性能和可靠性,降低成本,推动云原生数据库开放架构的成熟
苏飞天翼云科技有限公司数据库技术专家
声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多企业信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。投资有风险,需谨慎。