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

news/2024/5/19 15:53:35 标签: oracle, tidb, 数据库

作者: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.niftyadmin.cn/n/373053.html

相关文章

聊一聊行业的前景、就业方向和薪资待遇

软件测试行业是和软件开发相辅相成得一个行业,但目前大家对于软件测试行业的了解并不多,甚至很多学了软件测试的朋友也不是很了解。今天,就来给大家说一说,软件测试行业的前景、就业方向和薪资待遇。 岗位前景 很多小伙伴都曾听…

【Web服务器集群】Apache配置与应用

文章目录 一、构建虚拟web主机1.概述2.httpd服务支持的虚拟主机类型3.构建虚拟Web主机3.1基于域名的虚拟主机3.2基于IP地址的虚拟主机3.3基于端口的虚拟主机 4.Apache连接保持5.Apache访问控制 二、Apache日志管理rotatelogs分隔工具 三、总结1.Web虚拟主机部署步骤2.网页根目录…

分布式运用之Filebeat+Kafka+ELK 的服务部署

1. Kafka 架构深入了解 1.1 Kafka 工作流程及文件存储机制 Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。 topic 是逻辑上的概念,而 partition 是物理上的概念,每个 parti…

C++入门--初步认识类和对象

0.前言 前面几章,我们一起学习了C和C语言的不同之处,已经算是半只脚迈入了C的“门槛”,本章让我们继续学习C的类和对象。 1.面向对过程和面向对象的初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤&…

Consul

1 下载 官网:https://releases.hashicorp.com/consul 根据自己情况选择自己所需的安装包下载即可。 2 安装 2.1 linux安装consul服务 ## 从官网下载最新版本的Consul服务 wget https://releases.hashicorp.com/consul/1.15.2/consul_1.15.2_linux_amd64.zip ##…

前端面试题整理8

1.Js浏览器兼容性怎么解决? 解决Js浏览器兼容性问题可以采用以下方法: 使用polyfills填充缺失的API。使用特性检测来判断浏览器是否支持某个API,然后根据情况使用不同的代码。使用框架或库来处理兼容性问题,如jQuery、Modernizr…

.NET程序集批量分析与静态逆向分析

背景 某老系统(下文简称X系统)采用.net 编写,没有文档没有代码。但运行中偶有发生问题。为进行问题分析,需逆向并静态分析源代码。记录下此过程。 分析思路 此系统有以下特点: 同时运行多个exe程序。exe程序虽然文…

js读取json文件的一个乌龙

起因 编写一个显示数据的静态页面&#xff0c;也就是俗称的index.html页面&#xff0c;页面的数据则有同目录下的json文件提供。 乌龙 吭哧吭哧的把页面写完和把json文件创建完成后&#xff0c;开始测试。 index.html <!DOCTYPE html> <html lang"zh"&g…