【深喉解读】豆瓣网的基础架构

【深喉解读】豆瓣网的基础架构 时间:2014-10-31 00:13 来源:InfoQ 作者:佚名   本文根据InfoQ中文站对豆瓣洪强宁(@hongqn)的沟通交流整理而成。洪强宁介绍了豆瓣的架构和组件,并分享了豆瓣基础平台部的一些团队经验。文中截图来自洪强宁在2013年CTO俱乐部中的分享。   嘉宾介绍   洪强宁,豆瓣首席架构师。豆瓣第一位全职员工。清华毕业后,洪强宁一直做嵌入式系统。在2002年开始接触Python语言,从硬件工程师变为软件工程师,对一种语言在计算机底层如何工作有
深入的理解。   架构   豆瓣整个基础架构可以粗略的分为在线和离线两大块。在线的部分和大部分网站类似:前面用LVS做HA,用Nginx做反向代理,形成负载均衡的一层;应用层主要是做运算,将运算结果返回给前面的用户,DAE平台是这两年建起来的,现在大部分豆瓣的应用基本都跑在DAE上面了;应用后面的基础服务也跟其他网站差不多,MySQL、memcached、redis、beanstalkd,不一样的是NoSQL的选择——BeansDB,这是我们在几年前开源的KV数据库,也是国内比较早开源的KV数据库。   BeansDB项目可以说是一个简化版的AWS DynamoDB,该项目在2008年启动,2009年开源,第⼀版使⽤tokyo cabinet作为存储引擎,2010年使⽤bitcask存储格式重写了存储引擎,性能更好。BeansDB对key做哈希运算找到节点来实现分布和冗余, 一个写操作会写好几个节点,而现在的配置是写三份读一份。BeansDB主要的特点是支持海量KV数据库——相比Redis这种支持几十个G到几百个G的内存KV数据库,BeansDB可以支持到上百T的数据。另外BeansDB最大的
好处就是运维很简单,性能、可用性、扩容都很好,也实现了最终一致性。   BeansDB中间的Proxy是用Go语言写的,也是一个开源的组件。
整体来说BeansDB的设计结构比较简单,相比Redis那种有多种value 类型的方式,BeansDB的Value比较简单一些。   在豆瓣内部建立了两个不同的BeansDB集群,一个是doubandb,一个是doubanfs,分别针对不同的场景。doubandb主要存储小型文本数据,如影评、用户个人介绍、帖子内容等,这样的好处是可以大大降低我们对MySQL的性能依赖,算是给MySQL减负;doubanfs主要存放图片和音频等中型数据。   DAE可以说是基于很多以前积累的、旧的组件做起来的。我们做的这种对内的PaaS,相比对外的PaaS而言做了很多简化,尤其是安全方面如应用间隔离、权限管理方面,我们都不用像公有云那样花
大量精力去做,所以工作量
其实还好。DAE现在在计划开源,当然它现在只支持Python应用。以后我们也许会让DAE支持Go语言。   上面是在线的部分,对高可用性和低时延有较大要求。离线部分则包括数据挖掘、数据分析等,技术组件分别是海量分布式文件系统MooseFS,这个文件系统的结构类似HDFS,用C语言编写,其好处在于FUSE模块实现的比较好,用文件系统就可以直接进行操作,而不需要专门的命令,可以支持的数据量也很大。另外就是自己开发的分布式计算平台DPark。   DPark顾名思义是Spark的Python实现,不过现在已经跟Spark越来越不一样了。和 Hadoop 相比,Spark可以使用内存做为缓存加速分布式计算,DPark继承了这个
优点,这对于大规模数据的迭代计算非常有用。在豆瓣的应用场景下,因为我们的离线计算很多是推荐算法计算,这种计算涉及大量的迭代算法,如果每次计算的结果都入磁盘再在下一轮计算加载,那性能是很差的,所以DPark能够大幅提升性能。另外,因为DPark的编写使用了函数式语言的特点,所以可以写的非常简洁:   到目前(2014年3月),DPark的集群规模和处理数据量已经比去年多了一倍左右,一天要处理60~100TB左右的数据。   团队   当前,我所负责的豆瓣平台部一共包括四个部分:核心系统,这块也是由我直接带领的,共6名工程师;DAE,现在是彭宇负责,共4名工程师;DBA两人;SA两人。   平台部负责的项目大多是跟业务无关的东西,贴近应用层的主要在产品线团队做,这个分工跟豆瓣工程团队的发展历史有关。早期豆瓣工程师还不多的时候,就已经分为两种倾向,一种是偏业务的,就是去做用户能看得见的东西;另一种是支持性的,运行在业务层下面、不被用户所感知的东西。下面这一层就衍变成了平台部门。   在豆瓣,不管是做产品还是做平台的工程师,技术实力都比较强,一个项目应该从哪个部门发起,并不是看这个任务的难度,而是看它是公共的还是业务特有的。有些项目即使未来可能会成为公共的,但一开始只是一个产品线需要,那么它也会从产品线发起。比如豆瓣的短信服务,最开始是产品线有需求,所以这些服务都是由他们发起完成的,平台这边主要负责提供建设服务的架构,比如DoubanService,告诉他们一个服务怎样去写、怎样去部署、怎样去对用户开放。短信服务后来成为很多产品线都在使用的服务,同时这个系统本身也越来越成熟,那么它逐渐就被转移到SA团队来进行维护。   核心系统组做过的项目,包括刚才提到的DPark、BeansDB,还有MooseFS这些二次开发的,还有搜索服务、信息推送的长连接服务等,大
大小小差不多有十几个。有些项目处于维护状态,所以需要的人不是那么多。   跟豆瓣其他工程团队一样,平台部也强制大家做code review。这对于核心系统来说很重要的一点在于,code review是一个知识共享的过程:我们人少项目多,所以很多项目都是一个人做主力,很容易就变成其他人不知道你这个项目具体是什么情况,而强制code review就可以实现一种公开透明的状态,让大家都了解每个项目在做什么。   在平台部,因为你做的所有东西都会影响到全公司,测试显然很重要,我们还做了另一件事来进行质量保证,那就是一个项目由谁来主导上线,谁就要负责这个项目的故障响应——所有运维、调整系统等SA的工作,你这个第一负责人都要参与。你做的东西的
好坏会影响到自己晚上能不能睡好觉,所以大家就会比较谨慎。灰度上线也是我们这边的通用做法。   平台部还有一点跟产品线不一样的是,平台部没有产品经理,所以你的工作方向更多是自己去找的,每个人自己发现问题的能力更重要。我们每个月都会问大家,你这个月想要解决什么问题?如果方向大家一致认可,那就去做。   最后,对于新技术的引入上,豆瓣整体是比较偏激进的,我们鼓励大家去看看新的技术。当然我们也不会看到新的就上,这里面有一些限制:一个是比较重要的服务如果要上新的技术,一定要有成功案例,且成功案例有跟我们量级差不多的规模,这样可以降低风险;另一个是对于引入的新技术一定要吃透——大部分引入的技术肯定是要做二次开发的,所以拿进来的技术你必须保证能完全理解它的代码结构,出了问题能修,能去掉自己无法掌控的东西。这也是为什么豆瓣不太可能在重要的地方引入Java的原因,除非别无选择,我们一般都是Python、C和Go。   采访人介绍   庄表伟,目前在华为2012实验室的研发能力中心工作。也是80年代中期就开始接触计算机和编程,一直对软件开发、技术社区、开源软件等抱有浓厚的兴趣。近期关注的
重点是:如何将开源社区的经验,应用于企业内部实践。

