音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

浅析豆瓣网站运营的主要技术模式
日期:2021-09-08 17:37:18   来源:脚本之家

豆瓣全部使用python开发。网站后台的搜索引擎基于Twisted, GUI基于Quixote,还用到了cElementTree, MySQL和 PIL,这是豆瓣技术的基础。
纯粹的技术原理之外,相关豆瓣技术还有三个核心原则:以用户为中心、简单的前台与复杂的后台、快速开发。

以用户为中心
Web2.0 改变了一些产品特性的优先级。原来做产品会把功能性放在首要位置,而可用性的优先级会往后放。现在则由于要给普通用户使用,必须要以用户为中心,肯定要从易用的角度出发。可以说,Ajax技术的流行,首先解决的也是一个观念问题。虽然这时点击量无法获得增长,但是它却可以给用户带来更为便利的网络访问。现在的网站开发不是为了追求点击量了,而是为用户提供需要的功能,满足他们的需求。
寻找需求以创新,了解需求以完善细节
在杨勃看来,对大部分人来说,书籍、音乐、电影的选择特别多,于是豆瓣网的方向初步确定,也就是需要发现和分享。每个人的口味都不一样,大家共享之后就会产生口碑传递。“所以,一开始做豆瓣不是为了做一个网站,而是满足人们的一个需求,如果对用户没用,只是新鲜是远远不够的。”
现在同一类型的各个网站,技术高低对网站外观的影响不是特别明显,但只需要使用一下网站,就会明白很多差距。原因就在于,创新来自找到需求,细节来自了解需求。
 
简单的前台与复杂的后台
为了最大程度的符合用户习惯,简单的前台界面不代表系统的简单。事实上,正相反,在Web2.0的系统中,后台需要做更多的工作。一些表面看起来很简单的功能背后需要大量的程序和计算的支撑。
基于数学统计的推荐引擎
豆瓣就是最具代表性的例子。与大多数网站不同的是,最早开发的部分是一套推荐引擎,这是基于数学统计的计算模型。在用户点击、浏览以后,这套模型可以自动分析出“与其兴趣相投的人”,并主动地推荐用户最有可能喜欢的书籍、音乐或者电影。
功能强大但使用简单的管理工具
豆瓣是100%动态网站,没有一个静态的页面。我们完全可以将其视为一个个人管理书籍、音乐、影碟的工具,只是将工具放在网上了。现在,很多网站抄袭了豆瓣的模式和资源,但仅仅抄袭一个网站的表面是没有价值的。
Web越来越像一个计算平台。通过各种Web应用将计算机连接起来,比如需要相册时可以使用Flickr,需要地图时调用Google Map的Api。随着很多服务商逐渐将自己的服务开放出来,每个网站都可以视为一个软件服务提供商,相互之间的联系让系统越来越复杂,而这种系统的复杂并不会带来功能使用的繁琐。
强大的功能、简单的使用,这是Web2.0应用的必然趋势。由豆瓣的应用,可以看出发现联系用户之间的关系,在后台建立导引用户功能的连接,针对数据量做好方便的存储和查询,这就是网站技术的核心。
 
快速开发
很难想象,豆瓣拥有5000万的注册用户,Alexa的流量排名在一千左右,很长的一段时间内却一直就只有一台八千块钱攒起来的服务器、一两个人的开发团队维护着。
为了适应这种规模,开发模式需要进行改变。这在很多Web2.0的网站中都有所体现,有人称之为简单哲学。为了快速开发,系统设计也需要进行简化。杨勃说,“豆瓣网中间也做过一些变动,最初还是受原来做企业系统的影响,结构设计的太复杂,甚至还分了很多层。后来就简化了,因为太复杂之后就难以做快速开发。”
豆瓣现在采用的是敏捷开发的模式,这是一个快速开发、快速变化的体系,平均每两天就有新的功能出现。

系统构架延展性强、更新升级迅速
“Web2.0网站是快速变化的,并不是把所有的功能都在开始阶段完全实现。”杨勃说,“这就要求系统构架的可扩展性要做的很好。而且必须考虑将来规模可能带来的问题。豆瓣网一开始的架构设计就可以支撑上百万用户。”同时,基于Web的开发省去了客户端分发、维护的成本,因此可以做到“永远的 BETA”、随时更新和升级服务。据说,豆瓣学习对象Flickr的升级是以小时为单位的。

与用户交互频繁
Web2.0与用户的交互也是让网站快速完善的动力。网站运行之后,听取用户的反馈,指导下一步的应用开发。“豆瓣网有一个站务论坛,很多人经常发言提出自己的需求。”比如豆瓣刚开张时,由于每个人都可以自由创建小组或者参加小组,于是用户可能会同时参加几十个小组。但由于很多小组人数比较少,可能很长时间才会有人发言,于是大家就要求有一个功能,把所有小组的最新发言聚合在一起。杨勃很快实现了这个功能,事实也证明非常受欢迎。

技术人员学习能力强
杨勃认为,由于是小团队,工作模式就不能是一个经理带一帮人,而是大家都需要参与编程。而且,对综合学习能力的要求比较高。“因为技术变化很快,现在对任何技术再熟悉,经验再多,过几个月可能又出现了新的技术,因此最重要的是要能够跟踪最新的知识。而且由于最新的Web2.0模式和思想都是从国外发起的,所以程序员要具有在英文环境中直接沟通的能力,能够直接参与到国外的开源项目中,而不是看已经翻译为中文的文档。”杨勃表示,自己学习Python 也是随豆瓣网开始的。“Python很适合敏捷开发,最初的时候曾经尝试过使用Ruby,后来由于豆瓣网需要很多后台的程序,Python更适合编写一些后台模型程序,最终前台也统一为一种语言。”杨勃之前对MySQL了解很少,但在做豆瓣网的过程中,很快将知识弥补上来。“现在我们有几个数据库都可以做同步,有些内容我们还向开源社区进行了回馈。”
豆瓣选用了很多开源产品,杨勃认为:“用好开源产品是非常关键的。豆瓣的平台是基于Linux,数据库用的是MySQL,除了数据挖掘和搜索,其它都是在开源产品之上开发的。因为现在有很多非常成熟的产品和模块,没有必要从头做,只要有能力了解获得这方面的知识,都能够很快在别人的基础上开发自己的系统。”


豆瓣是一个使用Python进行开发的网站
在开发框架方面,豆瓣主要使用Quixote(一个轻量级的Python Web框架,简单、高效,代码简洁);后台运行的Web服务主要使用Web.py(web.py也是一个Python的Web框架,简单且功能强大)。

豆瓣网可分割成两大块:一块是前端的Web,也就是用户在浏览器访问的时候会触发一系列的操作,从数据库拿出数据,渲染成HTML页面反馈给用户,这是前端;另外一块是后端,在豆瓣有一个很强的数据挖掘团队,每天把用户产生的数据进行分析,进行组合,然后产生出用户推荐,然后放在数据库里面,前端会实时的抓取这些数据显示给用户。

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

豆瓣现在还没有达到数据库分片的程度。最常见的手段是,按照功能分区。我们会把数据表分成几个独立的库,现在是一共有4个库。每个表都是库的一个部分,每个库会有主副两个。通过这种方式来减轻数据库的压力,当然这个是现在的方案,再往后的话,表的行数会增长,到达一定的程度后,还要进行水平分割,这是肯定的。然后我们现在的技术方面,在操作数据库之前,首先获取数据库的游标,有一个方法,这个方法会干所有的事情,我们以后做的时候会从这个方法中进行判断该从哪取东西。这个架构已经在了,只是现在还没有做这一步而已。

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    网站运营微信营销网络赚钱