互联网公司技术架构资料.新浪微博.构建高性能的微博系统.pdf
- 文件大小: 10.31MB
- 文件类型: pdf
- 上传日期: 2025-08-17
- 下载次数: 0
概要信息:
Build High Performance
Weibo System
@TimYang
• µQìNJ
• 140
• āÔ6ď6ŋçÉƛ
• ÚÏŷŴǂƇZWuġǂŮƹń
*
IJ6Ěų
• DŽü§_ÆİµQŋŕDžQCon 2010
• D޵Qþü`5DžWDC 2010
Agenda
12
3 4
Part 1
ēƥ3
ĉƐúãŲ¯Ljơ?Ų¯\ï
ƵŬRçYëDJŋŕ(ŧ»)Lj
+ů;NJ
MySQL
• ƙdēƥ3Lj_âÌ?Æ
• Œşƾ
Ì?Ņĭ
• Ò hash Ì?
• ŗ¥Lj6ŋ
• ŏō¬Lj user_timeline index
ƪƺ
• Pù»ťƮEǂƵŬÏŖÌ?
• ŶƪƝ¥Ƶċ
• īÄ
• 6ŋLjĉĺ 5 Ą
• ¦Ɩ
MySQL + cache ƪƺ
• ƴ
• ŧ»
• cacheßÔʼnyLjƵŬ¡AN
• ƻ~¨Ƨ
• ĖIW0Ûƪƺ
NoSQL
“Databases are specializing – the “one
size fits all” approach no longer applies.”
MongoDBŵűo
NoSQL?
• PùºƆ
• Redis
• MongoDB
• ?«ºƆ
• Cassandra
• HBase
īƨęmİFØú#ìĕ4
ůİ(ǃ
ģ»ĊƉ
• MongoDB
•Redis
• HBase
• Cassandra
Redis - Ïä«
• ÏN3ă«Ĩů
• snapshot -
Đ
• vm - ,ŠÜª
• diskstore - ,Šãäh
• aof - Ƥ§¿
Redis - ßÔʼny
• string: key value redisObject 16 bytes/item
• list: XhƦū 40 bytes / item
• hash: zipmap(<64)
• set/sorted set
Redis - Replication
• Ƥżrdbá#ƪƺ
• ĵħņP
Redis - ƥŭ@
Redis - (
• ƵŬǀƝż:Ŷƪ
• ť¶Ĵõ_īLjåÁğfailoveräĂ
• ólist/setßÔœüƵċ(optional)
ēƥ3
• MySQLLjŒşƾİēƥ3
• NoSQLLj{ŪMySQLcacheƫĿƲLj
'ìƵŬódƙİƽƼťG
Part 2
çűŇ
µQþü
(ŃĢ)
,
$
*#(
0%3
4#
5)
1,
"
52
86)&
7
+'4 -
!0,
/.
ôJ→Õ]→£ī
ƪƺ
ơ?WebŋŕĩƸwcacheßÔ
ŶƪLjīUŚìiƄNJ
_īİcacheƀęÜÅóĝěß
ÔLjŧßÔIƈæƃŘ¿
• ÆNJ
• =ŽNJ
“Web ŋŕī json û3W cache ƶ
ĒſǃúµQī json ßÔœüûÅ
óĈ(MÎ,Š/¼)LjƵŬ2~5KŨ
a, ī xml ƵŬ10ka, ī protobuf ¡A
NgLjŎ^ó500Ũǃ”
3ò6æ 00:47 ƇZ(495) | ŷŴ(134)
Tļ
RDBMS→
Key value (JSON)→
Protocol buffers(binary)
JSON Ĝ½
• DB
• Cache
• Message Queue
• API
PB $L
• Numeric: varint, from 1 byte
• &ƊřbLj&ƊĈfĻ
• ÚÏŻŰljJava, C++, Python...
• řůĵǀÞ
• cache ñőœýDƫœýLjƓć
ŨŎĿƫ
• “192.168.0.1” → “0xc0a80000” → varint
Benchmark
TextText
(http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking)
“We would like to provide public APIs that
accept protocol buffers as well as XML, both
because it is more efficient and because we're
just going to convert that XML to protocol
buffers on our end anyway.”
- Google
ßÔœüLjRìŝ
©ć}ĨƵċ
• µQİZūì©ć}Ĩ
• ưij`£ī|Lj£īIJ6ßÔÙ
,ƚėƇh©ćä«
• 7ƵŬ©ćİÙ,NJ
ƪƺ
ưijŋŕ|Lj“Ő>ƪƺ”¾<
|LjƗľVr²ơ?ìĬ¨Z
j©ć}Ĩśĕ¥Ĩůǃ
• &ŕ LAMP £īLjP
Ù,ćƿ|
W}Ĩçƫ|à*»ť±nǃ
• ©ćƬA}Ĩļ¡ 1ms İ}Ĩçƫ¦
Ʃ_ť%¬ƂƕƨY£WJÝƳǃ
• çıÖƬA}Ĩ»ťÑÿßÔǃ
©ćıÖ
• MQ stat
• MQ Processor stat
ƪƺ
èêīÄįŊ LjßÔ+çÉ
ƛDÅóīÄ?
íķó“1úãŷŴ”Ljě¨SČ
óßÔNJ
ç»ŧ»
• TimelineĔ¼ĐLjűßLj6ŋ\ïńJ
ƵŬWçÉƛŔÅóīÄ
• ůƯŢdLjHťĬeôJÁ
• ©ć}Ĩ
• : cache ßÔ¢?¨
• RAMN
ŞİZūĐļ
1. ØZū
2. 4ƬA
3. ƬA}Ĩļ¡ż>
4. :cacheWßÔ¢master
5. ßÔ¢replicationDÅóŨě
ƪƺ
ƪƺ
• Ń5ćLjĶxç»Wŧ»
ƪƺ
• Ń5ćLjĶxç»Wŧ»
• ÛƓäĎ
ƪƺ
• Ń5ćLjĶxç»Wŧ»
• ÛƓäĎ
• Ɠć©ć}Ĩ
ƪƺ
• Ń5ćLjĶxç»Wŧ»
• ÛƓäĎ
• Ɠć©ć}Ĩ
• ƬA?ŏ
ć
• RAM is the new disk
• ÅóĝěßÔIƈD9
äĎ
“Percona Server now both SQL and NOSQL
HandlerSocket, ÔĻİđŹôJp_!ƅD
100rpsLjƣŜì12cores/24threads and
380GB of RAM, mysqlýƒĀīì
RedisLjÅóßÔƢID9Lj-īNoSQLä«
ûŶƪ”
2010-12-25 00:22 ƇZ(9) | ŷŴ(2)
@jackbillow “ 1. ØOPKİlookup 2.ð cache
džňĨäƷLJ”
@kobe “ ƑìƏŗÁ÷)LjÐinnodbİźVó
İ85ťī”
@TimYang “ýū_!5ơÜ49Lj
InnoDB%ŦKC§
Adaptive Hash Indexesdžz
hashİ9ō¬LJ!ƋD9ßԢݻť”
äĎ
• NoSQL®,ßÔİż¢
• Ɯƍƫ ļ¡ż[binlogÜ4Redis
• jbinlog https://github.com/tangfl/jbinlog
Part 3
`Õ]
ĘÀŭBŒZĪ\NLjmİł
Ƈ\`lappιvƫİł
Õ]ŵűŬŌ
• 5
• Ʊĸ.Ë
• spam
• éī
• Ľ
Text
5t?İ
Õ]n£ç
ƫW_ī»
ıÖ
7$N
• ÇƥŶƪÕ]
• GZIPUŚ
• ×ƘÕ]
Part 4
ôJčĨ
µQñ>ħ±n»ťVrìNJ
“@ƠĦZheng:“Ġ|³ljưijŋŕİÏŖƏ
ũLjĠ1ƃåƮ|ƩǃÂ"İƏŗţžì
ÏŖÊĠ|Lj _ťƭ)Ġ1ǃ” //@Įǁ:
þüİH¤ìÖEĠǃ
@bianljî"Ġ" http://t.cn/h0k4r VáƇ
Z(49)|VáŷŴ(15)”
2ò14æ 10:36 ƇZ(22) | ŷŴ(10)
čĨljƤü
• 2=ĎLjšì2IĎǃ
• ãJƟ´ƒ
VBǃ
čĨljƥ
• ƥŭ@WıÖ
• ƥöŭ@LjöóÞıÖħóŋŕ
• ŋŕŀĞ\¿Ljť¸Ɲ(
• JƌƝ|ƩŔƥŭ@ûÓÃ
čĨljŸâ
• Ɯƍæ·lu°8ZħcĹ©
• Õ]n£Ɲ¥
• Ĕ¼}ĨƝ¥
• cachekĥ
• ƌƝ(ƪƺťG
čĨqljƭŏ
• P
Jƪƺ¬ZƕƨYëLjƞÁà
*}Ĩ»ťƭǃ
• ƭŏLjĉ
J|IĤٍ6Hť
)$
!
(
*, -&
MySQL
Redis
Memcached
Timeline
)
%
#"
,
'
!
+
ć
• 2=ĎLj_!ƁïƔ
• ïİßÔRAMN
• ïİ?«ä«
Q&A
@TimYang
ąƎI4ãǵQÈøsƬ
ƩõÍŤ
杭州站 ·∙ 2011年10月20日~22日
www.qconhangzhou.com(6月启动)
QCon北京站官方网站和资料下载
www.qconbeijing.com
当前页面二维码