华为云数据库目前在各行各业得到了市场上的广泛认可,包括中国一汽其 ERP 核心系统使用的是华为云数据库,永安保险理赔系统使用的是华为云数据库,其他如电商平台、游戏厂商等等,当然也有银行的一些核心系统,如信用卡等,那么华为云数据库主要分成哪几个部分呢?具体如下图所示:
华为云数据库主要分成三个部分,首先底层是迁移工具,能够支持用户平滑上云,上一层是开源托管数据库,最上层是自研数据库,其中 GeminiDB 是我们本文内容的重点,它是一款由 KV、文档、宽表和时序组成的一个超融合的多模数据库。
GeminiDB 引领 NoSQL 存算分离架构,持续战略投入,打造世界级数据库,GeminiDB 发展历程具体如下图所示:
结合 GeminiDB 发展历程,我们将其成就归纳为以下几点:
GeminiDB 全球一张网布局,服务全球客户,具体如下图所示:
如上图所示,当前 GeminiDB 已经分布在全球 23 个 Region,有 66 个可用区,共服务了全球 2000 多家大型企业,包括那个互联网金融、政府、电信等,当前在国内主要局点涵盖北、上、广、深等主流 Region,在海外主要有中东、亚太、欧洲及美洲。
GeminiDB 云原生架构设计的核心分为存算分离和多模扩展两个部分,具体如下图所示:
数据库的存算分离是指将数据库的存储和计算功能分离开来,分别由不同的组件来完成。通过将存储和计算功能分开,实现了更高的灵活性和扩展性。具体来说,存储功能由存储引擎(Storage Engine)来完成,计算功能由计算引擎(Compute Engine)来完成,存储引擎负责数据的读写和存储,计算引擎负责数据的查询和计算,两者之间通过接口进行通信和协作。在这套架构之上,我们就可以快速扩展多种协议支持,如 Redis、MongoDB、Cassandra、DynamoDB、InfluxDB。
我们对于 GeminiDB 云原生架构的优势进行展开如下:
一个 GeminiDB 是一个分布式集群,包含了多个节点,下图示例中,包含三个节点,假设节点二和三出现任何意外,挂掉之后,负载可能很低,但也有可能出现故障情况,这时在 GeminiDB 中不需要搬迁数据,只需要改一个个路由表,具体如下图所示:
这里的 Slot 信息代表一个路由信息,我们可以看到节点 1 负责 0-2,节点 2 负责 3-5,节点 3 负责 6-8,当节点 2 和 3 挂掉之后,它们所负责 Slot 信息都会迁移给节点 1,这个过程不需要数据搬迁,只需要路由表修改,速度会非常的快,可以做到秒级接管;同时,活着的节点能够提供所有的服务,底层共享一个存储,节点 1 可以看见节点 2 和节点 3 维护的数据,实现容忍 N-1 个节点故障。
我们把数据库扩展分成计算和存储两层。传统 NoSQL 在扩容时,不管是算力不够,还是数据量不够,都需要加一个节点,那就难免搬迁数据,下图展示了从节点 1 和节点 2 搬迁数据到节点 3 的过程,这个过程是很慢的,具体如下图所示:
在下图中我们可以看到,在开始阶段,OPS 和时延都是稳定的,但是在数据搬迁过程中可以看到它的延迟是上下波动的,在业务影响方面,吞吐也是上下波动的,并且整个过程持续时间非常久,结束之后才会进入平稳状态,具体如下图所示:
而 GeminiDB 扩容分为两种,首先是计算扩容,增加一条路由信息,把以前节点的路由信息分配给新的 DataNode3,可以看见底下的数据,完成计算分钟级扩容,具体如下图所示:
整个扩容过程中,在上图我们可以看到红色的线,时延是没有大的变化的。扩容之后时延下降了一点,算力得到了提升。OPS 也是一个线性的增长过程,分钟级就可以完成 1 个节点添加。
下图黄色线是某一个实例的存储上限,绿色线是业务数据的每天变化,可以看到业务数据每天都在增加,当到达拐点的时候,已经接近容量上限,如果不扩容就会进入那个只读状态,具体如下图所示:
这个时候,GeminiDB 扩容一键就可以完成,完全不影响业务。在存仓分离架构下,存储扩容对于我们来说就是调整配额的一个参数,当前 GeminiDB 可以满足用户 4GB-36TB 的平滑扩缩容。最新版本里已经支持自动扩容,用户在购买界面如果勾选自动扩容,当用户的数据量达到一定比例、配额的时候,根本不需要用户关心容量大小。
insert metric,host = server - 1 CPU = 70
插入过程从内存到分布式存储,同步插入过程中,会根据用户的配置参数,如定义热数据的时间,超过一定时间,就定义成冷数据,在异步过程中把数据推到远端的 obs 上,obs 对我们来说是冷存储,保证用户在共享存储中的热数据控制在一定范围内,节省用户存储成本。
我们以 Influx 的一条查询语句为例,语句如下:
Select CPU from metric where host = server - 1
在读的过程中,根据用户的输入,自动去存储做集合查询,把需要的结果返回给用户。
“冷热分离”,即买即用,当用户购买 GeminiDB 的时候,用户可以选择是否开启冷存储,同时冷存储的空间的范围也可以选定,在创建一张表的时候,指定好数据到期时间,如一周或者是一月,当数据插进来超过一周,定义为冷数据,整个过程对于用户“0”改造。
GeminiDB 高可靠实现分为两种,一种是单个 Region 内 3AZ 容灾,另一种是两个 Region 间的容灾。
单个 Region 内 3AZ 容灾,GeminiDB 支持 3AZ 可靠,计算和存储都是 3AZ 均衡分布的,用户购买的 3AZ 节点数大于 3 的时候,会将其均匀分布到不同 AZ 上,其中一个机房的计算、存储或者计算存储同时掉电,都能实现防御故障,不会影响整个实例的可靠性和可用性,数据既不会丢,可用性也不会下降。单个 Region 内 3AZ 容灾,具体如下图所示:
两个 Region 间的容灾,已经实现了 GeminiDB 两个实例间的数据复制,可以做到保序、断点序传,同时支持冲突解决。即在下图中,当用户从 B 中心写入一个数据,可以同步到 C 中心,C 中心写入的数据也可以同步到 B 中心。也就是说当一个 Region 级别的故障,如 B 中心发生故障,业务可以切到 B 中心实现熔灾。两个 Region 间的容灾,具体如下图所示:
GeminiDB 支持四种模型,主要有 KV 模型、文档模型、宽表模型和时序模型,表现在用户层面接口是五种,分别是 Redis 接口、MongoDB 接口、Cassandra 接口、DynamoDB 接口、Influx 接口,引擎层主要有 KV 引擎、搜索引擎和文档引擎,最底下就是存储层,具体如下图所示:
GeminiDB Redis 接口:提供稳定低时延,适用于广告、游戏场景。
应用在广告场景的 FastLoad ,能够帮助用户一键式从 Hadoop、Spark 等大数据系统,一键导入到 GeminiDB 中,由 GeminiDB 提供给上游业务实现实时查询,具体如下图所示:
广告营销、个性推荐等业务对时延敏感,也注重存储成本。对此类 AI 业务中 GeminiDB 是作为特征画像数据库的最佳选型:
PITR 游戏回档广泛应用于游戏场景,游戏场景中,如发版或者变更,经常需要把对应的数据库回挡到某一个时间点,GeminiDB 支持五分钟粒度的时间片回档,用户需要回荡到任意时间都可以在控制台上完成操作,并且支持原地回档,具体如下图所示:
游戏业务场景丰富,好友链、聊天、抢红包、排行榜…强依赖 Redis 丰富数据结构,同时对数据回档有诉求。GeminiDBm 提供游戏全服解决方案:
GeminiDB Mongo 接口:大容量&强一致,适用于互联网、游戏、社交。
极速扩容:计算节点可极速增加多个只读节点,分钟级完成读节点扩展。存储资源秒级扩容,业务平滑无感知,具体如下图所示:
数据和服务高可靠:基于强一致一写多读消除 Read/Write Concern 的性能影响;主从同步毫秒级稳定延迟,彻底解决主从脱节问题;容忍 N-1 节点故障,依旧保持全量服务可用性,具体如下图所示:
GeminiDB Cassandra 接口:类 SQL 语法,适用于海量宽表存储场景。
增强索引,具体如下图所示:
数据通道,具体如下图所示:
全局索引,具体如下图所示:
GeminiDB Influx 接口:时空数据存、算、析一体平台,广泛用于 IoT 场景。
RTA(Realtime API)广告业务模式,用于满足广告主实时个性化的投放需求,在竞价中减少资金浪费,具体如下图所示:
客户旗下的多款 APP 全球累计安装用户数近 24 亿,覆盖 200 多个国家和地区,是全球领先的数字娱乐内容平台,具体如下图所示:
GeminiDB 助力华为终端云打造体验天花板,具体如下图所示:
GeminiDB 助力 loT 场景数据分析实现万物互联,具体如下图所示:
我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!