洪强宁谈豆瓣网技术架构

洪强宁谈豆瓣网技术架构

ID:8151807

大小:25.32 KB

页数:7页

时间:2018-03-07

洪强宁谈豆瓣网技术架构_第1页
洪强宁谈豆瓣网技术架构_第2页
洪强宁谈豆瓣网技术架构_第3页
洪强宁谈豆瓣网技术架构_第4页
洪强宁谈豆瓣网技术架构_第5页
资源描述:

《洪强宁谈豆瓣网技术架构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、洪强宁谈豆瓣网技术架构豆瓣(架构)设计现在在WEB这一端主要是用这么几种技术:前端是nginx和lighttpd,中间是Quixote的Web框架,后面是MySQL以及我们自己开发的DoubanDB。这些除了Quixote都是一些比较流行的、尖端的技术。Quixote稍微老一点,如果要重新设计的话,可能会在这方面做一些考虑。比如Python社区中的Django、Pylons等等都是可以考虑的,那么在豆瓣的内部的话,我们一般是用web.py,很轻量的一个Web框架来做,也是非常不错的选择,它可能需要自己做的事情多一点。但

2、是,也不太可能完全重新设计了。那如果要缓解高并发所带来的压力,Cache的利用肯定是一个非常有效的途径。那么豆瓣的缓存命中率一般是多大?这方面的策略是怎样?Memcache命中率一般都在97%左右,应该还算是比较高的。策略其实是比较简单的,如果每次要去执行一个比较耗时耗资源的操作,比如说去数据库查询的话,就会以Python的Object形式存放在Memcache里面,下次再拿这个数据的时候就直接从Cache中拿就行了。这边选择什么样的东西,尽量有一个Guideline,必须是要耗时的,耗资源的,而且是重复使用的。比如它

3、是耗资源的,但是只用一次,Cache也没有意义。差不多用这种方法保证Cache的东西都是真正有效的,也提高了命中率。要提高承受高压力的流量,另外一个有效的措施是对数据库来进行分区分片,在这方面豆瓣是怎么做的?豆瓣现在还没有达到数据库分片的程度。我们现在最常见的手段是,按照功能分区。我们会把数据表分成几个独立的库,现在是一共有4个库。每个表都是库的一个部分,每个库会有主副两个。通过这种方式来减轻数据库的压力,当然这个是现在的方案,再往后的话,表的行数会增长,到达一定的程度后,还要进行水平分割,这是肯定的。然后我们现在的技

4、术方面,在操作数据库之前,首先获取数据库的游标,有一个方法,这个方法会干所有的事情,我们以后做的时候会从这个方法中进行判断该从哪取东西。这个架构已经在了,只是现在还没有做这一步而已。数据库这边主要采用什么解决方案呢?在数据库这边,我们主要用的是MySQL。MySQL有一个问题,大文本字段会影响它的性能。如果数据量过大的话,它会挤占索引的内存。那么现在一个行之有效的方法是,我们另外建立一套可伸缩的Key-Value数据库,叫做DoubanDB。我们把不需要索引的大文本字段,放到DoubanDB里面去。MySQL只保存需要

5、索引的Relationship这方面的信息。这样给MySQL数据库降低了压力,也就可以保证它的性能。比如说像保证数据的安全性,以及数据库的吞吐量,豆瓣是怎样的策略呢?首先DoubanDB会把每个数据在三个节点进行备份,任何一个出现故障都不会影响索取数据。MySQL是通过双Master方案,同时还会带1到2个slave,所以说在MySQL中我们会有三到四个的备份。这点是可以放心的。你刚才说到MySQL的双Master方案,这方面会不会存在什么问题?比如说同步的问题,等等?在MySQL里面,双Master方案是一个比较经典

6、的方案,我们现在用它很大一部分是为了解决我们同步延迟的问题。在做切换的时候,会出现同步延迟的问题,但其实MySQL的同步速度还是可以的,在切换的时候,我们会忍受几秒钟等待同步的时间。在做脚本的切换的时候,我们会稍微等一下。豆瓣的数据表一般是怎么样的规模?数据表,这个不好说了,因为不同的表都是不一样的。我们最大的表是“九点”的Entry表,“九点”的爬虫爬过来的所有的文章,现在应该有四千万左右的行数。然后其他的上百万的表也有很多。还有包括收藏表也有千万级的行数。在这种海量数据的情况下,对数据表的就结构变更,一定是一个比较

7、麻烦的问题。常见的情况,比如增加一个新的索引,会导致索引好几个小时。像豆瓣之前会存在这样的问题,是怎么解决的呢?这个问题曾经让我们吃过苦头,在忽视它的状况下就去改表,然后就锁了很长时间。后来我们意识到这个问题,如果有表的改动的话,我们会先在一个测试的库上试验一下它的时间长短,是不是在可接受的范围,如果是可接受的范围,比如说几分钟,就做一个定时任务,在深夜里面去执行。如果耗时是不可忍受的,就必须通过其他技术手段,我们现在的手段一般是建一个新表,这个新表从旧表同步数据,然后再写数据的时候,也会同步,往两边写,一直到两边完全

8、一样了,再把旧表删掉,大概是这样一个方式。刚才您好像提过你们设计了自己的DoubanDB,还有一个是DoubanFS,这两者关系是怎么样的?首先是先出来的DoubanFS,我们刚开始的时候用MogileFS来解决我们可扩展图片存储的问题,由于MogileFS有一个重型数据库,这成为了它的性能瓶颈。我们为了解决这个问题,开发了Dou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。