一、引言
本届中国数据库技术大会(DTCC2021),不论是私有云数据库厂商,还是传统数据库厂商,都在关注云原生的技术实际,分享了很多存算拆散、DBaaS、Kubernetes等与数据库深度联合的案例。在NoSQL专题会场,热度最高的一场演讲来自华为云数据库团队,由广入深,干货满满。本文整顿自华为云数据库NoSQL架构师余汶龙的专题分享——云原生多模数据库GaussDB NoSQL架构设计,总结了以后数据库的发展趋势、GaussDB NoSQL关键技术解密以及外围竞争力。
二、数据库发展趋势
1.行业市场
中国信通院最新钻研走漏出两个重要信息:
- 将来几年,中国数据库市场将放弃23.4%的年复合增长率,中国数据库市场在寰球的份额,将从2020年的5.2%晋升到12.3%;
- 中国的国产数据库产品尽管以关系型为主,非关系型为辅,但从2000年当前,以图、时序等为代表的非关系型产品发展势头越来越好,截止2020年底,国产NoSQL数据库厂商曾经占到了40%。
2.行业趋势
受大环境的影响,国内金融、电信、政企等行业为避免潜在的供应链危险,技术层面存在国产化需要,这使得咱们的国产数据库产业进入蓬勃发展的初期。
但我国数据库行业倒退还面临2个外围问题:
- 如何放大“高要求的存量数据利用”与“仍处于倒退初期阶段的供应能力”之间的差距;
- 如何匹配“创新型数据利用”与“数据库技术演进”的正当映射关系。
如何答复上述两个问题,能够从中国信通院最新的趋势总结里找到答案:“多模实现一库多用,简化开发运维老本”、“云原生升高硬件依赖,更不便的享受新兴技术红利”。
因而,为了更好的兼容历史数据利用(比方原先用Redis),并反对好将来的翻新利用(新增Influx),能够在多模与云原生畛域提前做好相干布局。
3.云原生数据库演进方向
数据库的倒退,按传统物理机部署到云化,大略经验了三代。
- 第一代是纯物理机、裸硬盘部署,从业人员必须关怀硬件的各种细节,包含机型、零碎、硬盘、组网等等;
- 第二代是云化的初级阶段,从业人员把数据库部署从物理机,迁徙到虚拟机VM,把物理硬盘,换成了云盘EVS。但这一代有个显著的毛病,EVS是个3正本牢靠的服务,再加上数据库本身的高可用,那么存储老本就放大了3倍;并且备机其实是资源节约的,没有提供服务;
- 第三代是云化的高级阶段,这个阶段将数据库的资源,彻底分成存储和计算两层,其中计算资源部署在更轻量级的容器之上,而存储资源部署在分布式存储池之上。很显然,这是与云原生联合更彻底的形式,充沛享受了架构的弹性、便捷,而且轻松实现了多点读写的全负荷分担能力。
4.存算拆散,分而治之
云原生数据库有两个重要的特点。首先是存算拆散。
存算拆散是一种分层的设计思维,从逻辑到性能进行明确的划分:
- 计算层更聚焦服务、产品、协定解决等事件;
- 存储层更聚焦数据自身的复制、平安、扩缩容等等。
5.多模归一,毕生万物
云原生数据库第二个重要的特点,是多模。
多模实际上是一种“归一”,也是一种“派生”。以大家相熟的NoSQL为例,MongoDB是有Mongod/Mongos/Config等组件,而对应的Cassandra其实也有Coordinate Node/Data Node等组件。尽管这些组件名字不同,但背地做的事件是一样的,即:集群治理、正本治理、扩缩容治理、以及管控等性能。
其实,齐全能够把这些性能形象成对立的架构,即“多模归一”。在这套对立架构之上,咱们再新增别的引擎就很容易了。能够疾速复用以后的成熟架构,提供不同的协定接口即可,即“毕生万物”。
6.GaussDB NoSQL详情
接下来介绍这次分享的配角——云原生多模数据库GaussDB NoSQL。
以后GaussDB NoSQL曾经反对MongoDB、Cassandra、Redis、InfluxDB等4款引擎;寰球客户1000+,脚印遍布金融、政府、电信、互联网等行业;总数据量超过10PB,每日新增超过10TB。
三、GaussDB NoSQL关键技术
1.Compaction卸载
GaussDB NoSQL采纳LSM做存储引擎,失常状况下,前台的读写会受到后盾的Compaction工作的影响,从而导致时延抖动。
因而,咱们设计了独自的Compaction工作节点,通过共享的形式,拜访用户的数据并进行Compact,再将Compact的后果利用到用户的可见版本中。这样做的话,就将用户前台的IO和后盾IO拆散,解决了时延抖动问题。
2.Flush卸载
依据LSM引擎的写入流程,能够晓得,一个数据要写入DB中,须要经验两次IO:
- 写WAL
- flush memtable
而这两次IO写的其实是雷同数据,齐全能够省掉一次。因而,咱们借助共享存储的能力,独立出一个后台任务节点。当用户前台节点须要flush memtable的时候,由后台任务节点读取WAL,并转化成L0层的SST,再利用版本,并告诉前台删除memtable。这样就极大节俭了用户前台的IO开销。
3.决裂
GaussDB NoSQL在分片策略上,采取的是Hash + Range的联合形式,因而扩容或解决热点的时候会很灵便。
比方,当chunk数量足够多时,只须要挪动chunk就能够扩容;而当某个chunk成为拜访热点时,对它做决裂就能够解决部分热点问题。
4.3AZ容灾
作为数据库产品,容灾个性是很重要的,它能够防止极其状况给用户业务带来的灾难性损失。
GaussDB NoSQL有对立的容灾设计,即存储和计算能够实现3AZ部署,同时存储层数据实现3正本强统一复制。因而在任意工夫,挂掉了任意机房的存储,都不会丢数据;而挂掉计算,也会被其余AZ的计算节点接管元数据,不会让拜访齐全中断。
四、以Redis为例看GaussDB竞争力
接下来,以应用最宽泛的NoSQL引擎Redis为例,具体介绍GaussDB NoSQL的劣势。
1.强统一
社区版Redis,主从复制是异步的,容易造成数据沉积,也有宕机丢数据危险。
GaussDB(for Redis)(下文简称高斯Redis)则是采纳强统一同步的,当用户的数据写入高斯Redis并收到返回OK,这意味着高斯Redis曾经实现了强统一的复制,数据的安全性很高。当然,这里的复制过程采纳了组提交、用户态文件系统、RDMA等技术来升高同步复制的时延。
2.高可用
高斯Redis的数据存储是共享的,即Shared Everything,因而能够容忍最多N-1个节点故障,而不影响数据的拜访。
3.弹性伸缩
高斯Redis实现了分层弹性,将资源精确的划分成计算资源、存储资源,真正做到了按需扩容:
- 当用户的计算有余时,只须要扩大计算节点;
- 当存储空间不够时,只须要扩大存储空间。
同时,扩容过程也足够晦涩:
- 计算扩容的过程,不须要拷贝数据,只须要批改路由映射即可,对业务侧的影响很小;
- 存储扩容更简略,只须要批改配额即可,对业务侧零影响。
所以计算、存储的扩容都足够轻量级,可极速实现且对业务烦扰极小。
4.全负荷分担
存算拆散的设计,让咱们把数据复制交给了存储,计算层则齐全解放。
每个节点都能够承当用户的读写申请,这跟开源Redis的主上读写来比拟,实现了2倍扩大。
五、总结
- 云原生是技术趋势
云原生是大势所趋,越来越多厂商和从业者都在提倡云原生。
华为云GaussDB NoSQL不仅仅基于云原生,还实现了多模架构,实现了多正本强统一、高可用、弹性伸缩、高性能等能力,以及具备资源复用、开发运维对立等益处。
- 华为云GaussDB NoSQL提供超交融数字化解决方案
华为云GaussDB NoSQL提供了成熟的多模个性:
- 提供高并发、低时延的Redis,助力秒杀、举荐、热搜等场景;
- 提供大容量、高频写的Cassandra,助力海量存储以及检索等场景;
- 提供非结构化、灵便扩大的MongoDB,助力大数据分析、交易等场景;
- 提供时序特色的InfluxDB,助力边缘计算、工业生产、实时监控等场景。
以上场景涵盖数字工业的方方面面,提供了残缺的一体化解决方案,不便用户一站式应用。
【重磅举荐】华为云数据库特惠流动
本文由华为云公布