豆瓣网技术架构

合集下载

豆瓣 案例分析 (最美ppt版本)

豆瓣 案例分析 (最美ppt版本)




Part
4
经营模式
4.1 提供的服务

4.1.1 品味系统
Top 榜单
产品资料 相关推荐 热门标签
成员评论
购买链接
4.1.2 表达系统

发布信息汇总
用户“我的豆瓣”页面右边是用户站内发布信息汇总,发表评论、回应 评论、讨论话题从上而下分列。

个人主页
左边是用户对站内“物”的行为记录,包括收藏、评论。右边是交友信 息,有用户个人信息(所在城市、外部BLOG地址、自我介绍等),沟通 功能键(加为友邻、发豆邮)、用户状态栏(是否为友邻),此外还有 用户对站内“人”的行为记录,包括小组和友邻。
个人主页
4.1.3 交流系统

话题讨论
小组中,会有新发话题的提取,显示的是话题标题、小组名、发帖人名、回应 数和最后回应时间,即时更新。用户可以及时浏览并参与讨论。
交友

网站推荐“人”的信息,包括即时性的网站新成员显示和豆瓣通过用 户已有行为计算出的兴趣相仿用户——“豆瓣认为和你口味最像的” 。这些用户列在豆瓣“我的友邻”页面右下角,用户可以详细浏览他 们看过的书和电影,决定是否将其列为自己的友邻。一旦这些成员成 为友邻,用户可以很方便了解到他们的动态信息:比如他们正在看的 书、想看的书,添加的书评等。用户间的联系方式主要是通过“豆邮 ”,类似碰碰“小纸条”的站内信息交互方式。

3.2网站建设技术构架
3.3豆瓣的技术架构与主要组件

豆瓣整个基础架构可以粗略的分为在线和离线两大块。在线的部分和大部分网站类似:前面用 LVS做HA,用Nginx做反向代理, 形成负载均衡的一层;应用层主要是做运算,将运算结果返回给前面的用户,DAE平台是这两年建起来的,现在大部分豆瓣的应 用基本都跑在DAE上面了;应用后面的基础服务也跟其他网站差不多,MySQL、memcached、redis、beanstalkd,不一样的是 NoSQL的选择——BeansDB,这是我们在几年前开源的KV数据库,也是国内比较早开源的KV数据库。 豆瓣作为一个早期就选择以Python为主要编程语言的公司,网站所使用到的技术很多都与Python相关,包括主要框架quixote 、 自行实现的DPark等等。在其它技术的选择上,并没有太大不同:nginx、MySQL、memcached、BeansDB、redis……都是知名 开源项目。在这些开源项目之上,豆瓣根据自己产品的特性,针对性地做了配置与部署设置。 除了使用开源项目,豆瓣也根据自身需要自主研发或实现了一些产品,比较有特色的如DAE、DPark等等。

CTO谈豆瓣网和校内网技术架构变迁

CTO谈豆瓣网和校内网技术架构变迁

CTO谈豆瓣网和校内网技术架构变迁豆瓣网CTO洪强宁讲述网站架构变迁罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。

洪强宁,2002年毕业于清华大学,现任北京豆瓣互动科技有限公司首席架构师。

洪强宁和他带领的技术团队致力于用技术改善人们的文化和生活品质,在网站架构、性能、可伸缩性上进行深入研究。

豆瓣网曾获软件中国2006年度最佳技术应用网站。

校内网CTO黄晶讲述网站架构变迁每个网站的发展都会按照一个大致相同的路线去完成,当然这里说的是每个相对成功的网站。

第一阶段:这一阶段没有太大的访问量,甚至只有一台服务器就搞定了所有的访问。

DB和前端的代码全都在一起,压力不高。

忆者注:我觉得在alexa没进五万的时候,只要不是特殊的应用,基本都在此列吧。

第二阶段:网站初具规模,DB压力大增,单独的一台DB已经满足不了现在的访问量,开始考虑读写分离的Master-slave库,使用三个及以上的服务器。

忆者注:这时网站的alexa基本上会在1-3万的位置,每天的ip在5-10w的样子,当然,DB我们都认为是MySql。

第三阶段:访问量继续增加,增加到了DB的压力在Master的机器上非常的明显了,Master开始出现吃不消的情况,出现写耗尽。

主从也已经不能满足要求,需要进一步解决负载问题,此时要引入Mysql Proxy 程序,进行中间层代理,实现负载均衡,易于扩展。

忆者注:这时网站已经不可限量了,先恭喜下你的网站能用到这段。

第四阶段:网站继续发展,进而出现了数据量的成倍增长,原来的N台DB都出现了一个问题,数据量巨大,无法完成正常速度的读写。

此时,需要对网站按功能进行垂直划分,比如用户注册登录是一部分、UGC 又是另一部分。

与此同时,对数据本身进行水平划分,也就是Hash散表或者是散库。

第五阶段:真的没了。

再往下玩就灭了。

其实再进一步第五第六阶段,就是无法预想的未来了,也许有什么突飞猛进的科学技术发明也说不好。

