当前位置: 首页 > news >正文

淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。

淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。

文章目录

  • 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
    • 本文导读
    • 1.分库分表
    • 2.数据冗余
    • 3.异步复制
    • 4.读写分离
    • 总结

本文导读

淘宝的数据库架构设计采用了分布式数据库技术,通过分库分表、数据冗余、异步复制、读写分离等技术手段来解决数据库的性能、可用性和扩展性问题。

1.分库分表

​ 分库分表是将数据分散存储在多个数据库和表中,以提高数据库并发性能和扩展性的技术。淘宝采用了基于业务的分库分表架构,将每个商品的信息存储在不同的数据库中,每个数据库再细分为多个表,每个表存储某个商品的某个信息。这样可以避免单个数据库或表的容量限制,同时也方便水平扩展。但是,分库分表后,跨库查询和事务处理会变得复杂,所以需要使用中间件来协调分片之间的操作。

淘宝采用了TDDL(Taobao Distributed Data Layer)作为分库分表的中间件。TDDL是一种分布式数据库访问层,它负责将用户请求路由到相应的数据库分片上,协调事务、缓存和分片操作,以保证数据一致性和高性能。TDDL采用了类似于Mysql Proxy的架构,通过动态拦截和修改JDBC API调用来实现数据库访问和控制。

2bbcdd7443819968713d5835fc29a95b.png

2.数据冗余

​ 数据冗余就是将同一份数据存储在多个地方,以提高数据的可用性和容错能力的技术。淘宝的主数据库会实时同步到多个备份数据库中,一旦主数据库出现故障,备份数据库会自动接管工作。同时,淘宝还使用了多副本存储技术,将数据存储在多个节点上,保证了数据的高可用性。

淘宝采用了Mycat(MySQL Cluster Autonomic Tuning)作为数据冗余的中间件。Mycat是一种分布式数据库中间件,它提供了数据分片、数据冗余、读写分离、动态路由、故障切换等功能,可以在多台MySQL服务器之间分配和复制数据,提高数据库的可用性和容错能力。

img

3.异步复制

​ 异步复制就是将主数据库中的数据异步复制到从数据库中,以提高数据库的读性能和可用性的技术。淘宝的主数据库会定期将数据同步到从数据库,保证从数据库的数据与主数据库同步。

淘宝采用了Canal作为异步复制的中间件。Canal是一种基于MySQL数据库日志增量订阅

Canal是一种基于MySQL数据库日志增量订阅和消费的中间件,它可以将MySQL的数据变更实时地转发到消息队列或者其他存储系统中。淘宝通过Canal将主数据库的数据变更实时地同步到从数据库中,以提高从数据库的读性能和可用性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpFE729E-1678329545540)(null)]

4.读写分离

​ 读写分离就是将读操作和写操作分别路由到不同的数据库服务器上,以提高数据库的读性能和可用性的技术。淘宝的主数据库处理写操作,从数据库处理读操作,以减轻主数据库的负担,同时提高从数据库的读性能。

淘宝采用了Alibaba Cobar作为读写分离的中间件。Cobar是一种轻量级的分布式数据库中间件,它可以实现数据库的读写分离、负载均衡和故障切换等功能。Cobar通过多个节点之间的协作,使得整个分布式系统具有高可用性和高性能。

img

总结

​ 综上所述,淘宝的数据库架构设计采用了分布式数据库技术,通过分库分表、数据冗余、异步复制、读写分离等技术手段来解决数据库的性能、可用性和扩展性问题。同时,淘宝还采用了一系列中间件来协调分布式系统的操作,保证了数据的一致性和高性能。这些技术手段的综合应用,使得淘宝的数据库能够承受双十一这种高并发、高压力的交易活动。
在这里插入图片描述

http://www.lryc.cn/news/35919.html

相关文章:

  • 训练自己的GPT2-Chinese模型
  • springcloud3 fegin服务超时的配置和日志级别的配置2
  • 华为机试 HJ48 从单向链表中删除指定值的节点
  • 华为机试 HJ1 字符串最后一个单词的长度
  • 从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell
  • 前端实用技巧,JS压缩、美化、JS混淆加密
  • synchronized轻量级锁优化
  • python 日期转换 日期字符相关
  • 使用sm4js进行加密和国密sm4的总结
  • c语言面试题目整理
  • 【嵌入式Bluetooth应用开发笔记】第三篇:初探BLUE ALSA应用开发
  • C++基础了解-21-C++ 继承
  • To_Heart—游记——NOI 春季测试
  • Laya小游戏开发,laya3D美术篇——1——关于laya自带的几个shader的基础运用讲解。
  • brew 的安装与使用 (Apple Silicon CPU的Mac机型完成适配)
  • 传输线的物理基础(四):传输线的特性阻抗
  • (六十九)以MySQL单表查询来举例,看看执行计划包含哪些内容(2)?
  • Linux发行版的backport
  • GitLab 存储型XSS漏洞 (CVE-2023-0050)
  • HTTPS加密流程
  • Binder通信原理与弊端解析
  • 网络使用情况监控
  • 业务流程图TFD和数据流程图DFD例题
  • react框架基础入门
  • C++ ,JNI, Java 数据传递全解(一)
  • 【Unity逆向】玩游戏遇到的“飞天锁血”是怎么实现的?
  • Spring基础与创建
  • 虚拟机系列教程:虚拟机克隆
  • iperf3主页官方信息
  • Linux-0.11 kernel目录进程管理sched.c详解