TiDB x Bolt丨超强可扩展性与弹性助力超 1 亿用户畅享出行服务

news/2025/3/19 8:13:25/

作者:PingCAP 封小明

通过 TiDB 连接全球极限场景和创新场景,是 PingCAP 长期坚持的国际化战略。目前,在全球已有超过 3000 家企业选择 TiDB。无论在游戏、金融、物流、互联网还是智能制造等行业,基于规模化 OLTP 扩容、实时 HTAP 分析等应用场景,PingCAP 服务用户的脚步已经从中国延伸到全球,覆盖日本、亚太、北美和欧洲等各个区域。

本文为“全球极限场景与创新场景使用 TiDB 的最佳实践”专题第二篇,分享 TiDB 如何为 Bolt 1亿用户提供超强可扩展性与弹性,保障其服务的全球化运营。

Bolt 是一家总部位于爱沙尼亚,提供城市交通和运送服务的出行互联网公司,业务领域涵盖网约车、摩托车租赁、汽车共享和餐饮外卖等,是优步在欧洲的强劲竞争者。Bolt 在 45 个国家和地区的 500 多个城市拥有超过 1 亿客户,与全球 300 万多家供应商建立了合作伙伴关系,雇佣了 3000 多名员工。

在这里插入图片描述

MySQL 方案面临的主要痛点

作为一家互联网公司,数据对于业务决策和个性化服务具有巨大的价值与作用。过去,Bolt 一直使用 MySQL 作为其主数据库方案,并在很长一段时间内运行良好,但随着 Bolt 全球业务的快速增长,MySQL 开始无法应对其不断增加的数据量。

Bolt 内部有许多产品团队,开发和管理着数千个微服务。这些微服务在 300 多个 schema 中处理着数百 TB 的数据,而且数据量还在不断增长。MySQL 很难扩展到处理如此多的数据。为了尝试解决这些挑战,Bolt 开始尝试手动分表并添加列。但这个工作非常耗时,加载 1TB 的表需要一个星期或更长时间。此外,当他们运行 ALTER(DDL)等命令或进行备份时,还会出现操作问题。

为了支持其上亿客户,Bolt 对系统的正常运行时间和灾难恢复有着非常严苛的要求。但基于 MySQL 的旧解决方案太脆弱,无法在灾难中顺利运行。即使他们在 MySQL 上部署了像 Galera 这样的多主机集群来提高系统的可用性,偶尔还是会丢失数据。

为什么选择 TiDB?

为了解决以上痛点,Bolt 花了很多时间探索包括 Vitess 在内的数据库解决方案。但 Vitess 需要对 Bolt 的应用程序进行许多更改,业务改造复杂——且它与 MySQL 有着类似的操作问题。此外,Vitess 对 MySQL 兼容性很差。最终,Bolt 选择了开源的分布式 NewSQL 数据库 TiDB。

开源

TiDB 从第一天起就是一个开源的数据库。每一行代码都是公开透明的,所以 Bolt 可以根据自己的需要改变、修改和定制代码,而 TiDB 仍然可以工作。

水平可扩展性

TiDB 具有几乎无限的水平可扩展性。只需通过自动添加或删除存储节点,就可以轻松处理高达数百 TB 的数据峰值或低谷。此外,TiDB 采用了计算、存储分离架构,因此 Bolt 可以根据其不断变化的业务需求分别扩展或缩小计算和存储资源,这有助于 Bolt 控制其数据库和运维成本。

高可用性

TiDB 使用 Raft 算法来确保数据在 Raft 组的整个存储中高度可用并安全复制。TiKV 是 TiDB 的存储节点,数据在TiKV 节点之间冗余复制,并放置在不同的可用区中,以防止机器或数据中心发生故障。TiDB 提供自动故障转移,从而确保系统正常运行时间。此外,TiDB 提供了多种灾难恢复解决方案,每种解决方案都适用于不同的场景,成本灵活。

MySQL 兼容性

TiDB 与 MySQL 高度兼容,因此 Bolt 的工程团队无需改造就可以很容易将数据迁移到 TiDB。大大节省了时间与成本。此外,TiDB 可以与 Kafka 和 Kurbenetes 等主要技术堆栈良好集成,也可以在 AWS 上完美运行。

云原生

TiDB 基于云原生架构,充分利用了云的可扩展性和弹性,并被设计成可以在云、私有环境或混合环境中工作。TiDB 的云原生能力允许用户根据需要进行扩展,以满足不断变化的业务需求,而成本始终保持在控制范围内。

此外,当将 TiDB 与 Kubernetes 结合使用时,用户还可以:

  • 确保开发和部署环境的一致性;
  • 根据需要实例化一个新的节点,无论是为了适应增长,还是为了取代一个丢失的节点。

