闲话淘宝网和新浪微博架构

11-08-25 banq

如今分布式系统在国内已经不是新鲜事,NoSQL之花遍地开,我08年就诅咒的关系数据库虽然僵而不死,但其已经威力和影响力已经日渐式微,至少没有完全占据新兴需求市场。

淘宝网和新浪微博我都有使用,虽然深知其中架构之路坎坷,但今天写这个闲话不是夸耀追捧,而是作为一个懂行的使用者如何从用户体验角度来感知其技术架构特点:

淘宝网和新浪微博两个有明显极端:前者比较注重数据的及时更新,也就是高一致性,写入提交很快,但是读取数据时会丢丢拉拉;后者则相反,读取相当快,但是提交微博或评论等写入动作时却经常停顿延迟甚至失效。

从业务上讲,淘宝网确实是电子商务系统,和钱打交道比较多,好像这很符合关系数据库的高一致性要求,实际上,如果对业务进行细分,电子商务系统中高一致性要求范围比较小,按照ebay架构来看,约占据10%不到。如果不对自己的业务应用进行领域量化切分,会将高一致性扩大化,造成的表现就是写数据很快,读数据慢甚至无反应。

而新浪微博则是一个社区系统,根据其业务模型,好像几乎不需要高一致性,但是如果也不对业务进行领域切分,那么一致性将会丢失,甚至影响可靠性,微博用户可以忍受读不到数据,但是不能忍受无法写入数据,甚至提交微博时要再三确认,虽然一条废话没有存钱那么重要,但是要让用户自己去确认是否写人,这样用户体验真的很差。

总之,技术架构是一种平衡,只有对业务进行细腻的领域切分,才能真正做到有的放矢,技术架构还要摆脱自己屁股的影响,特别是过去的丰富关系数据库经验会培养人一种没有意识到惯性思维,从而让自己的脑袋无法真正做到平衡决策。

最后,衷心希望两家先驱者能够更上一层楼,利用良好宽松的资本环境,将业务分析方法引入技术架构,没有通用架构,只有合适的架构,合适与否取决于你对业务模型的透彻认识。

[该贴被banq于2011-08-25 10:17修改过]

                   

40
jdon007
2011-08-26 11:34

2011年08月25日 10:12 "@banq"的内容
淘宝网和新浪微博两个有明显极端:前者比较注重数据的及时更新,也就是高一致性,写入提交很快,但是读取数据时会丢丢拉拉;后者则相反,读取相当快,但是提交微博或评论等写入动作时却经常停顿延迟甚至失效。 ...

根据CAP的理论,淘宝网注重“一致性”(C),新浪网注重“交互性”(可用性,A)。在集中式系统中,这两者本来是“鱼和熊掌可兼而得之”。

为什么不可兼得呢?问题出现在“P",即分区容忍性。分“区容忍性”实际上是“分布性”或“并发性”的同义词。在分布式系统中,一致性与交互性在追求极致时,会出现不可调和的矛盾。一致性要求可靠(准),交互性要求有效(快),而事实往往是“慢工才能出细活”。

banq
2011-08-26 11:39

2011年08月26日 11:34 "@jdon007"的内容
根据CAP的理论,淘宝网注重“一致性”(C),新浪网注重“交互性”(可用性,A) ...

是这样,但是注意有一个前提,是对待特定业务模型,有些需要高一致性的业务模型就用CP,而有些应该用AP,而不是笼统地都用CP。这涉及业务领域的细分。

所以,在一个云计算环境中,我们可以根据我们业务特点选择不同的C或A,比如支付系统这样高一致性业务,我就直接选择关系数据库,如Amazon RDS;而对一致性要求没那么高,比如产品目录浏览 搜索等,那么我就选择NoSQL,如Amazon的SimpleDB;如果我用来存放的是静态文件,那么就可以选择CDN。

而如果不建立一个Paas,则容易发生眉毛胡子一把抓的情况,陷入细节纠结中,顾此失彼。

我楼上这篇文章是试图从一个总体论角度,不管云计算,还是自己做分布式,最终体现在用户端的读写这两个指标上,体现在延迟性和吞吐量这两个硬性指标上,你想推更多数据量吞吐到用户端,或者接受更大规模用户的大数据提交,会产生时间上延迟,如果后面的架构设计得不好,这种延迟就会妨碍用户感受。

架构上可接受的延迟是不能妨碍用户感受的,如果无法避免停顿长延迟,至少要每次给用户感受是平滑的,也就是不能时而停顿时而平滑,那就是后台动态扩展性Scalable设计得不够好了。这就像吃饭,如果囫囵吞进去,会难以下咽;相反,细细嚼碎(将一个页面的综合业务细细分离,调用不同的后台架构),反而非常平滑。

[该贴被banq于2011-08-26 17:58修改过]

banq
2011-08-28 19:02

女人找男朋友的CAP定理 和程序员找分布式架构的CAP定理:



liujian1979
2011-08-29 09:53

我从06年开始认识淘宝并在淘宝上开始购物,一直到今年年初还感觉淘宝搜索和查询都很快,但到今年4-5月份至今发觉访问和打开淘宝网页速度和查询速度明显变慢了很多,尤其是很多店家网页第一次打开不全,需要刷新几次才能打开全的问题很是郁闷!对于淘宝现有的用户量和店面数,解决高延时应该是当务之急了,要不不管是商家还是顾客都无法忍受刷几次页面才能打开页面的情况。总的来说就是上淘宝的用户感受度明显感觉低了很多。希望淘宝技术人员能尽快的解决这一问题。

新浪微博的感受还挺好,提交慢是在可容忍范围内,感受不明显。

其实CAP不管是在淘宝还是在新浪微博,要运用到恰到好处都是很难!尤其是淘宝的业务复杂度越来越高。对于中国这个浮躁的社会,精耕细作不仅仅考的时候雄厚的资本。国情和环境决定了应该滋生什么样的公司!也许有些小公司开始并比Facebook差(理念和创新),但因为生长在中国,很快就被掐死在萌芽状态!

猜你喜欢

3Go 1 2 3 下一页