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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 豆瓣简介: •2005年3月上线 •以分享和发现为核心的社区 •读书、电影、音乐、小组、同城、九点 •我的豆瓣、友邻  一些数据: •2.8M注册用户,约1/4活跃用户•千万级非注册用户•20M动态请求/天,峰值500~600/sec•23台普通PC服务器(1U*15/2U*8) ...

豆瓣简介:

•2005年3月上线

•以分享和发现为核心的社区

•读书、电影、音乐、小组、同城、九点

•我的豆瓣、友邻


 一些数据:

•2.8M注册用户,约1/4活跃用户
•千万级非注册用户
•20M动态请求/天,峰值500~600/sec
•23台普通PC服务器(1U*15/2U*8)

•12台提供线上服务
•38G memcached

单服务器:

• 单台1U服务器 (frodo)
• 单核AMD Athlon 64 1.8GHz
• 1G内存,160G SATA*2
• Gentoo Linux
• MySQL 5
• Quixote (a Python web framework)
• Lighttpd + SCGI (shire)
• Memcached (!)

                                                Gentoo Linux

•容易维护
•emerge mysql
•ebuild 便于管理 patch
•只安装需要的东西
•安全性
•GLSA(Gentoo Linux Security Advisories)

                                                MySQL

•The world’s most popular open source database
•写少读多/写多读少 ==> MyISAM
•读写并发高 ==> InnoDB
•Replicate for backup

                                              Python

•开发迅速
•Battery Included
•第三方库成熟
•社区成长中
•CPUG: http://python.cn/

                                           Quixote


简单,轻量,易于实现REST风格的URL

当时还没有Django, TurboGears, Pylons这些选择,只有一
个笨重的ZOPE

http://www.douban.com/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)

                                                   Lighttpd

•很好的动态和静态性能
•原生SCGI支持
•SCGI: 一个简化版本的FastCGI,由
Quixote开发者开发
•所有的请求都通过80端口的lighttpd进程
分发,动态内容走SCGI到localhost上的
Quixote进程。

                                                     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

                                                         问题出现

•1.2M动态请求/天
•磁盘IO成为瓶颈
•需要寻找新机房

                                                           解决方案

•购买两台1U服务器
•pippin 和 meriadoc (后改名merry)
•双核, 4G内存,250G SATA*3
•一台作为应用服务器,一台作为数据库服务器
•迁移到双线双IP机房,使用DNS解析不同网段
IP -_-b
•开始多人协作开发,frodo做为开发用机
(subversion, trac, etc...)

                                   几点发现

•数据库的内存分配对性能影响重大
•innodb_buffer_pool_size
•磁盘随机寻道速度比吞吐量更重要
•网上找来的IP段分布很不靠谱
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
架构师 中间件
阿里中间件首席架构师钟华:《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》新书出版(含试读PDF)!
阿里中间件首席架构师钟华:《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》新书出版!
33928 2
|
8月前
|
移动开发 前端开发 JavaScript
前端的发展历程(下)
前端的发展历程(下)
63 0
|
3月前
|
搜索推荐 Cloud Native 算法框架/工具
都闪开,这才是最牛x技术搜索引擎【云原生】
都闪开,这才是最牛x技术搜索引擎【云原生】
|
8月前
|
Web App开发 XML 移动开发
前端的发展历程(上)
前端的发展历程
46 0
|
11月前
|
存储 资源调度 算法
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践(中)
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践
234 0
|
11月前
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践(下)
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践
186 0
|
11月前
|
算法 搜索推荐
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践(上)
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践
195 0
|
消息中间件 Cloud Native 中间件
盘点2022:开源热度居高,技术思考与经验分享是开发者的最爱
阿里巴巴中间件陪伴大家又是一年了,春节即将到来,我们不禁回望,这一年我们留下了什么,又收获了什么。
118 0
|
Kubernetes Cloud Native 架构师
《云原生技术与架构实践年货小红书》电子版下载
为了让更多的开发者、架构师获取云原生所带来的技术红利与众多企业的实践经验,阿里巴巴云原生推出《云原生技术以及架构实践年货小红书》。
93 1
《云原生技术与架构实践年货小红书》电子版下载
|
存储 消息中间件 数据可视化
百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(二)
百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(二)
370 0
百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(二)