黄东旭解析 TiDB 的核心优势
762
2023-11-24
Bolt 是一家总部位于爱沙尼亚,提供城市交通和运送服务的出行互联网公司,业务领域涵盖网约车、摩托车租赁、汽车共享和餐饮外卖等,是优步在欧洲的强劲竞争者。Bolt 在 45 个国家和地区的 500 多个城市拥有超过 1 亿客户,与全球 300 万多家供应商建立了合作伙伴关系,雇佣了 3000 多名员工。
本文为“全球极限场景与创新场景使用 TiDB 的最佳实践”专题第二篇,分享 TiDB 如何为 Bolt 1 亿用户提供超强可扩展性与弹性,保障其服务的全球化运营。
作为一家互联网公司,数据对于业务决策和个性化服务具有巨大的价值与作用。过去,Bolt 一直使用 MySQL 作为其主数据库方案,并在很长一段时间内运行良好,但随着 Bolt 全球业务的快速增长,MySQL 开始无法应对其不断增加的数据量。
Bolt 内部有许多产品团队,开发和管理着数千个微服务。这些微服务在 300 多个 schema 中处理着数百 TB 的数据,而且数据量还在不断增长。MySQL 很难扩展到处理如此多的数据。为了尝试解决这些挑战,Bolt 开始尝试手动分表并添加列。但这个工作非常耗时,加载 1TB 的表需要一个星期或更长时间。此外,当他们运行 ALTER(DDL)等命令或进行备份时,还会出现操作问题。
为了支持其上亿客户,Bolt 对系统的正常运行时间和灾难恢复有着非常严苛的要求。但基于 MySQL 的旧解决方案太脆弱,无法在灾难中顺利运行。即使他们在 MySQL 上部署了像 Galera 这样的多主机集群来提高系统的可用性,偶尔还是会丢失数据。
为了解决以上痛点,Bolt 花了很多时间探索包括 Vitess 在内的数据库解决方案。但 Vitess 分库分表的中间件方案需要对 Bolt 的应用程序进行许多更改,业务改造复杂——且它与 MySQL 有着类似的操作问题。此外,Vitess 对 MySQL 兼容性很差。最终,Bolt 选择了开源的分布式 NewSQL 数据库 TiDB。
2.1 开源
TiDB 从第一天起就是一个开源的数据库。每一行代码都是公开透明的,所以 Bolt 可以根据自己的需要改变、修改和定制代码,而 TiDB 仍然可以工作。
2.2 水平可扩展性
TiDB 具有几乎无限的水平可扩展性。只需通过自动添加或删除存储节点,就可以轻松处理高达数百 TB 的数据峰值或低谷。此外,TiDB 采用了计算、存储分离架构,因此 Bolt 可以根据其不断变化的业务需求分别扩展或缩小计算和存储资源,这有助于 Bolt 控制其数据库和运维成本。
2.3 高可用性
TiDB 使用 Raft 算法来确保数据在 Raft 组的整个存储中高度可用并安全复制。TiKV 是 TiDB 的存储节点,数据在 TiKV 节点之间冗余复制,并放置在不同的可用区中,以防止机器或数据中心发生故障。TiDB 提供自动故障转移,从而确保系统正常运行时间。此外,TiDB 提供了多种灾难恢复解决方案,每种解决方案都适用于不同的场景,成本灵活。
2.4 MySQL 兼容性
TiDB 与 MySQL 高度兼容,因此 Bolt 的工程团队无需改造就可以很容易将数据迁移到 TiDB。大大节省了时间与成本。此外,TiDB 可以与 Kafka 和 Kurbenetes 等主要技术堆栈良好集成,也可以在 AWS 上完美运行。
2.5 云原生
TiDB 基于云原生架构,充分利用了云的可扩展性和弹性,并被设计成可以在云、私有环境或混合环境中工作。TiDB 的云原生能力允许用户根据需要进行扩展,以满足不断变化的业务需求,而成本始终保持在控制范围内。
此外,当将 TiDB 与 Kubernetes 结合使用时,用户还可以:
● 确保开发和部署环境的一致性;
● 根据需要实例化一个新的节点,无论是为了适应增长,还是为了取代一个丢失的节点。
2.6 极具成本效益
同时,TiDB 也是一个具有绝佳成本效益的解决方案:
● 强大的数据压缩能力降低了存储成本。例如,一个 4TB 的 MySQL 表在迁移到 TiDB 后可以压缩到 2TB 以下。根据 Bolt 的经验,TiDB 的平均压缩率在 3 倍左右。根据数据类型,速率可能会略有变化——有时会更多,有时会更少。
● 具有简化的 HTAP 架构,可以同时处理事务和分析工作负载。
● 可以根据业务需求,分别水平扩展或缩小计算和存储资源。
● 易于操作和维护,大大降低了维护成本。
● 具有良好的 MySQL 兼容性,迁移过程平稳轻松。
● 支持使用 Graviton2(Arm64)在 Amazon Elastic Kubernetes 服务(EKS)上进行灵活部署,从而实现更好的性价比。
在部署、迁移和使用 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 进行实时分析查询,获得更加实时的数据洞察。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。