豆瓣的基础架构

豆瓣的基础架构

 

豆瓣整个基础架构可以粗略的分为在线和离线两大块。在线的部分和大部分网站类似,应用层主要是做运算,将运算结果返回给前面的用户,现在大部分豆瓣的应用基本都跑在DAE上面了;应用后面的基础服务也 跟其他网站差不多,在选择nosql数据库的时候,豆瓣选择了国内比较早开源的KV数据库-BeansDB,BeansDB项目可以说是一个简化版的AWS DynamoDB,BeansDB主要的特点是支持海量KV数据库——相比Redis这种支持几十个G到几百个G的 内存KV数据库,BeansDB可以支持到上百T的数据。另外BeansDB最大的好处就是运维很简单,性能、可用性、扩容都很好,也实现了最终一致性。

在线部分,在豆瓣内部建立了两个不同的BeansDB集群,一个是doubandb,一个是doubanfs,分别针对不同的场景。doubandb主要存储 小型文本数据,如影评、用户个人介绍、帖子内容等,这样的好处是可以大大降低我们对MySQL的性能依赖,算是给MySQL减负;doubanfs主要存 放图片和音频等中型数据。DAE可以说是基于很多以前积累的、旧的组件做起来的。我们做的这种对内的PaaS,相比对外的PaaS而言做了很多简化,尤其是安全方面如应用间 隔离、权限管理方面,我们都不用像公有云那样花大量精力去做,所以工作量其实还好。DAE现在在计划开源,当然它现在只支持Python应用。以后我们也 许会让DAE支持Go语言。

离线部分则包括数据挖掘、数据分析等,技术组件分别是海量分布式文件系统MooseFS,这个文 件系统的结构类似HDFS,用C语言编写,其好处在于FUSE模块实现的比较好,用文件系统就可以直接进行操作,而不需要专门的命令,可以支持的数据量也 很大。另外就是自己开发的分布式计算平台DPark。DPark继承了Spark可以使用内存做为缓存加速分布式计算这个优点,在豆瓣的应用场景下,因为我们的 离线计算很多是推荐算法计算,这种计算涉及大量的迭代算法,如果每次计算的结果都入磁盘再在下一轮计算加载,那性能是很差的,所以DPark能够大幅提升性能

对于新技术的引入上,豆瓣整体是比较偏激进的,鼓励大家去看看新的技术。当然也不会看到新的就上,这里面有一些限制:一个是比较重要 的服务如果要上新的技术,一定要有成功案例,且成功案例有跟我们量级差不多的规模,这样可以降低风险;另一个是对于引入的新技术一定要吃透——大部分引入 的技术肯定是要做二次开发的,所以拿进来的技术你必须保证能完全理解它的代码结构,出了问题能修,能去掉自己无法掌控的东西。

 

 参看:云时代架构笔记

posted @ 2019-06-07 19:15  芬芳指法  阅读(282)  评论(0编辑  收藏  举报