SlideShare a Scribd company logo
1 of 64
Download to read offline
豆瓣数据架构实践 
员(yùn)旭(xù)鹏(péng) 
2014-04-19
关于豆瓣 
- 2005 年 3 ⽉月上线 
- 以发现和分享为核⼼心的社区 
- 读书、电影、⾳音乐、同城、⼩小组、阅读、 
FM、东西等等
- 架构变迁 
- ⼏几个问题 
- ⼀一些挑战
一些数据 
- 2TB+ 结构化数据 (MySQL) 
- 3TB+ ⾮非结构化⽂文本数据 (DoubanDB) 
- 100TB+ 图⽚片、⾳音乐等 (DoubanFS) 
- 约 30 个集群 (MySQL) 
- 约 30 对 Redis 
- 约 20 台服务器,⼀一半线上、⼀一半离线 (MySQL) 
- 2 个 DBA (2013.08 前 0.5 个)
Application 
rw 
luz
Application 
rw 
luz 
读压⼒力⾼高
Application 
rw 
luz 
读压⼒力⾼高 
引⼊入 Memcached
Application 
luz 
Memcached 
rw
Application 
luz 
Memcached 
rw 
数据挖掘和推荐反馈
Application 
luz 
Memcached 
rw 
数据挖掘和推荐反馈 
新的 slave ⽤用于离线读
Application 
luz 
Memcached luz slave 
Data mining 
rw 
repl 
read 
write
Application 
luz 
Memcached luz slave 
Data mining 
rw 
repl 
read 
write 
读写压⼒力⾼高,离线写对线上带来冲击
拆库,使⽤用独⽴立的库⽤用于数据挖掘反馈 
Application 
luz 
Memcached luz slave 
Data mining 
rw 
repl 
read 
write 
读写压⼒力⾼高,离线写对线上带来冲击
Application 
elf 
elf slave 
Data mining 
rw 
luz 
luz slave 
read 
repl 
repl 
write 
read 
Memcached
Application 
elf 
elf slave 
Data mining 
MyISAM 全⽂文搜索出现性能问题 
rw 
luz 
luz slave 
read 
repl 
repl 
write 
read 
Memcached
Application 
elf 
elf slave 
Data mining 
rw 
luz 
luz slave 
read 
repl 
repl 
write 
read 
Memcached 
使⽤用独⽴立的搜索引擎 
MyISAM 全⽂文搜索出现性能问题
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
elf elf slave 
read 
luz slave 
Memcached 
Search
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
⼤大⽂文本字段严重影响性能 
elf elf slave 
luz slave 
Memcached 
Search
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
elf elf slave 
read 
⼤大⽂文本字段严重影响性能 
开发 BeansDB,拆分⽂文本字段 
luz slave 
Memcached 
Search
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
elf elf slave 
read 
luz slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
elf elf slave 
读压⼒力增长快 
luz slave 
read Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 读压⼒力增长快 
读写分离 
elf elf slave 
luz slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
read 
elf elf slave 
luz slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
读写分离开发成本⾼高 
read 
elf elf slave 
luz slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
elf elf slave 
read 
读写分离开发成本⾼高 
read 
停⽤用读写分离,继续拆库 
luz slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
rw 
muk 
repl 
muk slave 
read 
elf elf slave 
luz slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
rw 
muk 
repl 
read 
去重、计数代价⾼高 
elf elf slave 
luz slave 
muk slave 
Memcached 
Search 
BeansDB
Application Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
rw 
muk 
repl 
read 
去重、计数代价⾼高 
引⼊入 Redis 
elf elf slave 
luz slave 
muk slave 
Memcached 
Search 
BeansDB
Application 
Memcached 
Data mining 
read 
rw 
luz 
repl 
repl 
write 
read 
rw 
muk 
repl 
read 
Search elf elf slave 
luz slave 
muk slave 
BeansDB 
Redis
- 架构变迁 
- ⼏几个问题 
- ⼀一些挑战
Failover 
Application 
master slave 
Application 
slave master
Failover 
- 早期通过 hostname 访问数据库,切换后需要重启应⽤用 
- skinbark => leaflock
Failover 
- 早期通过 hostname 访问数据库,切换后需要重启应⽤用 
- skinbark => leaflock 
- 后来改为 hosts alias,切换时更新 hosts,不需要重启应⽤用 
- luz_m(on skinbark) => luz_m(on leaflock)
Failover 
- 早期通过 hostname 访问数据库,切换后需要重启应⽤用 
- skinbark => leaflock 
- 后来改为 hosts alias,切换时更新 hosts,不需要重启应⽤用 
- luz_m(on skinbark) => luz_m(on leaflock) 
- 服务器变多,更新 hosts 过程太慢,开发配置推送系统 
- 基于 zookeeper
分库分表 
Application 
Middleware 
luz elf
分库分表 
- sqlstore Python 客户端库,数据库访问中间层,屏蔽分库细节
分库分表 
- sqlstore Python 客户端库,数据库访问中间层,屏蔽分库细节 
- 分库、分表前预发布新路由信息,重启应⽤用
分库分表 
- sqlstore Python 客户端库,数据库访问中间层,屏蔽分库细节 
- 分库、分表前预发布新路由信息,重启应⽤用 
- 应⽤用变多之后重启所有的应⽤用很困难
分库分表 
- sqlstore Python 客户端库,数据库访问中间层,屏蔽分库细节 
- 分库、分表前预发布新路由信息,重启应⽤用 
- 应⽤用变多之后重启所有的应⽤用很困难 
- 基于配置推送系统,亚秒级更新进程内的路由信息 
- 基于 zookeeper + inotify
定位性能问题 
db db
定位性能问题 
- 从 Web ⼊入⼜⼝口处给每个查询增加注释,标明来源
定位性能问题 
- 从 Web ⼊入⼜⼝口处给每个查询增加注释,标明来源 
- 基于 tcpdump + dpark 从旁路分析流量,从多个纬度分析查询
定位性能问题 
- 从 Web ⼊入⼜⼝口处给每个查询增加注释,标明来源 
- 基于 tcpdump + dpark 从旁路分析流量,从多个纬度分析查询 
- 外⽹网 IP 
- ⼊入⼜⼝口 URL 
- normalized SQL 
- 时间 
- …
应对突发的性能问题 
旁路收集 
实时反馈分析修正
应对突发的性能问题 
- 给客户端推送临时的封禁规则,封禁有性能问题的查询
应对突发的性能问题 
- 给客户端推送临时的封禁规则,封禁有性能问题的查询 
- 优化索引,或改写查询、重构应⽤用
追溯问题和审计 
400 
300 
200 
100 
0 
00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00
追溯问题和审计 
- tcpdump 旁路收集并保留历史数据
追溯问题和审计 
- tcpdump 旁路收集并保留历史数据 
- 离线分析数据,追溯问题
追溯问题和审计 
- tcpdump 旁路收集并保留历史数据 
- 离线分析数据,追溯问题 
- 敏感数据访问审计
数据备份和恢复 
- 逻辑备份,恢复很慢 
- 物理备份⾄至 MooseFS 
- 多机房在时间上交错备份 
- PITR(即时恢复)使⽤用 MooseFS snapshot + binlog
监控与报警 
Graphite + StatsD
- 架构变迁 
- ⼏几个问题 
- ⼀一些挑战
连接压力 
- 使⽤用长连接获得更好的性能 
- 每实例 3000 - 5000 连接 
- 基于 proxy 的外部连接池
QoS 
- ⼤大事务 
- 极慢查询 
- CPU 密集型查询 
- 资源隔离
人才的延续
理想的 DBA 
- 扎实的系统管理能⼒力
理想的 DBA 
- 扎实的系统管理能⼒力 
- 掌控 MySQL / Redis / MongoDB / 以及其他 
任何所需系统的能⼒力
理想的 DBA 
- 扎实的系统管理能⼒力 
- 掌控 MySQL / Redis / MongoDB / 以及其他 
任何所需系统的能⼒力 
- 深⼊入研究特定问题的能⼒力
理想的 DBA 
- 扎实的系统管理能⼒力 
- 掌控 MySQL / Redis / MongoDB / 以及其他 
任何所需系统的能⼒力 
- 深⼊入研究特定问题的能⼒力 
- ⾃自动化⼀一切能⾃自动化的东西的能⼒力
理想的 DBA 
- 扎实的系统管理能⼒力 
- 掌控 MySQL / Redis / MongoDB / 以及其他 
任何所需系统的能⼒力 
- 深⼊入研究特定问题的能⼒力 
- ⾃自动化⼀一切能⾃自动化的东西的能⼒力 
- 持续的⾃自驱动⼒力
理想的 DBA 
- 扎实的系统管理能⼒力 
- 掌控 MySQL / Redis / MongoDB / 以及其他 
任何所需系统的能⼒力 
- 深⼊入研究特定问题的能⼒力 
- ⾃自动化⼀一切能⾃自动化的东西的能⼒力 
- 持续的⾃自驱动⼒力 
Don’t Be Afraid!
Q & A 
http://www.douban.com/people/recordus/ 
xupeng@douban.com 
Twitter: @xupeng 
微博:@yunxupeng
谢谢!

