淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
文章目录
- 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
- 本文导读
- 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通过多个节点之间的协作,使得整个分布式系统具有高可用性和高性能。
总结
综上所述,淘宝的数据库架构设计采用了分布式数据库技术,通过分库分表、数据冗余、异步复制、读写分离等技术手段来解决数据库的性能、可用性和扩展性问题。同时,淘宝还采用了一系列中间件来协调分布式系统的操作,保证了数据的一致性和高性能。这些技术手段的综合应用,使得淘宝的数据库能够承受双十一这种高并发、高压力的交易活动。
淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。相关推荐
- 《沈剑架构师训练营》第5章 - 数据库架构
21.数据库:读性能要如何提升? no21:数据库工程架构,要设计些什么呢? 1.根据「业务模式」设计库表结构 2.根据「访问模式」设计索引结构 no21:数据库工程架构必须要考虑哪 5 个因素? 读 ...
- 淘宝十年资深程序员在面试中最爱问的秒杀的面试题
淘宝十年资深程序员在面试中最爱问的秒杀的面试题 文章目录 淘宝十年资深程序员在面试中最爱问的秒杀的面试题 1.什么是秒杀?秒杀是什么场景? 2.秒杀场景下有哪些挑战?如何应对这些挑战? 3.如何防止商 ...
- 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料
淘宝技术架构变迁 自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长.创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux ...
- 阿里十年资深程序员吐血总结之Java代理模式
阿里十年资深程序员吐血总结之Java代理模式 文章目录 阿里十年资深程序员吐血总结之Java代理模式 1.接口代理 2.类代理 3.动态代理都是通过反射实现的吗 4.jdk动态代理和cglib动态代理 ...
- 一线Java架构师概括互联网公司的标准Java技术架构
一线Java架构师概括互联网公司的标准Java技术架构 大部分人对于BAT的技术有一种莫名的崇拜感,觉得只有非常牛逼和天才才能做出现在的这些系统,但经过前面两篇博文的分析,我们可以看到其实并没有什么神 ...
- 华为架构师8年经验谈:从单体架构到微服务的服务化演进之路
本次分享的技术大纲如下: 传统应用开发面临的挑战 服务化实践 服务化不是银弹 服务化架构的演进方向 一 .传统应用开发面临的挑战 挑战1-- 研发成本高 主要体现在如下几个方面: 代码重复率高 在实际 ...
- 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用 ...
- python架构师是做什么的_架构师成长之路(1)--什么是架构师
前言: 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知. 如果我们要成为架构师 ...
- 架构师成长之路 1 --什么是架构师
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 前言: ...
最新文章
- 三剑客”之Swarm应用数据持久化管理(volume 、bind 、 nfs)
- [改善Java代码] 避免instanceof非预期结果
- PHP与Python哪个做网站产品好?
- php数组添加省会城市,【JSON数据】中国各省份省会城市经纬度 JSON
- TortoiseSVN客户端重新设置用户名和密码[转]
- Do not mutate vuex store state outside mutation handlers.
- mysql的安装和基本命令_MySQL安装以及简单命令用法
- 使用jquery当页面打开时,将修改样式的点击事件绑定到Dom
- [转载]博客园MetaWeblog使用帮助
- 填写数独 洛谷P1784
- [ICPC USA]Faulty Robot
- 人们有时对机率存在的错误的认识
- Eclipse英文版视频教程(from Carleton University)
- 视频会议新格局确立 云计算开启技术叠加时代
- Android showStatusIcon on inactive InputConnection异常
- DNS服务未响应的简单解决办法
- 使用Windows任务计划自动运行Python程序
- 基于Servlet的验证码登陆demo
- properties配置文件中 不能输入中文
- 【修真院java小课堂】clean,install,package,deploy分别代表什么含义?