豆瓣首席架构师洪强宁 谈豆瓣网技术架构

豆瓣首席架构师洪强宁 谈豆瓣网技术架构

如果能达到这样的访问量,确实说明豆瓣高并发的能力是相当强,我想请您从技术这个角度介绍
如果是这样子,要是让你重新设计的话,就是说你会觉得有必要改进里面哪些部分吗?
那如果要缓解高并发所带来的压力,
要提高承受高压力的流量,另外一个有效的措施是对数据库来进行分区分片,在这方面豆瓣是怎比如说像保证数据的安全性,以及数据库的吞吐量,豆瓣是怎样的策略呢?
在这种海量数据的情况下,对数据表的就结构变更,一定是一个比较麻烦的问题。

常见的情况,
DoubanDB
实际上有一些其他的方案可以解决,比如说像从我们刚才的讨论中,
我相信你们从社区的智慧以及各方面都会获取很多东西,我不知道豆瓣对开源社区是不是也做了
那现场的观众有没有什么问题?其他记者:我是接着社区那个话题问一下,豆瓣现在有了很多的非常感谢强宁接受我们的采访,也恭喜今天在大会的演讲上面取得了非常圆满的成功。

豆瓣网首席架构师洪强宁 寻找技术味儿相投的人

豆瓣网首席架构师洪强宁 寻找技术味儿相投的人

到豆瓣做改变
站点 ,导致开 发方 式也 发生 了很大 的变 化 ,团
队面临很 多 网站 需要开 发维护 的情 况。洪强 宁 洪 强宁来 到豆瓣 前 ,阿北 已经形成 了 目前 坦 言 ,如何 把 以往 的技 术积累 下来 ,转 变成 可 豆瓣整 套的服 务架 构 ,并考 虑 了未 来规模 扩大 适用 于多个 网站 的技术产 品 ,是 目前摆 在 自己 后的影响。 面前最核心的 问题 。 那么洪强宁来到豆瓣之后将如何做昵? 出于对豆 瓣整体结 构透 彻的 了解 ,洪 强宁 除 了负责 系统平 台 、提供 技术设 施和保 证 逐步走 向技术 管理者 的 岗位 。他强 调要 发挥 员 系统运 维外 ,洪 强宁及 其领导 的 团队 ,将 阿北 工 的主 观能动 性 ,而不是从 上面压任 务 ,让 每 原有 的架 构体系 中的所有 部分都 改造 成分布 式 个 员工 自己去 发现什么 是重要 的 ,什 么是应 该 的,包括架构、数据库 、缓存和应用服务器 ,并 做 的 , 自己则更 多担负 起协调者 的责任 ,给他 开 发工具软 件去 简化管理 和维护 的 问题 。原有 们提供 资源 。正如 他所欣赏 的L n sT rod所 iu ov ls 的技 术选型 ,也不 总是能 满足不 断增长 的性能 言 。 “ 努力 寻找可 以信 任的人 ,然后让 他们放 要求 ,My QL S 对服务 的支持存在 问题 ,于是他 手 去干 ……一旦我让 某人 负责维 护某个 项 目, 们 自己开 发 了B a sDB。最 早使用 的是单机服 此人一定会拥有处理好 日常事务的能力 。” en 务器 ,还 没有消息 队列 的概念 ,这也是后来 才加
C v r t r 封面 报道 o e oy S
豆瓣 网首席架构 师洪强 宁

Web2.0环境下网络信息组织的优化研究——以豆瓣网为例

Web2.0环境下网络信息组织的优化研究——以豆瓣网为例
【参考文献】 [1]熊回香,金晓耕.Web2.0环境下信息组织的优化研究——
以豆瓣网为例[J].现代情报,2012(32):19-24. [2]杨雅.社交化内容平台由web2.0到web3.0的进阶[J].传
媒,2014:92-95. [3]陆小华.整合传媒[M].广州:中信出版社,2002.
2018/01 工作指导 总第283期 第 63 页
(三)结合使用《中图法》分类方法。豆瓣网应该适当结 合使用《中图法》的分类方法,将兴趣小组分为我的小组、 精选、学术、生活、娱乐、科技和时尚7个大类。其中,我的小 组、精选和科技这三个大类保持不变,学术这个大类参照《中图 法》简表的分类方法分为5个大类,其中,自然科学和社会科学 还可以进一步进行细分。生活这块可以跟行摄相结合,同时增加 健身和拍照两个分类。娱乐类将“游戏”和“桌游”合并为“游 戏”,同时增加“聚会”和“现场”两个分类。时尚分类中,将 基本保持不变,但增加“秀场”和“时尚杂志”两类。
(二)改变tag标签选择模式。在对兴趣小组进行贴标签 时,豆瓣网默认的方式是小组的建立者事先对本小组进行简介 和贴标签,但我们可以对小组建立者的权利予以一定的限制, 对小组成员的权利予以一定的提升。如“提前上床我们一起 读书”这个小组,建立者提供的标签是“读书”“书”“看 书”“阅读”和“签到”这五种,那么我们对建立者提供的标 签进行专指度优化和去重处理,精简为“阅读”和“签到”这 两个标签作为小组的原始标签;其次,我们对在小组内发布一 定数量话题的成员予以重标小组标签的权利,通过对小组成员 给予的标签予以统计,选出前5个标签作为该小组的新标签。
(二)分类方法覆盖面不全。2012年,豆瓣小组的类目体 系是由读书、影视、音乐、艺术、生活等12个一级类目以及每个 一级类目下的若干二级类目构成的。其内容过于繁杂,且覆盖面 不全。现在,其分类有所精简,一级类目分为我的小组、精选、 文化、行摄、娱乐、时尚、生活和科技8大类目,其中文化下又细 分为文学、语言、人文、建筑、哲学、宗教和展览。通过精简组 合的分类使得人们更便于查找相关兴趣小组,但是其覆盖面依然 有重复和不足。如“历史”方面依然没有覆盖;“游戏”和“桌 游”有重复关系;“时尚”分类下居然没有“秀场”。

