数据容量节省近70%,芯赛云数据库升级实践

上海芯赛云计算科技有限公司(以下简称芯赛云)成立于2021年,是一个成长初期的云计算公司,以公有云业务为使命,致力于“让用户像使用电一样便捷地使用云服务”。因此,在研发层面,我们专注于云计算、云存储和其他云产品的研发工作,数据中心设在上海、常州、广西这三地。

在这样的业务背景下,公司存在多个云产品线和研发环境,每个业务研发团队都申请专用的数据库服务器,还需要自己管理,导致没有统一的运维管理平台、数据库版本管理不一致,以及出现服务器资源占用多、资源浪费等问题。

为了节省资源成本,提升资源利用率,实现数据库版本的统一和运维管理,以及支持后续业务线上高并发场景的需求,我们开始了数据库选型。

分布式数据库选型及产品对比

在数据库选型中,我们考虑了传统的集中式数据库方案,但结合以下三点云计算平台特点,发现其扩展性、性能、运维等不足以支撑我们的业务。因此,我们将目标转向分库分表方案和已经趋于成熟与稳定的分布式数据库。

  • 云产品众多,产品线不断扩展。
  • 访问量大,海量数据增速快。
  • 层级复杂,涉及多种逻辑和调度。

在云计算平台研发初期,我们基于MySQL数据库并考虑使用ShardingSphere-JDBC做分库分表方案。主要因为ShardingSphere-JDBC是一种轻量级Java框架,以jar包的形式提供,支持分库分表、读写分离、跨库Join/分页/排序、XA事务、柔性事务(最终一致性)等功能,是比较成熟方案。它的优势在于突破了单一数据库的负载上限,提高数据库的整体性能和扩展性(数据分散存储),但是,所有分库分表方案都有共同的缺点:

  • 拆分后业务的清晰度降低,运维变得复杂。
  • 需要考虑和维护分库分表的规则。
  • 一般需要研发介入。

放弃集中式数据库方案和分库分表方案后,我们比较了国内较为前沿的几款分布式数据库产品,分别是TDSQL、TiDB 、OceanBase。测试其存储架构、数据结构、数据一致性、高可用和运维复杂性。

数据容量节省近70%,芯赛云数据库升级实践-1

从对比结果来看:

  • 在存储架构方面,TDSQL、TiDB 采用 KV 形式的底层存储引擎, OceanBase 是完全自研且具备行列混合存储模式和数据高压缩率。
  • 数据结构方面,OceanBase 和 TiDB 都采用了类似的 LSM Tree,而 TDSQL 采用了 B+Tree 加速模式。
  • 三款数据库都支持强一致性,只是协议不同。但在多租户方面,OceanBase 更加方便使用和管理。
  • 三款数据库都实现了高可用自愈功能,并且具有一定的兼容性。

最终,我们选择了 OceanBase ,这取决于以下五个因素。

第一, OceanBase有蚂蚁集团背书,稳定支撑9年“天猫双11购物节”和支付宝核心业务。

第二, OceanBase生态工具丰富,自研工具OCP、ODC、OMS等操作简单、易于维护,还集成了400+上下游生态伙伴。

第三, OceanBase的租户通过资源池、资源规格,来划分CPU/MEM/IOPS。所以我们按业务+平台的层级来划分租户,保证了各个业务线的资源使用不会相互影响,同时方便运维、备份恢复等。

数据容量节省近70%,芯赛云数据库升级实践-2

第四, OceanBase 的扩展性良好,支持集群级别的扩缩容和租户内的资源扩缩容。

  • 集群级扩缩容
    • 物理机-observer
    • 可用区zone动态调整
  • 租户内资源扩缩容
    • 水平扩缩容 – 调整资源池 unit_num 数量
    • 垂直扩缩容 – 调整资源规格 unit_config