淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
文章目录
- 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
- 本文导读
- 1.分库分表
- 2.数据冗余
- 3.异步复制
- 4.读写分离
- 总结
本文导读
淘宝的数据库架构设计采用了分布式数据库技术,通过分库分表、数据冗余、异步复制、读写分离等技术手段来解决数据库的性能、可用性和扩展性问题。
1.分库分表
分库分表是将数据分散存储在多个数据库和表中,以提高数据库并发性能和扩展性的技术。淘宝采用了基于业务的分库分表架构,将每个商品的信息存储在不同的数据库中,每个数据库再细分为多个表,每个表存储某个商品的某个信息。这样可以避免单个数据库或表的容量限制,同时也方便水平扩展。但是,分库分表后,跨库查询和事务处理会变得复杂,所以需要使用中间件来协调分片之间的操作。
淘宝采用了TDDL(Taobao Distributed Data Layer)作为分库分表的中间件。TDDL是一种分布式数据库访问层,它负责将用户请求路由到相应的数据库分片上,协调事务、缓存和分片操作,以保证数据一致性和高性能。TDDL采用了类似于Mysql Proxy的架构,通过动态拦截和修改JDBC API调用来实现数据库访问和控制。

2.数据冗余
数据冗余就是将同一份数据存储在多个地方,以提高数据的可用性和容错能力的技术。淘宝的主数据库会实时同步到多个备份数据库中,一旦主数据库出现故障,备份数据库会自动接管工作。同时,淘宝还使用了多副本存储技术,将数据存储在多个节点上,保证了数据的高可用性。
淘宝采用了Mycat(MySQL Cluster Autonomic Tuning)作为数据冗余的中间件。Mycat是一种分布式数据库中间件,它提供了数据分片、数据冗余、读写分离、动态路由、故障切换等功能,可以在多台MySQL服务器之间分配和复制数据,提高数据库的可用性和容错能力。

3.异步复制
异步复制就是将主数据库中的数据异步复制到从数据库中,以提高数据库的读性能和可用性的技术。淘宝的主数据库会定期将数据同步到从数据库,保证从数据库的数据与主数据库同步。
淘宝采用了Canal作为异步复制的中间件。Canal是一种基于MySQL数据库日志增量订阅
Canal是一种基于MySQL数据库日志增量订阅和消费的中间件,它可以将MySQL的数据变更实时地转发到消息队列或者其他存储系统中。淘宝通过Canal将主数据库的数据变更实时地同步到从数据库中,以提高从数据库的读性能和可用性。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kpFE729E-1678329545540)(null)]
4.读写分离
读写分离就是将读操作和写操作分别路由到不同的数据库服务器上,以提高数据库的读性能和可用性的技术。淘宝的主数据库处理写操作,从数据库处理读操作,以减轻主数据库的负担,同时提高从数据库的读性能。
淘宝采用了Alibaba Cobar作为读写分离的中间件。Cobar是一种轻量级的分布式数据库中间件,它可以实现数据库的读写分离、负载均衡和故障切换等功能。Cobar通过多个节点之间的协作,使得整个分布式系统具有高可用性和高性能。

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