极具成本效益

同时,TiDB 也是一个具有绝佳成本效益的解决方案:

  • 强大的数据压缩能力降低了存储成本。例如,一个 4TB 的 MySQL 表在迁移到 TiDB 后可以压缩到 2TB 以下。根据 Bolt 的经验,TiDB 的平均压缩率在 3倍左右。根据数据类型,速率可能会略有变化——有时会更多,有时会更少;
  • 具有简化的 HTAP 架构,可以同时处理事务和分析工作负载。
  • 可以根据业务需求,分别水平扩展或缩小计算和存储资源。
  • 易于操作和维护,大大降低了维护成本。
  • 具有良好的 MySQL 兼容性,迁移过程平稳轻松。
  • 支持使用 Graviton2(Arm64)在 Amazon Elastic Kubernetes 服务(EKS)上进行灵活部署,从而实现更好的性价比。

TiDB 技术支持

在部署、迁移和使用 TiDB 的过程中,Bolt 得到了 TiDB 原厂工程师的高效支持,并对 TiDB 进行了特殊定制的改造。

截至 2022 年 10 月,Bolt 已经部署了七个 TiDB 集群,存储了数十 TB 的数据和数百个架构。

  • 4个 TiDB 集群运行于生产环境中,包括余额、计费、订购和物联网(IoT)服务。
  • 2个 TiDB 集群用于开发或预生产的 alpha 和 beta 集群。
  • 1个 TiDB 集群部署在斯德哥尔摩的下游集群,用于容灾。

未来展望

未来,Bolt 计划将更多业务依赖 TiDB,包括将更多集群从 MySQL 迁移到 TiDB,使用 TiDB 的变更数据捕获工具TiCDC 在 AWS 上设置多区域集群进行故障转移,并尝试 TiDB 的列式存储 TiFlash 进行实时分析查询,获得更加实时的数据洞察。


http://www.ppmy.cn/news/103655.html

相关文章

算法Day20 | 654.最大二叉树, 617.合并二叉树, 700.二叉搜索树中的搜索, 98.验证二叉搜索树

Day20 654.最大二叉树617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树 654.最大二叉树 题目链接: 654.最大二叉树 递归终止条件一定要先写出来。 终止条件选好,可以省略很多多余的代码 构造二叉树题目,要用前序遍历。因为先构造中节…

Slower使用教程完整版本【2023年更新】

Slower软件的版本,目前市面上有多种。 如果你指的是Slower器加速软件的话,可以看下面的教程: Slower是一款很不错的安全国际互联网工具,广泛用于外贸与留学生行业,设计师行业与科研行业。但是,因为使用过…

【业务功能篇05】Springboot+MybatisPuls 分页查询设计

业务场景: 针对一个问题表单进行筛选,查询过滤后的数据,是一个基本的功能,而随着数据过多,前端表格设计时是需要有一个分页的功能,比如查询了有100条,那么我们设定一页10条,分成10页给业务看,那么这里后端接口就需要返回哪些东西: 问题总数量,当前分页,页大小,以…

30:透彻了解inlining的里里外外

编译器最优化机制通常被设计用来浓缩那些“不含函数调用”的代码,所以当你inline某个函数,或许编译器就因此有能力对它(函数本体)执行语境相关最优化。 然而inline函数也有使用的代价。 inline函数背后的整体观念是,…

高精度电压源如何设计出来的

高精度电压源是一种用于提供高精度电压的电子设备,通常用于测量和控制系统。高精度电压源的设计是一个复杂的过程,需要考虑多个因素,包括电路设计、元件选型、测量误差、稳定性等。下面将从电路设计和元件选型两个方面,详细介绍高…

【大数据之Hive】三、Linux下安装MySQL8.0.33

1 安装MySQL (1)解压MySQL安装包: tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql(2)卸载系统自带的mariadb: sudo rpm -qa | grep mariadb | xargs sudorpm -e --nodeps(3&am…

自学web前端能找到工作吗?是否有必要参加前端培训?

是的,自学前端可以帮助您找到工作,参加培训是根据个人学习能力和经济实力来自己决定的。前端开发是一个相对容易入门的领域,并且许多人通过自学成功地找到了前端开发的工作。以下是好程序员的一些建议,可以帮助您在自学前端时提高…

JVM学习(十二):执行引擎

目录 一、执行引擎概述 二、执行引擎的工作过程 三、Java代码编译和执行 3.1 过程概述 3.1 javac前端编译 3.2 Java字节码的执行 3.3 编译和解释概述 3.4 高级语言理解与执行过程(机器码、指令、汇编) 3.4.1 机器码 3.4.2 指令 3.4.3 指…