云计算的飞速发展,促使各行各业加快数字化转型的步伐。数据库作为信息系统核心服务,在云化的浪潮中,逐渐发展出云数据库的技术路线,并在不断迭代创新中。
数据库产品形态演进纵观数据库行业发展历程,从早期的单机MySQL到近年来分布式数据库、NoSQL系列,数据库始终秉承着一个理念——把简单留给用户,把复杂留给数据库。
1. 单机
早期,为了弥补单机MySQL的扩展性,用户要在业务层做分库分表、读写分离。但随着数据规模持续增长,用户业务、运维负担过重。
2. 分布式、NoSQL
随后,分布式数据库开始流行。这一代数据库数据容量大,还能够水平扩展,同时也提高了可用性。而NoSQL系列的出现,也让业务设计更加灵活。例如,Redis的key-value数据结构,搭配内部的sorted set,非常适合搭建游戏排行榜;MongoDB作为最流行的文档数据库之一,能够帮用户便捷存储json文本。
3. 云原生、存算分离
伴随用户的业务需求复杂化,诸如“当访问量小,但数据量巨大,加上核心数据不能丢。此时只是想增加些存储空间”,传统分布式架构便“不再完美”。
如今,我们已进入崭新的云原生时代。走在行业前沿的数据库产品都在进行新一轮演进,拥有更强大、更灵活的全新架构——存算分离。
以企业级Redis——GaussDB(for Redis)为例,图中展示存算分离的本质:资源解耦,按需使用。“计算不足扩节点、存储不够扩容量”,这种分层、弹性的扩容机制,也为用户节省很多不必要的开销。
此外,在完全兼容Redis之余,GaussDB(for Redis)也兼顾了轻量级场景——用户可随时下单8GB规格实例,使用低成本、稳定可靠的企业级Redis。
云原生时代,华为云GaussDB带来的价值云原生时代下,客户对数据库提出了更高的要求,基于用户常见的4大类业务痛点场景,华为云GaussDB数据库基于存算分离架构,给出了它的解法。
1. 数据库秒级扩容
随着企业规模扩张,更大的算力需求、更多的存储容量需求是必然的。例如在游戏开服、11.11大促抢购高峰期间,数据量爆发性增长,此时需要对数据库进行扩容,而且在不少的业务场景下,扩容的速度甚至要求达到“用户0感知“的级别。
而开源Redis由于资源以节点为单位,扩容只能计算、存储一起扩,资源浪费是一方面,还不得不做数据跨节点拷贝,耗时长。而且不少用户在扩容时,还可能面临着时间无法评估的尴尬。
存算分离数据库不仅拥有秒级扩容的优势,还能满足用户“算力不足扩节点、容量不足扩容量”的要求,完全不必担心资源“买多”问题。
2. 故障秒级恢复
单机数据库一旦宕机,全量数据不可用,只能等待数据库重启,导致业务受损严重。传统分布式数据库一旦部分数据分片故障,会导致一段时间内部分数据无法访问,依然对业务产生不小影响。
存算分离数据库能够解决极端场景下的数据可用性问题。由于存储池有“共享”的性质,当部分计算层节点故障时,其他健康节点可以立刻接管“本不属于自己”的数据,让业务只感受到秒级抖动,即可继续访问全量数据,不必等待故障节点的“复活”。
3. 多线程设计,写入能力强大
业务高峰是每一个企业关注的关键场景之一。开源Redis集群虽然比简单的主+备更能应付并发访问,但面对大量写入,依然会力不从心。一是因为它的节点是单线程做命令处理的工作,容易发生请求阻塞。二是由于备节点只读,因此它的集群中仅半数节点可写,抗写能力不足。
GaussDB(for Redis)抗写能力极强,能从容应对企业最关心的业务高峰。首先,它采用了多线程做命令处理的设计,单点不易发生请求阻塞。其次,在存算分离的架构优势下,实例中并不存在主备关系,全部节点都可写,吞吐能力强。
4. 成本大幅降低
分布式存储池将存储以细粒度提供给用户,相比一块块独立硬盘低效率使用,GaussDB存储池成本会极大降低。另外,相比开源Redis纯内存设计,GaussDB(for Redis)全量数据下沉到存储池中,从根本上解决了纯内存硬件价格昂贵问题。
华为云数据库特惠活动:https://activity.huaweicloud.com/dbs_Promotion/index.html
本文由华为云发布。