豆瓣网B2C电子商务模式分析_基于SNS网络基础

豆瓣网B2C电子商务模式分析_基于SNS网络基础

豆瓣网B2C电子商务模式分析———基于SNS网络基础唐和燕(新疆石河子大学 832003)【摘 要】针对豆瓣网的商业模式、技术模式、经营模式、管理模式等方面,进行B2C电子商务模式系统化的分析,总结出了其成功因素与不足,并提出了一系列改进方案。

【关键词】SNS;豆瓣网;B2C;社交网站引言豆瓣是一家Web2.0网站,主要以书评、影评和乐评为特色,吸引了一大批忠实的用户。

这一模式拥有很高的粘性,并逐渐对网民购书、购碟产生影响。

豆瓣主要通过用户点击及购买电子商务网站的相关产品,来获得收入。

截止到2010年底,豆瓣已经有注册用户超过4100万,其中活跃用户数2000万,日均pv3000万,人均访问停留时间:9.9分钟。

alexa排名约为全球160名,已经成为全球为数不多的web 2.0的领头企业。

毋庸置疑,豆瓣已经在某些程度成为中国web 2.0的典型代表,在中国、美国,甚至全球的互联网上,豆瓣都是第一家以算法来推算用户的需求这样的模式存在的网络公司。

豆瓣网的模式特别适合于营销的精确到达。

豆瓣网最重要的收入来源,是和购物网站的合作。

在豆瓣网提供的服务中,产品比价是非常重要的部分。

每次有用户通过豆瓣网上的链接进入当当、卓越这样的大型网上商城购物,双方就会按照事先约定的比例进行利润分成。

同时也和大学生教育培训主流媒体有相关合作。

1.豆瓣网电子商务模式分析1.1商业模式1.1.1战略目标书籍、电影、音乐其实是一个非常普遍的需求,其背后的人群也是非常庞大的,豆瓣网的战略目标是在现有的基础上找到一条合理的路径以吸引更多的用户。

2010年开始主推豆瓣社区,力图从兴趣分享型网站向更接近线下生活的社区转变,并借此拓展更多的商业空间。

1.1.2目标用户以受过高等教育的青年大学生为主。

4000多万豆瓣用户80%以上的用户生活在北京、上海、天津、重庆、广州、成都、武汉、南京、杭州12个一线城市;18~35岁占92.5%,其中25岁以上的占据46%;月收入大于3000元占42.8%;本科以上学历超过70%,研究生以上学历17%。

豆瓣技术架构调研

豆瓣技术架构调研

⾖瓣技术架构调研关键字包括:nginx,lighttpd,quixote,Memcached,mogile FS,Mako,Gentoo ,Xapian,spreadps:窃以为第⼀段关于语⾔的采访,相当[csdn]化你要是愿意,就买⼀枝三块钱的玫瑰,送给我吧,这城市也是怪让⼈伤⼼的,我想死⼼塌地的爱上你”这是⼀个叫钟童茜的歌⼿的歌,我在⾖瓣⽹站发现有⼈评论,才知道了这⾸有些凄凉的歌曲。

你⼏乎不可能从百度的最流⾏的mp3的列表中找到它,因为它不是那么有名,也许是这个原因,引发了我采访⾖瓣的愿望。

接受我采访的是,⾖瓣⽹站的技术总监洪强宁先⽣和产品经理张贝宁⼥⼠。

本刊记者:好,现在开始,⾖瓣是⼀个⾮常著名的Web2.0⽹站,你们的开发语⾔选择的是,我想问的是,为什么选择?洪强宁:我们选择Python的理由是它是动态语⾔,具有动态语⾔的优点,⽐如开发特别迅速。

我们做的是⼀个Web2.0的⽹站,这种⽹站的特点就是always beta,⽤户的需求在随时发⽣变化,我们也不断发现新的价值。

所以⽹站的结构和程序会不断变化,如果⽤做,你的开发量⽐较⼤,你就难以做出迅速地改变。

Python的特点就是开发迅速,你可以在⼀两个⼩时,就做出⼀个功能。

或者说已??上线了,⽤户反映需要某⼀功能,也可以⽐较快地做出来。

本刊记者:这就是TDD,开发的思路,和传统的⽅式有些不同。

但是会有另⼀⽅⾯的问题,Python的程序员好找吗?在国内会Python的要⽐会Java程序员少的多。

洪强宁:对,确实是。

在中国⽤Python的⼈确实不多,也给我们寻找开发任何⼈员带来困难。

不过从另⼀⽅⾯说,也有好处,因为没有⼀个学校去教Python,会Python的⼈都是⾃⼰学的,也就是说他知道⾃⼰需要什么技术,⽽且能够通过⾃学掌握它,包括Python的资料中⽂⽐较少,需要学习者接触第⼀⼿资料,这都使得Python程序员的平均⽔平,要⽐使⽤其他热门语⾔的平均⽔平要⾼。

豆瓣网网站分析研究

豆瓣网网站分析研究

小说类 读过
豆瓣电影
电视剧 在看用户列 表
我看
在看
想看
看过
豆瓣猜
排行榜
分类浏览
影评
最新评论
新片评论
正在热映
豆瓣电影
影片 想看用户列 表 论坛
评论列表 看过用户列 表 影讯
预览
豆瓣猜 排行榜
乐评 豆瓣音乐
分类浏览
豆瓣音乐
我的音乐
专辑 音乐人列 表
豆瓣电台
我的电台
应用下载
文化
科技
豆瓣九点
趣味 生活
从用户体验来谈整改:
(1)、交互单一,豆瓣网在今后应把重心放在交互的研发上,在豆瓣读书和 豆瓣音乐中应添加评论和回复的功能;社交性的交互小游戏也能增强用户之间 的联系,类似QQ农场。 (2)、豆瓣网的小组分类机制不够完善,存在各个分组之间重合的情况,其 应当在以后的建设中加强。 (3)、豆瓣网在收藏、索引功能上还存在部分问题,搜索信息时会出现宽泛 模糊、笼统的信息资料,检索功能相对较弱建议完善提高。 (4)、板块之间联系松散,豆瓣网各大板块之间联系不紧密,没有固定主页, 从主页跳转到分板块中无法返回。 (5)、页面字体太小,且页面间距有点大,有点空洞。 (6)、增加日记的分类/标签功能。 (7)、增加随意调动相册顺序的插件。 (8)、添加个人统计分析功能。 (9)、小组收藏加上搜索,以及对书影音的分类浏览。 (10)、建议增加导出收藏按钮。
F、豆瓣模式实践了新的营销理念
豆瓣网特色分析、优势和缺陷
(2)豆瓣网的优势 在Web2.0时代,豆瓣结合了自身的特点,融入其他形式,这样让它的 互动方式富有立体感。豆瓣的优势在于: 一是页面简洁; 二是以用户评论和推荐创建出网络社区的氛围,提供了以共同兴趣为基 础的交友功能;

解析豆瓣的基础架构

解析豆瓣的基础架构

豆瓣整个基础架构可以粗略的分为在线和离线两大块。

在线的部分和大部分网站类似:前面用,用Nginx做反向代理,形成负载均衡的一层;应用层主要是做运算,将运算结果返回给前面的DAE平台是这两年建起来的,现在大部分豆瓣的应用基本都跑在DAE上面了;应用后面的基以DPark能够大幅提升性能。

另外,因为DPark的编写使用了函数式语言的特点,所以可以写的非常简洁:到目前(2014年3月),DPark的集群规模和处理数据量已经比去年多了一倍左右,一天要处理60~100T B左右的数据。

团队当前,我所负责的豆瓣平台部一共包括四个部分:核心系统,这块也是由我直接带领的,共6名工程师;DAE,现在是彭宇负责,共4名工程师;DBA两人;SA两人。

平台部负责的项目大多是跟业务无关的东西,贴近应用层的主要在产品线团队做,这个分工跟豆瓣工程团队的发展历史有关。

早期豆瓣工程师还不多的时候,就已经分为两种倾向,一种是偏业务的,就是去做用户能看得见的东西;另一种是支持性的,运行在业务层下面、不被用户所感知的东西。

下面这一层就衍变成了平台部门。

在豆瓣,不管是做产品还是做平台的工程师,技术实力都比较强,一个项目应该从哪个部门发起,并不是看这个任务的难度,而是看它是公共的还是业务特有的。

有些项目即使未来可能会成为公共的,但一开始只是一个产品线需要,那么它也会从产品线发起。

比如豆瓣的短信服务,最开始是产品线有需求,所以这些服务都是由他们发起完成的,平台这边主要负责提供建设服务的架构,比如DoubanService,告诉他们一个服务怎样去写、怎样去部署、怎样去对用户开放。

短信服务后来成为很多产品线都在使用的服务,同时这个系统本身也越来越成熟,那么它逐渐就被转移到SA团队来进行维护。

