---
title: 'TiDB x ClassIn | TiDB 在 ClassIn 的应用实践'
date: '2023-06-29T17:30:45+08:00'
status: publish
permalink: /case/user-case-classin
author: xuliwen
excerpt: '疫情期间 ClassIn 服务器压力巨大，疯狂扩容，业务不停创新高，TiDB 作为一套分布式数据库不仅帮助其解决了扩容问题，同时节约了研发成本，在上线后实现了强稳定性、高效管理。在迁移完教室库等主站业务后，其他复杂的核心业务也将陆续向 TiDB 迁移。'
type: case
id: 1245
thumbnail: https://img1.pingcap.com/files/2023/02/ClassIn.png
industry:
    - 在线教育
scene:
    - '规模 OLTP'
company_desc:
    - '北京翼鸥教育科技有限公司（EEO）创办于 2014 年 9 月，主要从事“在线教室”的研发与运营。ClassIn 是 EEO 发布的世界上第一款在线教室，其强大的教学功能在一年内便吸引了 2000+ 学校客户，正在引领在线教育技术的迅速发展。'
white_paper_link:
    - ''
banner_image:
    - ''
---
业务挑战
----

ClassIn 为教培机构和公立学校提供实时在线互动教学场景，在疫情期间，业务获得 10 倍以上增长，面临着前所未有的挑战：

- 业务发展的严峻挑战：写入量大，突发流量高，业务高峰时 ClassIn 只能通过服务降级保证服务正常，导致用户体验差；
- MySQL 扩展性制约：单机磁盘容量达到瓶颈，单机无法突破 15 万 QPS，技术需要修改代码适配不断增长的业务；
- 非分布式架构难点：架构难以水平扩展，高可用需要依赖外部组件，中间件经验不足，至少需 3 人二开现有开源中间件。

解决方案
----

经过对主流数据库产品进行广泛调研，ClassIn 权衡了各个产品的优缺点，认为 TiDB 是最佳解决方案：

- 首先，对于 ClassIn 来说，TiDB 完全兼容 MySQL ，可以使用对用户友好的 SQL 语法，研发无需进行二次开发，节省了大量研发成本；
- 其次，TiDB 具备完备的 DBMS 功能，在运维的生态上比较健全；
- 最重要的是，原有架构的横向扩展问题也解决了，TiUP 人性化的设计可以帮助翼鸥教育快速扩缩容。

### 教室库业务

教室库是记录老师在上课时候的行为动作，比如打开课件、玩游戏、发奖杯等等会以二进制的方式记录到数据库当中。

在教室库业务架构中，最上面有 C 程序不停地写到库中，另有一个 Python 程序持续地将数据读取出分析后存在 MongoDB 中，最后再推送给相关机构。疫情爆发期间流量增加较大，使用 MySQL 面临单机写入不足的问题。在部署 TiDB 后，极大改善了原先使用 MySQL 在业务高峰时只能通过服务降级以保证服务正常的困境。

![ClassIn TiDB示意-new.png](https://img1.pingcap.com/prod/Class_In_Ti_DB_new_b632dd9a38.png)ClassIn 将 TiDB 部署于八台物理机上，四台运行 TiKV，三台运行 TiDB Service 与 PD Service，一台运行所有监控组件，整个架构实现高可用。

![ClassIn TiDB部署架构-new.png](https://img1.pingcap.com/prod/Class_In_Ti_DB_new_c0e6c4d154.png)业务收益
----

- 实现数据库线性扩容，使伸缩游刃有余；
- 节约研发成本，无需分库分表以及二次编写中间件；
- 大幅增强系统架构稳定性；
- 提供了 TiUP、Dashboard 等大量管理运维工具，提高运维管理性，有利于分析排查问题。