Posted in

YouTube 如何利用 MySQL 支撑 24.9 亿用户?_AI阅读总结 — 包阅AI

包阅导读总结

1.

关键词:YouTube、MySQL、可扩展性、Vitess、用户数据

2.

总结:YouTube 由三个 PayPal 前员工创建,起初将用户数据存于 MySQL,因用户增长采用领导者-追随者复制拓扑扩展,后通过添加缓存等解决问题,仍面临新挑战,最终创建 Vitess 实现可扩展性,服务 24.9 亿用户,表明 MySQL 能处理大规模流量。

3.

主要内容:

– YouTube 的起源

– 由三个 PayPal 前员工创建,最初为约会网站,后转型为视频共享网站。

– MySQL 的应用与挑战

– 存储视频标题、描述和用户数据。

– 领导者-追随者复制拓扑存在单线程复制限制,追随者难跟上新数据。

– 虽通过添加缓存等暂时解决可扩展性问题,但分片后事务和连接困难,存在读取陈旧数据等新问题。

– Vitess 的解决方案

– 安装边车服务器 VTTablet 控制 MySQL 服务器和管理备份等。

– 设置无状态代理服务器 VTGate 路由查询。

– 用分布式键值数据库存储元信息,使用 Zookeeper 实现,通过 HTTP 服务器 VTctld 保持更新。

– YouTube 借助 Vitess + MySQL 服务 24.9 亿用户,证明 MySQL 可处理大规模流量。

思维导图:

文章地址:https://mp.weixin.qq.com/s/Gx5rXkb_DE9tBkAyYhabIw

文章来源:mp.weixin.qq.com

作者:Neo??Kim

发布时间:2024/6/23 17:32

语言:中文

总字数:1617字

预计阅读时间:7分钟

评分:91分

标签:MySQL,Vitess,可扩展性,YouTube,数据库


以下为原文内容

本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com

从前,三个PayPal前员工决定建立一个约会网站,然而他们的商业模式失败了。

因此他们转而创建了一个视频共享网站,并将其命名为YouTube。

他们将视频标题、描述和用户数据存储在MySQL中。随着用户增加,他们采用领导者-追随者(Leader-Follower)复制拓扑设置 MySQL 来扩展。

MySQL 中的领导者-追随者复制拓扑

MySQL中的复制是单线程的,因此,追随者无法跟上领导者的极端写入操作的新数据。

YouTube的增长速度是爆炸性的,其用户数达到惊人的十亿,成为世界上访问量第二大的网站。


因此,他们通过添加缓存进行了横向扩展,并预加载了MySQL二进制日志中的所有事件。这意味着复制变得受内存限制,速度更快。

尽管这暂时解决了他们的可扩展性问题,但新的问题又出现了,比如:

MySQL必须分区以处理存储需求,但在分片后,事务和连接就会变得困难,因此应该使用应用程序逻辑处理。

这意味着应用程序逻辑应该找到要查询的分片,这会增加停机的可能性。

领导者-跟随者复制拓扑导致从跟随者读取陈旧数据,因此,如果需要新鲜数据,应用逻辑必须将读取路由到领导者。

这需要额外的逻辑实现。

有些查询可能需要太长时间才能返回数据,同时,太多的MySQL连接可能存在问题,会使数据库崩溃。

他们希望在MySQL之上建立一个抽象层,实现简单性和可扩展性,因此,他们创建了Vitess。

以下是Vitess提供极端可扩展性的方式:

他们在每个MySQL实例前安装了一个边车(sidecar)服务器,并称之为VTTablet。


VTTablet作为边车服务器运行

作用:

  • 控制MySQL服务器和管理数据库备份

  • 通过添加限制子句重写昂贵的查询

  • 缓存频繁访问的数据以防止出现惊群问题

设置了一个无状态代理服务器来路由查询,并称之为VTGate

VTGate将查询路由到特定分片

作用:

使用多个VTGate服务器进行扩展

同时运行多个VTGate服务器来实现扩展。

设置了一个分布式键值数据库来存储有关模式、分片方案和角色的信息。

存储元信息的键值数据库


键值数据库还处理数据库之间的关系,如领导者和跟随者。

YouTube使用Zookeeper来实现键值数据库,并将这些数据缓存在VTGate上以获得更好的性能。


更新键值数据库

他们运行了一个HTTP服务器来保持键值数据库更新,并称之为VTctld。它获取所有服务器及其关系的完整列表,然后更新键值数据库。

Vitess的高级架构

YouTube工程师们用Go编写了Vitess并将其开源,并支持MariaDB。

YouTube通过Vitess+MySQL组合就能服务24.9亿用户,该案例研究表明,MySQL可以轻松处理互联网规模的流量。

  • Vitess Official Site

    https://vitess.io/

  • Do Mysql slaves run multiple threads to read the Relay log to sync up the Master’s operation

    https://stackoverflow.com/questions/35256926/do-mysql-slaves-run-multiple-threads-to-read-relay-log-for-sync-up-masters-oper

作者丨Neo Kim 编译丨onehunnit

来源丨newsletter.systemdesign.one/p/vitess-mysql?utm_source=profile&utm_medium=reader2
*本文为dbaplus社群编译整理,如需转载请取得授权并标明出处!欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn