`
猫太的鱼
  • 浏览: 239144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

豆瓣的系统架构

阅读更多
关于豆瓣的系统架构图,首先我们在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。
分享到:
评论
1 楼 chenniaoc 2012-08-20  
很不错的文章,

对使用python建设WEB有启发,楼主是豆瓣的吗?

相关推荐

    豆瓣网技术架构变迁

    2. 初始架构和技术选择:在技术架构上,初期的豆瓣网基于Gentoo Linux系统运行。使用了单核AMD Athlon 64处理器,1G内存,两个160GB的SATA磁盘,运行MySQL 5,采用Python开发框架Quixote,并使用Lighttpd作为Web...

    一个标准的仿豆瓣系统下载

    在【标签】"仿豆瓣系统"中,我们可以推断出这个压缩包包含了一个与豆瓣网站功能相似的软件系统的所有代码、数据库结构、用户界面资源等。通常,这样的系统会包括用户注册、登录模块,内容浏览(如图书、电影信息),...

    各大公司架构,豆瓣网,facebook,淘宝

    架构设计是构建复杂系统的关键步骤,它涉及到如何组织和连接软件的各个组件,以便实现高效、可扩展、稳定且易于维护的目标。在这个领域,豆瓣网、Facebook和淘宝作为全球知名的互联网公司,它们的架构设计具有重要的...

    豆瓣的架构和一些组件

    豆瓣,作为一家知名的互联网公司,不仅以其独特的文化氛围闻名,同样在技术架构和组件方面也有所创新和贡献。在CTO俱乐部北京举办的第99期主题活动中,豆瓣的首席架构师洪强宁介绍了豆瓣的技术架构和自主研发的几个...

    豆瓣数据架构实践-员旭鹏

    本文将深入探讨豆瓣数据架构的实践,重点包括其在存储系统、数据库、分布式文件系统、缓存系统以及数据挖掘等关键方面的设计与应用。 首先,豆瓣的存储系统经历了多次变迁。在早期,豆瓣的数据存储主要依靠MySQL...

    洪强宁谈豆瓣网技术架构

    【豆瓣网技术架构详解】 豆瓣网作为国内知名的社交与文化分享平台,其技术架构的设计与优化对于支撑海量用户的高并发访问至关重要。洪强宁,作为豆瓣的首席架构师,曾在2010年的QCon北京大会上分享了豆瓣网的技术...

    豆瓣网技术架构的发展历程

    本文将深入探讨豆瓣网的技术架构变化,包括早期的基础架构、应对高并发的解决方案、数据存储与处理、分布式系统以及持续优化等方面。 在早期,豆瓣网的技术架构相对简单,主要基于LAMP(Linux、Apache、MySQL、PHP...

    架构演进:豆瓣架构演进.zip

    随着用户数量的增长,这种架构会面临性能瓶颈,于是豆瓣可能会引入负载均衡和分布式服务来提升系统处理能力。例如,通过Nginx进行负载均衡,将请求分发到不同的服务器,减轻单个服务器的压力。 数据库层面,豆瓣...

    豆瓣网海量数据存储架构

    ### 豆瓣网海量数据存储架构分析 #### 关于豆瓣 豆瓣网作为一个分享和发现书籍、电影、音乐等文化生活信息的用户生成内容(UGC)社区,自2005年4月上线以来,迅速成长为一个具有广泛影响力的平台。截至报告撰写时,...

    豆瓣网站的技术总监洪强宁先生和产品经理张贝宁女士采访稿-豆瓣架构

    【豆瓣架构解析】 豆瓣作为知名的Web2.0网站,其技术选型和架构设计一直备受关注。技术总监洪强宁先生在采访中分享了豆瓣选择Python作为开发语言的原因及其背后的战略考量。Python以其动态语言的特性,如快速开发、...

    使用动态IP池+cookie爬取豆瓣豆瓣影评数据

    动态IP池是一个能够提供大量不同IP地址的系统,它在爬虫工作时可以频繁更换IP,以避免因同一IP地址频繁访问同一网站而被封禁。这对于大规模爬取任务来说是至关重要的,因为豆瓣等网站通常有反爬虫机制,限制了同一IP...

    精仿豆瓣网整站源码

    3. **数据库设计**:精仿豆瓣网需要设计复杂的数据库架构,包括用户表、书籍/电影/音乐信息表、评论表、评分表等,以支持多种数据查询和操作。 4. **API接口**:为了实现用户登录、评论发布等功能,需要创建RESTful...

    豆瓣电影推荐系统(Douban Movie Recommendation System)根据豆瓣电影数据以及豆瓣用户的观影和影评

    - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,...

    仿豆瓣网首页页面代码

    2. **网格系统**:使用CSS Grid或Flexbox布局来创建豆瓣网首页的多列布局,如主内容区和侧边栏的并排展示。 3. **字体与颜色**:设定合适的字体家族、大小、颜色等,以保持与原网站相似的视觉风格。可以使用`font-...

    豆瓣的成长路线.pdf

    ### 豆瓣网技术架构的发展历程与优化策略 #### 一、豆瓣网简介与初期技术栈 **豆瓣网**自2005年3月上线以来,一直以分享和发现为核心价值,构建了一个多元化的在线社区。其主要内容涵盖了读书、电影、音乐等多个...

    基于Hadoop豆瓣电影数据分析实验报告

    2. **数据导入**:将数据文件(如data.txt)复制到Hadoop环境,创建Hive数据库和表结构,字段包括电影ID、名称、投票人数、类型、产地、上映时间、时长、年代、评分和首映地点。使用LOAD DATA命令将数据加载到Hive表...

Global site tag (gtag.js) - Google Analytics