产品的质量依赖于过程的质量, 而过程的质量依赖于企业文化和管理! 欢迎大家来到我的小窝~!

twitter 架构 解读

上一篇 / 下一篇  2011-09-02 09:20:28 / 个人分类:DBA手记

1.      关于增量出现的问题。51Testing软件测试网F [3n0\2R pvy7A

ERROR: index 'add_market_ask': sql_query_range: : macro '$start' not found in ma51Testing软件测试网V;eC Q8O}.s"c.v"f'rz

tch fetch query.51Testing软件测试网yf/\!?.f

 

NciYnU3o N0

问题:主索引源没有定义范围值。对增量的原理没有深入了解

!^X/M4v |j[0

解决办法:在主索引的后面加入where askid >= $start AND askid <= $end即可解决问题51Testing软件测试网\o4t7FR&mx

 

'F~?sUh o0

1.      关于twitter的架构方案的分析。51Testing软件测试网5b:e1OK1Z/n

Twitter背景

*Qxm3})w0

作为世界上最大的微博客的网站

"hVEJ;K,O&OB'H0

 日访问量2亿         独立ip 1.39亿51Testing软件测试网U~L2BUk nBz

 作为这么大的流量,能支撑的服务器的架构会是怎么样的呢。

;L4a9`n?'Kk8_ M4s0

 51Testing软件测试网|#P1v)w5S'?0d

对他的整体架构进行了分析。51Testing软件测试网'?I k~"r

主要关注点:tweetstimelinesocialgraphs实时索引

w@Y2_J p&G0

下面是twitter架构关于cache方面

B?o\e#T mI}0

51Testing软件测试网 W9qj E+x)D&g

 

$k5X*Bv8a0

Twitter的MQ很简单:基于Memcached的协议,job之间是无序的,服务器之间没有共享的状态,所有的东西都保存在RAM里,并且是事务性的。51Testing软件测试网^7Nj)@1wo#Dk"Q

消息消息队列的控制51Testing软件测试网 u{z7x0mf H,y

 51Testing软件测试网Y6JA.sS AS

Tweet

|-x ]'bDm Y0

查询分区(idauthor

+wx_@D}+|K0

行存储

V!z{ L_J9?0

主从复制,memcache的读缓存

-MF#F'tjv i0

51Testing软件测试网%~2QX4[_`

单表,垂直切分,关系型51Testing软件测试网9w5G.U7lN1Hd&h

按用户id进行分区

F,qLH0@"D,~3m-v P0

根据时间对用户id进行分区

/y d+H'GZv5i0

 51Testing软件测试网xK$lM,`5c

从上可以看出,twitter用了目前最流行也是最土鳖的办法。51Testing软件测试网6gY+f+N I

 

%l^)_3ayJ)Rw0

他未来的方向

a5iz:w#O,A'W0

@ Nosqlcassandra

#wq9~AQ m9X3Z]U)O{%i0

Ps:与mongodb的区别

Vr?Ifw)x_0g$w0

@主键分区51Testing软件测试网X/[~UmPF

@二次索引在userid     51Testing软件测试网/uG-wf5l:{ V

Ps:此方面需要突破,若能利用起来,效率会提高许多。       51Testing软件测试网s!w0`yItH}(v/m:u

@Memcache缓存达到90%       

#UQ"D[3O s A0

Ps:目前我们对于memcache的命中缺少评估和存在滥用memcache命中低的问题 51Testing软件测试网 u#t h7W5z/\q H.[

 

{c|9pH"h0

Timelines51Testing软件测试网0J8aVW7]Yzn

顺序行id51Testing软件测试网%[swOn8^5y7pS(rW

查询分区get by user_id51Testing软件测试网So _ Y*~

增加,合并,截断

?_(mK-bB7X0

高缓存载体51Testing软件测试网T0KUq-Z

基于空间变化??51Testing软件测试网#R/N d0E$a(U

 

B~QTl(}p0

Select * from tweets where use_id in (select source_id from followers where destination_id=?)51Testing软件测试网[wl7H*^1]XQ

Order by created_at asc limit 2051Testing软件测试网D:Q:w9W&DN

Ps:这句如果存在大量的source将会导致速度很慢

&NB+Tkh:[dT4s0

因此提出了,用memcache的顺序存储51Testing软件测试网mWeI[V

Low latency sla

/_8Ya4]Z-\G|?{e v0

Truncate51Testing软件测试网.`\#F4L\U-zB4~)qR

合并timeline51Testing软件测试网!Wo0m'DUGt+QF

pT`6Mhj0

Ps:此方式不是很明白。51Testing软件测试网b)|M;^(~u5g,G

 51Testing软件测试网^Pw-u o e-c3poP cI,q/s

)g4E;rj~#z]Y*j4K0

文档分区51Testing软件测试网M2WT"u8^)FKi

时间分区

!]Q6T-P'iM w0

合并层

5K9M;@ t!m:_0

lucence 代替mysql51Testing软件测试网_N9W,Sp%D5[L-?{K

 51Testing软件测试网FT*`$Q/N.j A

 51Testing软件测试网H,G!Z1Y/y?O oZ

Twittercursor方式进行Web数据分页

d$c [2Y9@%s(N2CS v)k0

翻页到100000

U:Yimfe)zp0

select * from msgs limit 100000, 10051Testing软件测试网{ zU0WQJOb

使用cursor分页方式对应的SQL可以优化为

GZ ~-^QbO*M0

select * from msgs where id > cursor_id limit 100000;51Testing软件测试网D&~#K v5kv Z0G

按照这种效率效率提高很多

A3Oa0Lz#Jt0

 51Testing软件测试网?|bg4h"mf

 51Testing软件测试网j Gv1I)_1|2u

high-velocity bounded vector 高缓存51Testing软件测试网VTSFE!mu!C

low latency低延迟

4pw L|*d9r]7\2X0

principles 原则

E+k+|&W5v1\!i$^O0

 51Testing软件测试网Qj.K m z6z1c3O


TAG:

 

评分:0

我来说两句

日历

« 2024-04-09  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 50656
  • 日志数: 65
  • 文件数: 1
  • 建立时间: 2010-11-23
  • 更新时间: 2011-10-18

RSS订阅

Open Toolbar