取代分库分表Sharding-JDBC的TiDB数据库
58 集团拥有大量需要长期保留的数据,但 MySQL 的单机存储容量有限,扩容不便。在数据量特别大的情况下,只能采用分库分表。MySQL 的高可用方案是主从复制+ MHA,当主库挂掉时,需要切换主从,势必影响一定时间的写入。此外,MySQL 读延时比较高,读流量增加会进一步带来高延迟。
经过选型对比,58 集团选用 TiDB 来解决上述问题。 基于分布式架构的 TiDB 支持水平伸缩,在计算能力不够时直接加节点就可以进行扩展。 且 TiDB 具有多副本,可以保证数据安全及高可用。此外,TiDB Server 没有状态,支持多点读写。TiDB 也无需分库分表,操作比较简单,不用定期清理数据。
58 将 TiDB 接入到了“58 云 DB 平台”中,利用开源 inception 来处理 DDL/DML 工单。平台分为管理端和用户端,管理端是 DBA 用来做元信息维护、工单处理、运营报表、监控概览等。用户端方面,业务会在上面申请 TiDB 集群、DDL/DML 工单,账号管理,查看集群的信息及监控情况,还可以自助查询库中的数据。
TiDB 切实解决了汽车之家在应用 SQL Server 时候的痛点:
- 水平伸缩:在当前集群内可以随时加节点,更换节点也轻而易举;
- 海量数据支持:基于其特性以及业内使用的经验,十亿乃至百亿级别的数据量轻松搞定;
- 高可用:相较 SQL Server 的主从模式,TiDB 基于 Raft 协议,可以实现 100% 的数据强一致性,并且多数副本可用的情况下,可实现自动故障恢复;
- HTAP:TiDB 自身就支持一定程度的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。