时间: 2024-08-01 14:23:00

【深喉解读】豆瓣网的基础架构的相关文章

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

概要如何应对高并发.大访问量?如何保证数据的安全性以及数据库大吞吐量?在海量数据下,如何进行数据表变更?DoubanFS以及DoubanDB的特点以及技术实现?在QConBeijing2009期间,InfoQ中文站有幸采访了洪强宁,探讨了相关话题. 个人简介洪强宁,2002年毕业于清华大学,现任北京豆瓣互动科技有限公司首席架构师.洪强宁和他带领的技术团队致力于用技术改善人们的文化和生活品质,在网站架构.性能.可伸缩性上进行深入研究.豆瓣网曾获软件中国2006年度最佳技术应用网站. 关于会议QCo

豆瓣的基础架构

本文根据InfoQ中文站对豆瓣洪强宁(@hongqn)的沟通交流整理而成.洪强宁介绍了豆瓣的架构和组件,并分享了豆瓣基础平台部的一些团队经验.文中截图来自洪强宁在2013年CTO俱乐部中的分享. 嘉宾介绍 洪强宁,豆瓣首席架构师.豆瓣第一位全职员工.清华毕业后,洪强宁一直做嵌入式系统.在2002年开始接触Python语言,从硬件工程师变为软件工程师,对一种语言在计算机底层如何工作有深入的理解. 架构 豆瓣整个基础架构可以粗略的分为在线和离线两大块.在线的部分和大部分网站类似:前面用LVS做HA,

云计算:解读可快速部署的云基础架构

