**摘要:**文章总结了当前数据库的发展趋势、GaussDB NoSQL关键技术解密以及核心竞争力。
本文分享自华为云社区《华为云GaussDB NoSQL云原生多模数据库的超融合实践》,作者:华为云数据库GaussDB(for Redis)团队。
中国信通院最新研究透露出两个重要信息:
受大环境的影响,国内金融、电信、政企等行业为防止潜在的供应链风险,技术层面存在国产化需求,这使得我们的国产数据库产业进入蓬勃发展的初期。
但我国数据库行业发展还面临2个核心问题:
如何回答上述两个问题,可以从中国信通院最新的趋势总结里找到答案:“多模实现一库多用,简化开发运维成本”、“云原生降低硬件依赖,更方便的享受新兴技术红利”。
因此,为了更好的兼容历史数据应用(比如原先用Redis),并支持好未来的创新应用(新增Influx),可以在多模与云原生领域提前做好相关布局。
数据库的发展,按传统物理机部署到云化,大概经历了三代。
云原生数据库有两个重要的特点。首先是存算分离。
存算分离是一种分层的设计思想:
云原生数据库第二个重要的特点,是多模。
多模实际上是一种“归一”,也是一种“派生”。以大家熟悉的NoSQL为例,MongoDB是有Mongod/Mongos/Config等组件,而对应的Cassandra其实也有Coordinate Node/Data Node等组件。虽然这些组件名字不同,但背后做的事情是一样的,即:集群管理、副本管理、扩缩容管理、以及管控等功能。
其实,完全可以把这些功能抽象成统一的架构,即“多模归一”。在这套统一架构之上,我们再新增别的引擎就很容易了。可以快速复用当前的成熟架构,提供不同的协议接口即可,即“一生万物”。
接下来介绍这次分享的主角——云原生多模数据库GaussDB NoSQL。
当前GaussDB NoSQL已经支持MongoDB、Cassandra、Redis、InfluxDB等4款引擎;全球客户1000+,足迹遍布金融、政府、电信、互联网等行业;总数据量超过10PB,每日新增超过10TB。
GaussDB NoSQL采用LSM做存储引擎,正常情况下,前台的读写会受到后台的Compaction任务的影响,从而导致时延抖动。
因此,我们设计了单独的Compaction任务节点,通过共享的方式,访问用户的数据并进行Compact,再将Compact的结果应用到用户的可见版本中。这样做的话,就将用户前台的IO和后台IO分离,解决了时延抖动问题。
根据LSM引擎的写入流程,可以知道,一个数据要写入DB中,需要经历两次IO:
而这两次IO写的其实是相同数据,完全可以省掉一次。因此,我们借助共享存储的能力,独立出一个后台任务节点。当用户前台节点需要flush memtable的时候,由后台任务节点读取WAL,并转化成L0层的SST,再应用版本,并通知前台删除memtable。这样就极大节省了用户前台的IO开销。
GaussDB NoSQL在分片策略上,采取的是Hash + Range的结合方式,因此扩容或处理热点的时候会很灵活。
比如,当chunk数量足够多时,只需要移动chunk就可以扩容;而当某个chunk成为访问热点时,对它做分裂就可以解决局部热点问题。
作为数据库产品,容灾特性是很重要的,它可以避免极端情况给用户业务带来的灾难性损失。
GaussDB NoSQL有统一的容灾设计,即存储和计算可以实现3AZ部署,同时存储层数据实现3副本强一致复制。因此在任意时间,挂掉了任意机房的存储,都不会丢数据;而挂掉计算,也会被其他AZ的计算节点接管元数据,不会让访问完全中断。
接下来,以使用最广泛的NoSQL引擎Redis为例,具体介绍GaussDB NoSQL的优势。
社区版Redis,主从复制是异步的,容易造成数据堆积,也有宕机丢数据风险。
GaussDB(for Redis)(下文简称高斯Redis)则是采用强一致同步的,当用户的数据写入高斯Redis并收到返回OK,这意味着高斯Redis已经实现了强一致的复制,数据的安全性很高。当然,这里的复制过程采用了组提交、用户态文件系统、RDMA等技术来降低同步复制的时延。
高斯Redis的数据存储是共享的,即Shared Everything,因此可以容忍最多N-1个节点故障,而不影响数据的访问。
高斯Redis实现了分层弹性,将资源准确的划分成计算资源、存储资源,真正做到了按需扩容:
同时,扩容过程也足够流畅:
所以计算、存储的扩容都足够轻量级,可极速完成且对业务干扰极小。
存算分离的设计,让我们把数据复制交给了存储,计算层则完全解放。
每个节点都可以承担用户的读写请求,这跟开源Redis的主上读写来比较,实现了2倍扩展。
云原生是大势所趋,越来越多厂商和从业者都在提倡云原生,而华为云GaussDB NoSQL不仅仅基于云原生,还实现了多模架构,实现了多副本强一致、高可用、弹性伸缩、高性能等能力,以及具备资源复用、开发运维统一等好处。
华为云GaussDB NoSQL的多模特性,提供高并发、低时延的Redis,助力秒杀、推荐、热搜等场景;提供大容量、高频写的Cassandra,助力海量存储以及检索等场景;提供非结构化、灵活扩展的MongoDB,助力大数据分析、交易等场景;提供时序特征的InfluxDB,助力边缘计算、工业生产、实时监控等场景。
以上场景涵盖数字工业的方方面面,提供了完整的一体化解决方案,方便用户一站式使用。
本文整理自华为云数据库NoSQL架构师余汶龙的专题分享——云原生多模数据库GaussDB NoSQL架构设计,总结了当前数据库的发展趋势、GaussDB NoSQL关键技术解密以及核心竞争力。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/devcloud/article/details/121374177
内容来源于网络,如有侵权,请联系作者删除!