TiDB如何处理元fudao.com快速增长的数据和复杂的查询

2017-08-08 Yuanfudao.com 互联网

Yuanfudao.com是中国面向K-12教育板块的在线辅导服务,拥有最大数量的中小学生用户。它拥有三款应用程序:在线题库“天涯搜索”、照片搜索应用“小天涯”和在线辅导服务“元福道”。

到目前为止,元福道app拥有超过116万付费用户,为小学用户提供英语和数学奥赛的实时辅导课程,并为中学生提供所有科目的辅导。有了yuanfudao.com,来自全国各地的学生可以在国内享受顶尖教师的优质课程。

题库、音视频学习资料、所有用户数据和日志中的海量数据,要求元fudao.com后台系统具有较高的存储和处理能力。

元复道的业务场景要求其后台系统具备以下特点:

  • 在数据量大、增长速度快的情况下,存储系统需要具备灵活的扩展能力。
  • 能够满足复杂的查询和BI相关需求,能够基于城市、渠道等索引进行实时分析。
  • 系统必须具有高可用性,能够自动故障转移,并且易于维护。

在方案评估和选择的初期,元福道曾考虑过MySQL单机方案,但后来放弃了这个想法,原因如下:

  • 他们认为,随着业务的快速发展,数据存储容量和并发压力很快就会达到独立数据库的处理瓶颈。

  • 如果在MySQL中添加分片解决方案,必须指定分片密钥,这将不支持跨分片分布式事务。更不用说代理解决方案对业务层是侵扰性的,开发人员必须清楚地了解分区规则,这使得它无法实现透明性。

  • 分片难以实现跨分片的聚合查询,如对整个表进行相关查询、子查询和按组聚合等。在这些业务场景中,查询复杂性被传递给应用程序开发人员。尽管有些中间件可以实现简单加入支持,仍然没有办法保证这些查询的正确性。

  • 广播解决方案不能扩展,当集群变得更大时,开销会非常大。

  • 对于数据量较大的业务,如果锁定时间很长,传统RDBMS上的DDL锁定表的问题就会很严重。如果使用一些第三方工具gh-ost要实现非阻塞DDL,额外的空间开销将会很大,并且仍然需要手动干预来保证数据一致性。更糟糕的是,系统在切换过程中可能会抖动。可以肯定地说,随着越来越多的机器,维护复杂性将呈指数级增长,而可伸缩的复杂性则直接传递给DBA。

最后,元福淘的后端开发者决定使用分布式存储解决方案,在研究了很多社区解决方案后,他们找到了TiDB,一种分布式关系数据库。

TiDB是一个开源的分布式混合事务/分析处理(HTAP)数据库。它具有水平可伸缩性、强一致性和高可用性。用户可以将TiDB视为一个独立的数据库,具有无限的存储容量。TiDB对业务无干扰,可以优雅地替代传统的分片解决方案,如数据库中间件和数据库分片,同时维护事务的ACID属性。开发人员不再过分关注数据库扩展的细节,而是将精力集中在业务开发上,这大大提高了研发效率。

由于底层存储引擎支持复杂的分布式事务和数据复制,开发人员只需专注于业务逻辑和创建价值。

下表概述了MySQL分片解决方案和TiDB的区别:

MySQL分片 TiDB
酸的事务 没有 是的
网络可扩展性 没有 是的
复杂的查询 没有 是的
故障转移 手册 汽车
MySQL的兼容性

(TiDB与传统MySQL分片解决方案比较)

TiDB集群由三个组件组成:TiDB Server、TiKV Server和PD Server。

TiDB架构

TiDB的总体架构

TiDB Server负责处理SQL请求。当业务增长时,添加更多TiDB Server节点可以提高整个处理能力并提供更高的吞吐量。

TiKV负责存储数据。当数据量增加时,部署更多的TiKV Server节点可以直接增加数据存储容量。

PD在Regions中的TiKV节点之间调度,并将一部分数据迁移到新增加的节点。因此,在早期阶段,用户可以根据数据量部署一些服务实例,并在需要时添加更多TiKV或TiDB实例。

在生产环境部署时,元福道网选择了2 TiDB + 3 TiKV + 3 PD架构,每天数据量500万行,路由数据库中有上亿条记录,峰值QPS约1000条。值得注意的是,体系结构会随着业务数据量的增长而扩展。

元复道客户端采集直播音视频质量数据,包括丢包、延迟、质量分级等。然后客户端将这些数据发送到服务器,服务器将所有数据存储在TiDB中。

元复道研发副总裁郭长珍对TiDB表示赞赏:“TiDB是一个雄心勃勃的项目,它从零开始解决了MySQL的可扩展性问题。在许多情况下,它还具有OLAP能力,节省了构建和学习数据仓库的成本,这在业务层非常流行。”下一步,元复道计划通过Syncer进行同步,然后合并并对其他分片业务进行统计分析。

还有很多类似的用例,比如yuanfudao.com。随着互联网的快速发展,大量的业务蓬勃发展,TiDB以其灵活的扩展能力满足了他们的需求。

准备好开始使用TiDB了吗?

这页上有什么
    行业
    公司
    标签