核心系统组做过的项目,包括刚才提到的DPark、BeansDB,还有MooseFS这些二次开发的,还有搜索服务、信息推送的长连接服务等,大大小小差不多有十几个。

豆瓣网UI结构、风格、设计亮点简要分析

豆瓣网UI结构、风格、设计亮点简要分析

布局+ 色系+ 样式+ 页面长度+ 广告系统+ 浏览器关系+ 载入和刷新速度+ SEO-------------------------------------------------------------- 题记:也许豆瓣的“成功”并不是基于它多么优秀的视觉体验,但是,但凡“成功”的产品都需要有与之匹配的必不可少的视觉体验。

PS:因网站构成等比较繁杂,故只对网站的部分UI作简要分析。

-------------------------------------------------------------- UI结构:1.一级横向分类:主要集中了一些“公共”模块:小组、读书、电影…便捷的“嵌入”搜索功能:在一级横向分类栏中的右上方“嵌入”搜索功能,并在搜索框中显示搜索内容(书籍、电影…)提示,搜索按钮右边的▼亦可以选择限定的搜索内容(限定在书籍、电影…中搜索)。

把页面中的“搜索功能”拷贝到一级横向分类上,方便了用户随时使用。

2.二级横向分类:完全的个人模块组合。

集中常用的个人模块:“豆邮(相当于消息、信箱之类含义),即‘豆油’的谐音”、“***的设置”、“退出”3个经常使用的模块被安排在二级横向分类的右上方,亦很方便用户的管理和使用。

-------------------------------------------------------------- UI风格:1.柔和的标准色:最早见到豆瓣的时候就对它“叛逆”的色彩风格所吸引,那时候大多数网站的标准色是喜欢用“大红、深蓝”等明度和饱和度(纯度,下同)都比较高的色系,典型的例子就是“百度”。

豆瓣的标准色系使用的均是系统调色板中“色值”靠中间的色彩值,明度和饱和度都比较适中,通俗的说法即是比较“素雅、柔和、简洁”,这样的色彩取值当然是有一定的道理:在用户长时间停留和频繁访问的网站中,色彩明度和饱和度比较低的取值有利于缓解用户的视觉疲劳,对用户的心理感受亦会产生影响,甚至逐渐会影响到用户的情绪和行为。

豆瓣网案例分析

豆瓣网案例分析

豆瓣网案例分析一、豆瓣网的创建及介绍.2005年3月,一家名为豆瓣网的Web2.0网站出现在人们视野,而后如一匹黑马迅速壮大,占据了阅读者、影迷、音乐爱好者以及图书音像商阵营中一个举足轻重的位置。

创建人为杨勃,起初创建之时,杨勃只是为“想看看有多少人和自己读同样的书”而编写了一个简单的程序,并以其工作所在地点——北京“豆瓣胡同”为其命名。

豆瓣网的建立与网络Web2.0技术的兴起和发展有莫大关系。

Web2.0是对Web1.0的信息进行扩展,丰富,使其更加多元化和个性化。

主要的Web2.0的元素有如博客、播客、社区、P2P下载服务等,其特征是资源由多人共同创建,共同分享,豆瓣网正是这样一个Web2.0网站。

信息的共享使豆瓣成为一个以青年知识分子为主要受众群体的书影音信息资料汇集地和评论交流社区。

豆瓣提供了书籍、影片、音乐的评论,但是没有任何不利于版权保护的下载服务,是一家以健康为网站主题之一的Web2.0网站。

截止到2010年底,豆瓣已经有注册用户超过4600万,其中活跃用户数2000万,人均访问豆瓣网的主要受众群为受过高等教育的大学生、知识分子,年龄相对年轻,精神层次的交流愿望和行为较为强烈和集中。

这些群体有自己的个性,他们想发出与众不同的声音。

他们想在茫茫人群中找到与自己志同道合的人。

豆瓣网正是通过收集用户使用记录,在海量库存条目中为用户自动匹配书影音信息,而基于这些条目信息之上的评论版块更成为用户查询、参考、品评、交流的主要园地。

另外,相对于普通的书籍、影视网站,豆瓣网显得更注重人文气质而非商业元素。

(三)互动文化社区豆瓣网打造了一个和文化空间密切相关的网络社区。

在这里,用户可以根据喜好找到“臭味相投”的个体与组织。

比如,当用户阅读完一本书,想搜索相关书评。

那么,用户则可以在看到各式书评的同时,也能结识到志趣相近的个体。

同时,在这个页面上,还会显示“喜欢这本书的人也喜欢”的书,以及“喜欢这本书的人也喜欢去”的小组,来根据用户口味推荐相近喜好。

豆瓣的Url结构方式一览以及搜索系统设计初探

豆瓣的Url结构方式一览以及搜索系统设计初探