对于云计算已经有了太多的阐述介绍,这使得很多用户有意愿来获取供应商所描绘的种种蓝图.不过在实践过程中,却又有着这样或那样的问题,使得用户不知该如何着手向云环境进行迁移. 公有云描绘了一个完全理想化的状况,在这其中,网络带宽是无限的,也不会涉及过多有关安全性和公司合规方面的要求.不过当IT部门在实际向云环境过度时,公有云在满足服务水平协议.安全性和合规遵从方面所面临的问题确实是短时间无法解决的.通过本地化网关实现混合云或许是目前考虑采用公有云的一种可行方式. 对于传统的烟囱式架构,向云环境过度一般

豆瓣网解彦博:好钢用在刀刃上

[CSDN报道]7月9日下午,CSDN TUP第十一期"架构师沙龙--互联网研发之道"在中国科学院计算技术研究所一层报告厅举行,本次活动邀请了业内研发实力很强的腾讯和豆瓣的嘉宾来分享互联网产品研发经验,业界超过300名技术管理者来到了现场.腾讯搜索运营部研发管理总监黎娟,腾讯R&D项目总监王晶,腾讯宠物客户端主程序.高级软件工程师黄朝兴,豆瓣网技术总监耿新跃,豆瓣网QA主管解彦博发表了精彩演讲. 豆瓣网QA主管解彦博 以下是豆瓣网QA主管解彦博的演讲实录(仅供参考): 感谢大家

豆瓣网QA主管解彦博演讲实录:好钢用在刀刃上

中介交易 SEO诊断 淘宝客 云主机 技术大厅 [CSDN报道]7月9日下午,CSDN TUP第十一期"架构师沙龙--互联网研发之道"在中国科学院计算技术研究所一层报告厅举行,本次活动邀请了业内研发实力很强的腾讯和豆瓣的嘉宾来分享互联网产品研发经验,业界超过300名技术管理者来到了现场.腾讯搜索运营部研发管理总监黎娟,腾讯R&D项目总监王晶,腾讯宠物客户端主程序.高级软件工程师黄朝兴,豆瓣网技术总监耿新跃,豆瓣网QA主管解彦博发表了精彩演讲. 豆瓣网QA主管解彦博 以下是豆瓣网

【TUP第11期】豆瓣网解彦博:好钢用在刀刃上

[CSDN报道]7月9日下午,CSDN TUP第十一期"架构师沙龙--互联网研发之道"在中国科学院计算技术研究所一层报告厅举行,本次活动邀请了业内研发实力很强的腾讯和豆瓣的嘉宾来分享互联网产品研发经验,业界超过300名技术管理者来到了现场.腾讯搜索运营部研发管理总监黎娟,腾讯R&D项目总监王晶,腾讯宠物客户端主程序.高级软件工程师黄朝兴,豆瓣网技术总监耿新跃,豆瓣网QA主管解彦博发表了精彩演讲. 豆瓣网QA主管解彦博 以下是豆瓣网QA主管解彦博的演讲实录(仅供参考): 感谢大家

05十大站长之一:一个人运营的“豆瓣”网

站长 一年前,北京朝阳门丰联广场的星巴克咖啡店多了一位常客.这个30多岁.衣着休闲的年轻人是"豆瓣"网创始人杨勃,网名"阿北",每天都会在这里饮着今日咖啡工作到下午4点多.据杨勃讲,"豆瓣"网几乎就是在北京和上海的几家星巴克写成的. 从2005年3月至今,由一个人开发.运营的书评.影评.乐评网站"豆瓣"网,已经有5万多注册用户,成了Web 2.0们的明星.这对于曾经把物理作为事业,"计算机不过是工具和兴趣"

Lync 2013部署过程:基础架构准备

实验环境全部采用的都是windows server2012标准版来部署 lync是基于微软的AD域来部署的,所以部署之前必须先架设AD域 这里预计准备9台虚拟机来部署服务端 192.168.1.*为内网网段 10.9.0.*为外网网段 这里记录一下自己搭建的过程,尽量把所需要的都截图出来,尽可能的详细, 必要的时候会进行相关的说明 在写好DNS记录以后,接着我们来准备基础架构 使用域管理员账号或授权的账号登陆服务器 打开lync2013安装程序,会提示安装C++2012 查看本栏目更多精彩内容:

基于成熟基础架构云平台的服务云建设

[硅谷网12月12日文]据<硅谷>杂志2012年第18期刊文,在分析当前云服务建设产业发展机遇的基础上,分析了传统云平台服务建设存在的主要问题.最后,基于成熟的基础架构云(IAAS)平台产品完成基础设施的整合和基础架构云的基础环境部署,验证基础架构云的相关技术能力.成熟度.安全性.可扩展性符合云计算云平台的要求. 0引言 近年来,全球云计算产业蓬勃发展.我国云计算产业兴起于20世纪90年代,云计算产业已经形成了竞争性的产业发展态势,以展览展示.网络游戏.远程教育.数字电视内容制作以及各种影视动