分享好友 站长动态首页 网站导航

关于分布式数据库,你需要知道的一些事(中)

网友发布 2022-10-26 21:24 · 头闻号数据库
引言随着互联网的飞速发展,人类社会的数据量迅速激增,据统计目前人类一年产生的数据就相当于人类进入现代化以前所有历史的总和,而且互联网业务的发展通常具有爆发性,业务量很可能在短短的一个月内突然爆发式地增长几千倍,对应的数据也很可能快速地从原来的几百GB飞速上涨到了几百个TB。如果在这爆发的关键时刻,系统不稳定或无法访问,那么对于业务将会是毁灭性的打击。

这时,传统的单机数据库提供的服务,在系统可扩展性、性价比方面已不再适用。伴随着对于系统性能、成本以及扩展性的新需求,分布式数据库系统应运而生,力求突破单机MySQL容量和性能瓶颈,彻底消除单机数据库无法支撑企业业务高速发展的后顾之忧。

在《关于分布式数据库,你需要知道的一些事》系列里,大U将以UCloud分布式数据库产品——UDDB为例,用三篇的篇幅为大家详细解析分布式数据库的一些重要特性和技术实践细节。

在上一篇文章《 关于分布式数据库,你需要知道的一些事(上)》中,我们对 UDDB 产品的功能特性,进行了简洁又全面的勾勒。本篇文章中,我们将为大家重点介绍 UDDB 的六大功能特性。那么,我们开始吧:)


1. 基于 UDB 和 ULB 的架构设计

UDDB 的底层存储,要充分复用 UDB(UCloud Database) ,这是我们在研发 UDDB 时确定的首要原则,也是风险最低,能够最大程度防止系统风险,保护业务的方法。

目前,NewSQL 是数据库领域的技术热点。这说明过去十几年来,业内在 NoSQL 方向的尝试,并不成功,最后还是认为 SQL 和关系模型最靠谱。但是,从零开始打造一款存储类的产品,需要很长时间,才能达到工业强度,真正用来承载客户业务。而时间不等人,当越来越多的 UCloud 客户需要分布式数据库时,我们必须想办法尽快满足,但前提是风险足够可控。

基于上述考虑, 我们选择了数据库中间件加 UDB 产品来构建 UCloud 分布式数据库。数据库中间件经过过去十几年的积累,技术上足够成熟,已经是业内使用最多、最广的分布式数据库解决方案。UDB 产品经过多年的运营和迭代,不仅产品本身品质量过硬,还打造了一支高效专业的运营和 DBA 团队,7×24值守线上系统。

UDDB 的最终方案,直接复用高可用 UDB,作为存储节点,确保底层存储无单点并实现高可用,而存储节点下面挂载的只读实例,则复用了普通 UDB 节点。我们认为,这是保障业务数据可靠性和系统稳定性的最优选择。同时,充分复用 UDB 来做存储,也意味着 UDDB 开发团队,可以将精力聚焦在中间件上,集中精力打造精品。

值得一提的是,中间件是无状态的,数据都在 UDB ,即使中间件出现了灾难性的bug,只要数据在 UDB 中不丢失,就可以通过分析业务+中间件日志来还原客户数据。这是从头开发的 NewSQL 产品无法做到的。

同时,我们使用了 ULB 来做中间件节点的双活和负载均衡。ULB 同样为 UCloud 的口碑产品,稳定、性能好、能够迅速应对后端节点的异常,在过去几年经受住了各种业务的检验。

总的来说,通过复用 UDB 和 ULB,稳妥又低成本地解决了数据存储和中间件节点的容灾和负载均衡问题,这体现了基于公有云平台来开发产品的优势:

通过复用成熟的标准化产品,项目组只需要专注于核心模块的开发,通过搭积木的方式,搭建出产品整套架构

UDDB 总体架构图如下:

2.1 传统扩容方式的弊端

2.2 解决方案

在 UDDB 产品中,我们设计了一个极简的交互流程: 只需要点击一个按钮,即可完成全部水平扩容操作。

3.1 业界常见做法

读写分离,是业内解决这个问题的常见方法。 具体的做法是添加几个从库,在主库和从库之间建立好复制关系,构成一个读写分离组;然后修改业务逻辑,将部分或者全部读请求分流到从库,通过从库来分担读请求的压力。

但这需要一定的开发和运维工作量:需要部署从库,配置复制关系,还有修改业务程序,对读请求做路由。虽然目前 UDB 产品,可以通过管理页面,一键创建从库并配置主从复制关系,但是业务程序的修改,依然无法避免。

3.2 读写分离一揽子支持

在客户回访当中,我们发现不少客户,希望 UCloud 提供对读写分离问题的一揽子支持。为此,UDDB 的一个核心目标,就是完美支持读写分离,做到好用且功能强大。下面是我们的方案:

反对 0
打赏 0
更多相关文章

评论

0

收藏

点赞