/search?q=周杰伦豆瓣条目搜索:周杰伦/subject_search?search_text=周杰伦书籍搜索: 周杰伦/subject_search?search_text=周杰伦&cat=1001电影搜索:周杰伦/subject_search?search_text=周杰伦&cat=1002音乐搜索:周杰伦/subject_search?search_text=周杰伦&cat=1003将书籍、电影、音乐从综合搜索里淡化后,综合搜索里的结果基本上被小组垄断了,豆瓣小组的庞大数目开始在这里显现出来。

条目搜索是个隐蔽的功能,因为并没有在页面上的某个地方显示出来,只能通过修改Url结构来打开,搜索的条件也很限制,仅限书名、影名、唱片名。

在做了这样的条件限制后,搜索结果也要相对的精确许多,也许没多久后豆瓣可能真正推出这个功能来。

虽然从Url结构上看,书籍、电影、音乐三者的搜索是位于各自站点下面的,但事实却并非如此。

1001这个数值对应的是书籍搜索,1002对应的是电影搜索,1003则是对应的音乐搜索,当需要改变搜索类型时并不需要去修改前面的book、movie、music这三个子域,只需要改变后面的数值即可,也就是说将book、movie、music这个三直接换成www,只要后面的数字不变,结果也是一样的,唯一改变的就是头部的导航,也就是说使用二级域名的搜索时只是为了显示不同子站的头部。

新豆瓣的三个子站的搜索Url结构还有另外一种:书籍搜索: 周杰伦/search/周杰伦电影搜索:周杰伦/search/周杰伦音乐搜索:周杰伦/search/周杰伦当然,这三个Url结构就没法再改变二级域名而不改变搜索结果了。

来源:/interaction/1790人人都是产品经理()中国最大最活跃的产品经理学习、交流、分享平台。

豆瓣简介

豆瓣简介

豆瓣讲稿1、豆瓣概况1、什么是豆瓣豆瓣网主要以书评、影评乐评为特色的web2.0文化产品推荐引擎。

在豆瓣上,用户可以自由发表有关书籍、电影、音乐的评论,可以搜索别人的推荐,轻松连接到当当、卓越等大型网上商城购买当前正在浏览的文化产品。

在豆瓣网提供的服务中,产品比价是非常重要的部分。

每次有用户通过豆瓣网上的链接进入当当、卓越这样的大型网上商城购物,双方就会按照事先约定的比例进行利润分成。

2010年2月,豆瓣网正式宣告改版,主域名属于豆瓣社区,同时另外三个子站:豆瓣读书、豆瓣电影和豆瓣音乐。

2、构成后面会详细介绍3、豆瓣用户从2005年3月至今,豆瓣的注册用户已经有5617万是中国互联网用户中商业价值最大一群。

用户以受过高等教育的青年大学生为主。

豆瓣的发起者发现,对多数人做选择最有效的帮助其实来自亲友和同事。

随意的一两句推荐,不但传递了他们自己真实的感受,也包含了对你口味的判断和随之而行的筛选。

他们不会向单身汉推荐育儿大全,也不会给老妈带回赤裸特工。

遗憾的是,你我所有的亲友加起来,听过看过的仍然有限。

而且,口味最类似的人却往往是陌路。

如果能不一一结交,却知道成千上万人的口味,能从中间迅速找到最臭味相投的,口口相传的魔力一定能放大百倍, 对其中每一个人都多少会有帮助。

豆瓣随着这一个愿望产生。

豆瓣不针对任何特定的人群,力图包纳百味。

无论高矮胖瘦,白雪巴人,豆瓣帮助你通过你喜爱的东西找到志同道合者,然后通过他们找到更多的好东西。

这些豆瓣用户他们关注品牌、关注流行、互相影响,工作、学习以外他们在豆瓣发现生活。

生活在一线城市80%以上的用户生活在北京、上海、天津、重庆、广州、成都、武汉、南京、杭州12个一线城市年轻充满活力18~35岁占92.5%其中25岁以上的占据46%高收入月收入大于3000元占42.8%高学历本科以上学历超过70%研究生以上学历 17%刚进入豆瓣主页2、豆瓣网的架构记录分享、发现推荐、会友交流,这是豆瓣在用户网站使用指南中的对用户站内路径的指引,分别也可对应豆瓣导航的三大组成块:品味系统(读书、电影、音乐)、表达系统(我读、我看、我听)和交流系统(同城、小组、友邻)。

豆瓣网站架构分析--焦点

豆瓣网站架构分析--焦点

豆瓣网站架构分析--焦点豆瓣网站架构分析fokus 发表于2007-1-5 20:46:00首页结构:1 最上面的导航栏首页? 读书? 电影? 音乐| 我的豆瓣? 我读? 我看? 我听? 我上? 小组? 友邻左边的“读书”“电影”“音乐”是豆瓣的三个服务方向,大家针对这三个方面进行评论,分为三个主要目录“book”、“movie”、“music”。

右边的是“用户的控制面板”,链接属于用户自己的目录下的东西。

可以看出,每个用户都有一个唯一的数字编号。

例如:“我的豆瓣的”目录是“people/数字ID”;“我读”是“people/数字ID/books”;“我看”是“people/数字ID/movies”;“我听”是“people/数字ID/music”;“我上”是“people/数字ID/sites”---这个功能是之后加上去的。