More Related Content

What's hot

Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题XiaoJun Hong
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践drewz lin
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案XiaoJun Hong
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pubChao Zhu
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构XiaoJun Hong
 
新浪微博redis技术演化
新浪微博redis技术演化新浪微博redis技术演化
新浪微博redis技术演化XiaoJun Hong
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版XiaoJun Hong
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术团队
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011Yiwei Ma
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构Louis liu
 
艺龙旅行网架构案例分享-Qcon2011
艺龙旅行网架构案例分享-Qcon2011艺龙旅行网架构案例分享-Qcon2011
艺龙旅行网架构案例分享-Qcon2011Yiwei Ma
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术团队
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈Tim Y
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析Leechael
 

What's hot (20)

Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
新浪微博redis技术演化
新浪微博redis技术演化新浪微博redis技术演化
新浪微博redis技术演化
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构
 
艺龙旅行网架构案例分享-Qcon2011
艺龙旅行网架构案例分享-Qcon2011艺龙旅行网架构案例分享-Qcon2011
艺龙旅行网架构案例分享-Qcon2011
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
 

Similar to 豆瓣数据架构实践

Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
Crawler pieces
Crawler piecesCrawler pieces
Crawler piecesYue Tian
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析George Ang
 
Key value store
Key value storeKey value store
Key value storexuanhan863
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijingdrewz lin
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...acelyc1112009
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计RolfZhang
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作FEG
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理Kay Yan
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理airsex
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统智杰 付
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Wensong Zhang
 
淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统Dai Jun
 
Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02lovingprince58
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Michael Zhang
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 

Similar to 豆瓣数据架构实践 (20)

Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
Crawler pieces
Crawler piecesCrawler pieces
Crawler pieces
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
 
Key value store
Key value storeKey value store
Key value store
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统
 
淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统
 
Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 

豆瓣数据架构实践