相关文章:
淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。 文章目录淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。本文导读1.分库分表2.数据冗余3.异步复制4.读写分离总结本文导读 淘宝的数据库架构设计采用了分布式数据库技术,通过…...
训练自己的GPT2-Chinese模型
文章目录效果抢先看准备工作环境搭建创建虚拟环境训练&预测项目结构模型预测续写训练模型遇到的问题及解决办法显存不足生成的内容一样文末效果抢先看 准备工作 从GitHub上拉去项目到本地,准备已训练好的模型百度网盘:提取码【9dvu】。 gpt2对联训…...
springcloud3 fegin服务超时的配置和日志级别的配置2
一 fegin的概述 1.1 fegin的默认超时时间 默认fegin客户端只等待1秒钟,超过1秒钟,直接会返回错误。 1.2 架构图 1.2.1 说明 1.2.2 启动操作 1.先启动9001,9002 eureka 2.启动9003 服务提供者 3.启动9006消费者 1.3 情况验证 1.3.1 正常默认情…...
华为机试 HJ48 从单向链表中删除指定值的节点
题目链接 描述 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。 链表的值不能重复。 构造过程,例如输入一行数据为: 6 2 1 2 3 2 5 1 4 5 7 2 2 则第一个参数6表示输入总共6个节点&a…...
华为机试 HJ1 字符串最后一个单词的长度
华为机试 HJ1 字符串最后一个单词的长度 文章目录华为机试 HJ1 字符串最后一个单词的长度一、题目描述二、方法一 Java lastIndexOf() 方法三、方法二 Java split()方法使用Java的lastIndexOf()和split()解决求取方法字符串最后一个单词的长度的问题 一、题目描述 计算字符串最…...
从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell
从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell 一、MongoDB基本概念二、文档三、集合1.动态模式2.命名四、数据库五、MongoDB shell1.运行shell2.连接远程MongoDB数据库3.shell中的基本操作六、数据类型1.基本数据类…...
前端实用技巧,JS压缩、美化、JS混淆加密
作为一名前端开发者,关注JavaScript代码的安全性和隐私性,或者需要对JavaScript代码进行美化、格式化、压缩等操作,帮助你提高开发效率和代码质量,利用一个好的工具非常重要。 如果不想让自己的代码被恶意篡改和盗用,作…...
synchronized轻量级锁优化
synchronized优化轻量级锁 使用场景 如果一个对象虽然有多个线程访问,但多线程访问时间是错开的,也就是没有竞争,那么可以使用轻量级锁优化; 原理 1、每个线程的栈帧中有锁记录 包括:记录锁对象的地址Object refer…...
python 日期转换 日期字符相关
python中时间日期格式化符号: import datetime # Fri, 24 Feb 2023 22:23:18 0000 ret datetime.datetime.strptime("Fri, 24 Feb 2023 22:23:18 0000", "%a, %d %b %Y %H:%M:%S %z").strftime("%Y-%m-%d %H:%M:%S") print(ret)%y …...
使用sm4js进行加密和国密sm4的总结
最近在开发过程中,用到了sm4国密加密,因为之前没有用过,所以就想总结一下。 先说一下怎么安装使用(vue项目) 1、先安装sm4js npm i sm4js在package.json中显示sm4js的版本如下: "dependencies&quo…...
c语言面试题目整理
1、static有什么用途? 在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数 限制变量的作用域,设置变量的存储域。 static 关键字主要有两种作用: 第一,为某特定数据类型或对…...
【嵌入式Bluetooth应用开发笔记】第三篇:初探BLUE ALSA应用开发
概述 BlueALSA(Bluetooth Audio ALSA)是一种将蓝牙音频设备连接到 ALSA 音频系统的桥接程序。它提供了一个蓝牙音频设备的 ALSA 插件,允许使用 ALSA API 直接从蓝牙音频设备读取和写入音频数据,从而使得蓝牙音频设备能够以与其他 ALSA 兼容设备相同的方式工作。 BlueALSA …...
C++基础了解-21-C++ 继承
C 继承 一、C 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,不需要重新编写新的…...
To_Heart—游记——NOI 春季测试
快点投降吧! Day 1 考试了。 10min T1 ,20min 打了 T2 的暴力,发现不会就跑了、 看到 T3 一眼计算几何,不会,去看 T4。看数据范围,感觉是网络流 。大概这个时候已经 1hour 了。 然后挣扎。觉得不能最大流…...
Laya小游戏开发,laya3D美术篇——1——关于laya自带的几个shader的基础运用讲解。
最近三年,基本上做的都是laya小游戏项目。也就是微信小程序,很多业内同行都觉得laya做小游戏不好用,去用了其他平台,甚至还有些做app游戏的,都不来趟laya这个坑。原因有那么以下几点。laya对于unity的辅助开发…...
brew 的安装与使用 (Apple Silicon CPU的Mac机型完成适配)
准备 ARM版Homebrew需要安装在/opt/homebrew路径下,早期的时候需要手动创建目录执行命令,目前使用最新脚本不需要手动操作。 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"然后还需设置环境…...
传输线的物理基础(四):传输线的特性阻抗
特性阻抗和控制阻抗对于一条均匀的线,无论我们选择看哪里,我们都会看到沿线传播时相同的瞬时阻抗。有一个表征传输线的瞬时阻抗,我们给它起了一个特殊的名字:特性阻抗。有一个瞬时阻抗是均匀传输线的特征。我们将这种恒定的瞬时阻…...
(六十九)以MySQL单表查询来举例,看看执行计划包含哪些内容(2)?
今天我们继续来说执行计划里包含的数据访问方式,上次说了const和ref,以及ref_or_null,想必大家都理解了,今天来说说其他的数据访问方式 先说说range这个东西,这个东西顾名思义,其实就是你SQL里有范围查询的…...
Linux发行版的backport
遇到一个问题,简要记录如下: base on ubuntu18.06 4.15内核,这版内核不支持一款intel的集成网卡,追踪内核代码的提交历史才发现,这款网卡是从linux-4.20才开始支持的,系统自带的这个Kernel版本不支持。 如果不允许升级内核,面对这种问题,社区的做法是把新内核的特性cher…...
GitLab 存储型XSS漏洞 (CVE-2023-0050)
漏洞描述 GitLab 是由GitLab公司开发的、基于Git的集成软件开发平台。kroki是一款集成在GitLab的基于文本的图表描述自动转为图片的开源工具,在GitLab 13.7引入。 由于Kroki中lib/banzai/filter/kroki_filter.rb对接收的image_src过滤不严,具有AsciiDo…...
GHelper技术解析:华硕笔记本轻量级性能优化工具架构与配置指南
GHelper技术解析:华硕笔记本轻量级性能优化工具架构与配置指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models …...
阻抗匹配原理与工程实践指南
1. 阻抗匹配基础理论1.1 阻抗的定义与组成在电路系统中,阻抗(Impedance)是对电流阻碍作用的统称,用复数形式表示为:Z R j(ωL - 1/ωC)其中:R为电阻分量(实部)j(ωL - 1/ωC)为电抗…...
OpenClaw跨平台控制:ollama-QwQ-32B同步操作多台设备的配置
OpenClaw跨平台控制:ollama-QwQ-32B同步操作多台设备的配置 1. 为什么需要跨设备自动化控制 上个月我家里添置了三台不同用途的设备:一台用于媒体处理的Mac mini、一台跑深度学习模型的Linux服务器,还有一台Windows主机专门处理文档。每次需…...
C++协程(C++20)原理剖析:co_await的实现机制
C20引入的协程机制为异步编程带来了革命性变化,其中co_await作为核心操作符,其实现机制值得深入探讨。本文将剖析co_await背后的魔法,揭示协程如何通过挂起与恢复实现高效异步。 协程三要素解析 协程由promise对象、协程句柄和协程状态三部…...
LPC11U24内部EEPROM原理与高可靠写入实践
1. LPC11U24 内部EEPROM技术深度解析与工程实践指南LPC11U24是NXP(恩智浦)推出的基于ARM Cortex-M0内核的低成本、低功耗32位微控制器,广泛应用于工业控制、消费电子和物联网终端节点。其片上集成的1024字节内部EEPROM(Electrical…...
分布式缓存一致性:从核心争议到企业级解决方案
分布式缓存一致性:从核心争议到企业级解决方案 分布式缓存一致性是高并发架构中最经典的难题之一。它的本质在于:数据库(如 MySQL)和缓存(如 Redis)是两个独立的系统,我们无法通过单一的本地事务…...
PCB开窗技术:设计要点与工程应用解析
PCB开窗技术详解:设计要点与工程应用1. PCB开窗基础概念1.1 开窗的定义与物理特性PCB开窗是指去除印刷电路板导线表面阻焊油墨层的工艺处理,使底层铜箔直接暴露。在标准PCB制造流程中,所有信号走线默认覆盖阻焊层(Solder Mask&…...
从记事本到IDEA:Java文件编码转换的避雷手册(含BOM字符详解)
从记事本到IDEA:Java文件编码转换的避雷手册(含BOM字符详解) 在Java开发中,文件编码问题就像一颗定时炸弹,随时可能在最意想不到的时刻引爆。特别是当你的项目需要支持多语言,或者团队中有人习惯使用不同编…...
Realistic Vision V5.1 虚拟摄影棚:网络编程基础之构建简易图像生成API服务器
Realistic Vision V5.1 虚拟摄影棚:网络编程基础之构建简易图像生成API服务器 你是不是也遇到过这样的情况:本地跑通了Realistic Vision V5.1模型,生成效果很棒,但想分享给同事或者集成到自己的应用里,就得让对方也装…...
如何永久保存微信聊天记录:WeChatExporter完整解决方案
如何永久保存微信聊天记录:WeChatExporter完整解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机丢失、系统升级或误操作而丢失珍贵的微…...
