`
- 浏览:
233871 次
- 性别:
- 来自:
北京
-
关于豆瓣的系统架构图,首先我们在Web server上做个划分,把网站内容分为动态内容和静态内容。在豆瓣上所有的html都是动态内容,图片都是静态内容。分成两个Web 服务可以做不同的调优。 对动态内容,我们用的是nginx和lighttpd的混合,nginx做负载的平衡,lighttpd通过 SCGi 与application server相连,application server是基于 quixote这个框架写的。
application server拿到用户的请求,分析用户的url,并且利用外部的资源,比如数据库,组合成一个html,返回。从数据库存取会比较慢,数据库有大量的IO,我们使用cache,我们使用的是Memcached,这是一个分布式的内存的cache,比如你可以用很多机器,每个机器有两个G的内存,我们自己开发了client端来使用它,另外如果用户有搜索请求,我们会用搜索引擎。Xapian是一个C++写的开源的搜索引擎,我们通过Web service去访问它。其他,我们还提供了另外的Web service接口响应用户的请求,比如要访问某个文件。spread是我们最近加了一部分,用户有的请求可以采用这样的异步服务。
数据库是这样的,两个MySQL做成一对,一个master ,一个 slave,根据应用划分,使得load不会太高。这个图上??的是两对,实际上有三对。还有一个slave,一方面作为备份,一方面用作数据挖掘,因为不能对线上的数据做直接操作。
对于静态部分,我们也是用nginx,你注意到豆瓣现在有日记的贴图功能系统,用户可能上传很多图片,我们采用的方案是用了mogile FS ,这是一个分布式的文件系统,同时可以做备份,保持高可用性,可以提高很大的IO。
关于application server,它都是用Python写的。我们是用的MVC方式,Controller我们用的是quixote ,它接受用户的请求,根据这个URL去找到Model的某个具体的函数来执行,它是一个dispatcher,当中会判断用户的权限等。然后再传给View,View根据模版进行渲染,形成网页。View的模版,我们以前是用的是PTL,PTL很高效,最近引用了mako,这是一个比较现代的开源的模版,用它写出的代码比较好维护,比PTL好维护一些.。同时,在使用mako的同时,我们的工程师做了很多加速的工作,现在mako的代码有很多是豆瓣的人写的。
你如果注意过Python的Web开发框架的话,你会发现Python的有三个比较著名的框架,Django,Pylons,TurboGears,Pylons默认的模版就是Mako。
下面的就是Model,业务模块,核心是类是User,因为Web2.0是以人为本,我们肯定会有一个User。只有人也做不了事情,还要有物。豆瓣的物,就是Subject,比如书,比如评论,比如小组等。
与数据库进行链接,我们一个很轻量级的与数据库进行链接,这也是一个开源项目,SQL Farm Manager。这个Web service,豆瓣中有很多用的都是Web service。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
文档主要讲述了豆瓣网系统架构的演进过程,对于想了解互联网公司技术架构演进的过程有所帮助,推荐阅读
豆瓣用户每天都在对“看过”的电影进行“很差”到“力荐”的评价,豆瓣根据每部影片看过的人数以及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影 Top 250。 为了分析电影产业的发展趋势,本次实验需要对...
关于豆瓣网架构方面的信息,对开发人员来说,中间有很多值得借鉴的地方
基于python的豆瓣电影数据采集与分析可视化.pdf
基于Python的豆瓣图书评论数据获取与可视化分析.pdf
《基于python爬虫对豆瓣影评分析系统的设计与实现.docx》万字、已降重、毕业论文、本科,目录如下,...5.2 系统架构设计 5.3 系统实现与测试 第六章 总结与展望 6.1 研究工作总结 6.2 存在问题与改进方向 6.3 研究展望
收集了一些分布式架构的设计文档: 《豆瓣技术架构》 《支付宝技术架构》
1.2 分析豆瓣TOP250电影的网页结构 1.3 编写Python代码抓取网页数据 1.4 使用BeautifulSoup解析HTML,提取电影数据 1.5 使用pandas库整理和保存数据 2. Flask框架创建web项目 2.1 介绍Flask框架的基本原理和使用 2.2...
豆瓣的服务化体系改造(37页).pdf
主要介绍了Python利用Scrapy框架爬取豆瓣电影,结合实例形式分析了Python使用Scrapy框架爬取豆瓣电影信息的具体操作步骤、实现技巧与相关注意事项,需要的朋友可以参考下
我在最初的二十天内冲刺实现了应用的网络层、账户系统等基础架构,和查看友邻广播需要的大部分功能,大约 8000 行代码。 在接下来的八十天中,由于课业、其他事情和速度瓶颈,实现过程有所减慢。但是,应用的细节...
该系统可以分别对电影、电视剧和书籍三个类别的项目按时间、热度和评分排序,并可以根据关键词检索对应的项目
- 友邻广播:友邻互动、友邻推荐、系统定制的推荐。 - 九点:友邻的日记、博客文章等,有深度的内容。 - 一刻:全站范围的热门内容推荐。 - 同城:基于地理位置的内容。 - 线上活动:基于共同兴趣的内容。 - ...
本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...
1-7-豆瓣的服务化体系改造-田忠博 QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天...
Oracle 9i&10g编程艺术:深入数据库体系结构
该资源真实可靠,代码都经测试过,能跑通。 快速:Apache Spark以内存计算为核心。 通用 :一站式解决各个问题,ADHOC SQL...可以将结构投影到已经存储的数据上。 提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
与同类著作相比,这本书具有结构清晰完整、系统性强、内容新颖、行文深入浅出,可读性好的特点。特别值得提出的是,这本书讲授计算机组织的基本要领和基础。更重要的是,本书提供了计算机组织的设计和基础框架,使...
2:豆瓣网技术架构的发展历程.pdf 3:软件架构师应该知道的97件事.docx 4:系统架构设计师教程_第5章_软件架构设计.pdf 5:系统架构师的心得.doc 6:信息系统架构分析与中间件.pdf 7:异步数据同步组件.pdf