“友邻”是“people/数字ID/contacts”而小组另外放一个一级目录。

如果加入了小组,则会显示在最上面。

2 下面左边显示的是最受欢迎的评论(review)3右边上部:公告和调查随机出现4 右边下部:有新内容的(书,电影和音乐)豆瓣目录结构一级目录/二级目录Book(书籍)|--tag(书籍标签)Movie(电影)|--tag(电影标签)Music(音乐)|--tag(音乐标签)Review(评论)|--review ID(评论ID)People(用户)|--people ID(我的数字ID)|--mirror(我的个人主页)|-books(我在读,读过,想读书籍列表)|-movies(我在看,看过,想看的电影列表)|-music(我在听,听过,想听的音乐列表)|-Sites (我在上的blog)|-group_topics(我所在的小组最近话题)|-topics(我最近的发言)|-replied_topics(我回应的话题)Gruop(小组)|-gruop ID(小组数字编号;也可以是名字--这点好像是手动的,也可以是“合作媒体”)|-topic| |-topic ID (话题编号)||-latest_topics(最新话题)Subject|-Subject ID(书籍,电影,音乐对应的唯一数字ID)| |-reviews(评论,评论下有评论。

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

豆瓣网技术架构的发展历程
def get_subject(subject_id): subject = mc.get(‘s:’+subject_id) if subject is None: store.farm.execute(“select xxx, xxx from subject where id=%s”, subject_id) subject = Subject(*store.farm.fetchone()) mc.set(‘s:’+subject_id, subject) return subject
• /subject/1000001
# luz/subject/__init__.py def _q_lookup(request, name): subject = get_subject(name) return lambda req: subject_ui(req, subject) # luz/subject/subject_ui.ptl def subject_ui [html] (request, subject): site_header(request) “<h1>%s</h1>” % subject.title site_footer(request)
Memcache
Web Service
store.farmr
Lighttpd WebDAV Static Files
MySQL Slave Spiders Memcache
Memcache
问题出现
• 5.2M动态请求/天 • 图片流量费用成为最大成本 • Web服务器的磁盘IO还是会影响动态页
面性能
Python
• • • •
开发迅速 Battery Included 第三方库成熟 社区成长中

豆瓣的架构

豆瓣的架构

豆瓣的架构
丁力
【期刊名称】《程序员》
【年(卷),期】2008(000)006
【摘要】“你要是愿意就买一枝三块钱的玫瑰送给我吧这城市也是怪让人伤心的我想死心塌地的爱上你”
【总页数】3页(P102-104)
【作者】丁力
【作者单位】无
【正文语种】中文
【中图分类】TP368.32
【相关文献】
1.豆瓣网首席架构师洪强宁寻找技术味儿相投的人 [J], 高松
2.何谓TDD?——就《豆瓣的架构》一文与《程序员》商榷 [J], 张慧
3.新型网络知识社区架构研究——以知乎、豆瓣、天涯社区为例 [J], 彭一;陈静;李忆
4.郫县豆瓣IP形象设计研究——以“豆瓣哥”为例 [J], 陈奕希
5.郫县豆瓣IP形象设计研究——以"豆瓣哥"为例 [J], 陈奕希
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• • • • •
承担图片流量 后台数据挖掘计算 容灾备份
购买3台1U服务器:4核,32G内存,1T SATA * 3 优化前端,启用 和 域名 lighttpd 1.5 with aio support 部署LVS
Scale Up: 应用服务器内存升级 4G -> 8G
Monday, March 23,
问题出现
• 1.2M动态请求/天 • 磁盘IO成为瓶颈 • 需要寻找新机房
Monday, March 23,
解决方案
• • • •
Monday, March 23,
购买两台1U服务器
• •
pippin 和 meriadoc (后改名merry) 双核, 4G内存,250G SATA*3
Monday, March 23,
Internet
Lighttpd
SCGI
App
FS
MySQL
Memcache
Static Files
Monday, March 23,
Gentoo Linux
• 容易维护 • emerge mysql • ebuild 便于管理 patch • 只安装需要的东西 • 安全性 • GLSA(Gentoo Linux Security Advisories)
Monday, March 23,
问题出现
• 6.4M动态请求/天 (5M PV) • 应用服务器成为瓶颈 • 内存:占用总是增长,似乎有内存泄

• CPU:memcache对象序列化/反序列化
Monday, March 23,
解决方案

第二台应用服务器上线
HTTP Proxy WebDAV Web Service
Lighttpd (w/ mod_memcache) MySQL Slave Memcache Static Files !"#$% read MySQL Slave
Replicate
write
Lighttpd WebDAV
Spiders
Data Mining
Python
• • • •
开发迅速 Battery Included 第三方库成熟 社区成长中

CPUG: /
Monday, March 23,
Quixote
• 简单,轻量,易于实现REST风格的URL • 当时还没有Django, TurboGears, Pylons这些选择,只有一
16G内存,147G SCSI *2 + 500G SATA SCSI 做 RAID-0
用MySQL Slave来保证冗余 增加memcached节点数目 所有的MyISAM表都改为InnoDB表

提高内存利用效率
将全文搜索移至Sphinx
Internet Sphinx MySQL Master
Replicate SCGI HTTP Proxy
一台作为应用服务器,一台作为数据库服务器 迁移到双线双IP机房,使用DNS解析不同网段 IP -_-b 开始多人协作开发,frodo做为开发用机 (subversion, trac, etc...)
Internet
Lighttpd (#$)
SCGI HTTP Proxy
DNS
App
FS
Lighttpd (!")
Internet


LVS LB (Master) Lighttpd
HTTP Proxy
Lighttpd 1.5 (w/ mod_cache)
Lighttpd LVS LB (backup) Lighttpd WebDAV Static Files
Web Service
store.farm
Lighttpd App Memcache Lighttpd (w/ mod_memcache)
WebDAV
Memcache
Web Service
store.farmr
Lighttpd WebDAV Static Files
MySQL Slave Spiders Memcache
减小磁盘IO对页面访问的影响 把更多的内存分配给静态文件服务
将应用服务从web服务器独立出去 增加一个只读数据库
Monday, March 23,
Internet App
SCGI store.farm
MySQL Master Memce
Lighttpd
Monday, March 23,
问题出现
• 2.5M动态请求/天 • 数据库磁盘空间不够了 • 我上/九点数据量庞大 • SATA盘故障率高 • 数据库压力增大
Monday, March 23,
解决方案
• • • • •
Monday, March 23,
Scale Up,购买四台1U服务器
• •
Memcache
Monday, March 23,
问题出现
• 5.2M动态请求/天 • 图片流量费用成为最大成本 • Web服务器的磁盘IO还是会影响动态页
面性能
• 应用服务器进程数不够了 • 机柜空间不够了
Monday, March 23,
解决方案

天津的机房便宜一些 :)
• • •
Monday, March 23,
Memcache
• •
从上线起就在使用,有效减轻MySQL负担 对libmemcache做了python封装(使用Pyrex),性能是 纯python版的3x+
def get_subject(subject_id): subject = mc.get(‘s:’+subject_id) if subject is None: store.farm.execute(“select xxx, xxx from subject where id=%s”, subject_id) subject = Subject(*store.farm.fetchone()) mc.set(‘s:’+subject_id, subject) return subject
Monday, March 23,
解决方案
• 换到靠谱的机房,多线单IP(BGP) • 购买了一台新服务器 (arwen) • 74G 1w转 SATA * 3 • 做为数据库服务器 • 开始使用专门的服务器作后台计算
Monday, March 23,
Internet
Lighttpd
SCGI write
Data Mining
read
App MySQL Master Static Files Memcache
Replicate
MySQL Slave
Monday, March 23,
问题出现
• 2M动态请求/天 • 静态文件服务磁盘IO成为瓶颈 • 上百万的小图片(用户头像、封面图
片, etc...)
Keepalived
Lighttpd 1.5 (w/ mod_cache)
Monday, March 23,
write
replicate
!"#$% read MySQL Slave
read
Data Mining
MySQL Master
Replicate
write
!"#$% Data Mining MySQL Slave
Monday, March 23,
Lighttpd
• 很好的动态和静态性能 • 原生SCGI支持 • SCGI: 一个简化版本的FastCGI,由
Quixote开发者开发
• 所有的请求都通过80端口的lighttpd进程
分发,动态内容走SCGI到localhost上的 Quixote进程。
Monday, March 23,
解决方法:更新数据库后,在预期可能会马上用到的情况下,主 动刷新缓存 ......不完美,but it works
Monday, March 23,
避免replicate delay引 起的灵异事件
def get_subject(sid): sbj = mc.get(‘s:’+sid) if sbj is None: sbj = flush_subject(sid, store.farmr) return sbj def flush_subject(sid, cursor=None): cursor = cursor or store.farm cursor.execute(“select ... from subject”) subject = Subject(*cursor.fetchone()) mc.set(‘s:’+sid, subject) return subject def update_subject(subject, props): store.farm.execute(“update subject ...”) mit() flush_subject(subject.id, store.farm)
Static Files
Memcache
MySQL
Monday, March 23,
几点发现
• 数据库的内存分配对性能影响重大 • innodb_buffer_pool_size • 磁盘随机寻道速度比吞吐量更重要 • 网上找来的IP段分布很不靠谱
Monday, March 23,
问题出现
• 1.5M动态请求/天,尚未到性能瓶颈 • 机房不靠谱,频繁故障 • IP段分布数据不靠谱,用户反映访问缓慢
个笨重的ZOPE
• /subject/1000001
# luz/subject/__init__.py def _q_lookup(request, name): subject = get_subject(name) return lambda req: subject_ui(req, subject) # luz/subject/subject_ui.ptl def subject_ui [html] (request, subject): site_header(request) “<h1>%s</h1>” % subject.title site_footer(request)
相关文档
最新文档