知乎规模化落地OceanBase实践与技术生态共建

作者:知乎数据库负责人代晓磊

一、知乎数据架构演进

知乎作为一家中文互联网问答社区,业务场景复杂多样,数据存储和处理需求也极为庞大,数据库架构经历了从单一数据库到多种数据库并存的演进过程。

最初主要依赖传统的SQL数据库(如MySQL),但随着业务规模扩大,SQL数据库在面对高并发、大数据量场景时逐渐暴露出性能瓶颈。为了满足不同业务场景需求,逐步引入了多种数据库类型,包括NoSQL数据库(如Redis、MongoDB)和图数据库。Redis用于缓存和快速读取,MongoDB用于处理非结构化数据,图数据库用于处理用户关系和内容推荐等复杂关系数据。

知乎数据库架构演进

希望再接入一款分布式数据库来解决裸金属服务器MySQL实例间的隔离问题,并降低存储成本。基于业务需求,确定了分布式数据库的选型五要素:

  1. 业务场景 — 决定了数据库的使用场景和需求
  2. 数据库特性 — ACID、高可用性、扩展性、多租户、云原生operator等
  3. 运维能力 — DBA需要完全掌握数据库使用技巧
  4. 生态完善 — 数据迁移工具、监控报警、备份恢复等周边工具
  5. 安全 — 防攻击、可控,代码开源

二、OceanBase 在知乎核心场景落地历程

在数据库选型初期,看中OceanBase两项能力:多租户能力和数据压缩能力。

知乎原有的MySQL架构采用云厂商裸金属服务器自建,拥有上百台高配服务器,包含数千个MySQL实例。由于缺乏数据隔离,MySQL实例大小不均衡,资源争抢问题明显。OceanBase的多租户特性能够有效解决资源隔离和合理分配需求,同时数据压缩能力非常强。

(一)前期调研

在正式上线前,重点测试了兼容性、数据迁移和分区表设计等关键环节。

  1. 兼容性和使用限制 — 通过功能验证、性能压测,了解表长度限制等使用限制
  2. 大表的分区表设计 — 单表将近3TB,需设计合理的分区规则和分区字段
  3. 有效划分租户 — 使磁盘、Memory、CPU等多种资源得到充分利用

大表分区设计

(二)应用场景

经过下载验证、阅读官方文档、全面调研,并加入社区,确认与MySQL兼容且产品稳定可靠后,逐步开始在非核心业务线、核心业务线进行验证。将MySQL大表通过OMS迁移至OceanBase,观测增量数据同步性能。相较MySQL,OceanBase可提升至少30%的读写性能,数据压缩至少2倍。

知乎OceanBase集群规模

目前OceanBase已在知乎的直答(AI RAG服务)、安全、教育等多个业务线成功落地,打开了MySQL大实例带来的扩展和存储瓶颈,解决了数据隔离问题,带来了40%以上的降本效果。知乎的OceanBase集群规模达7套集群,包含33个租户,共计91台高配服务器。

(三)OBKV引入计划

近期计划将OBKV应用到业务场景中,替换Redis。OBKV-Redis是OceanBase自研且完全兼容Redis协议的持久化缓存数据库。将内部自研KV数据库中的9000亿条数据导入OBKV-Redis进行大规模压测,其中string类型数据达到2100亿条。

OBKV压测结果

建议在使用OBKV-Redis时,重点关注string类型的应用,对于其他数据类型需根据业务需求进行充分测试。

(四)OceanBase 生态工具链

充分利用生态工具,包括迁移工具OMS、管控云平台OCP、ob-operator和OceanBase Dashboard等。

OceanBase生态工具链

OMS支持多种数据库产品、增量MySQL变更实时同步。在数据迁移压测中,仅用一天时间就将337亿数据全部迁移到OceanBase,每秒QPS最高达到七八十万。目前完成了35个迁移任务,包含54个数据源。

OMS迁移任务

OCP是强大的图形化运维管控平台,实现全生命周期管理。

OCP运维平台

ob-operator相当于基于Kubernetes的OCP,用于快速部署和管理OceanBase集群,并提供白屏运维工具OceanBase Dashboard。

OCP与ob-operator对比

四、技术社区共建

在2023年,和OceanBase社区联合举办了”走进知乎”企业行,现场近百名参与者。加入OceanBase社区的cloud native SIG,与其他成员共同探讨云原生、operator和Kubernetes等技术在OceanBase中的应用。

五、总结 & 展望

通过在多个核心业务系统上线使用OceanBase,完成了技术栈的转型升级。OceanBase的多租户和资源隔离能力有效解决了资源管理痛点;高压缩能力帮助降低了存储成本;OMS、OCP、ob-operator等助力实现高效运维。

展望未来,希望进一步探索OceanBase与AI的充分融合,落地更多向量化场景;丰富OCP的智能巡检能力,正式推广ob-operator和OceanBase Dashboard;继续深化与OceanBase社区的合作,共同推动OceanBase技术的发展。