豆瓣网技术架构发展历程
2020-02-27 230浏览
- 1.豆瓣网技术架构的 发展历程 Text 2009.4 洪强宁 hongqn@douban.com Monday, March 23,
- 2.豆瓣网简介 • • 2005年3月上线 • 读书、电影、音 乐、小组、同 城、九点 • 我的豆瓣、友邻 Monday, March 23, 以分享和发现为 核心的社区
- 3.一些数据 • 2.8M注册用户,约1/4活跃用户 • 千万级非注册用户 • 20M动态请求/天,峰值500~600/sec • 23台普通PC服务器(1U*15/2U*8) • 12台提供线上服务 • 38G memcached Monday, March 23,
- 4.单服务器 • • • • • • 单台1U服务器 (frodo) • • 单核AMD Athlon 64 1.8GHz 1G内存,160G SATA*2 Gentoo Linux MySQL 5 Quixote (a Python web framework) Lighttpd + SCGI (shire) Memcached (!) Monday, March 23,
- 5.Internet Lighttpd SCGI App FS MySQL Monday, March 23, Memcache Static Files
- 6.Gentoo Linux • 容易维护 • emerge mysql • ebuild 便于管理 patch • 只安装需要的东西 • 安全性 • GLSA(Gentoo Linux Security Advisories) Monday, March 23,
- 7.MySQL • • • • The world’s most popular open source database 写少读多/写多读少 ==> MyISAM 读写并发高 ==> InnoDB Replicate for backup Monday, March 23,
- 8.Python • • • • 开发迅速 Battery Included 第三方库成熟 社区成长中 • Monday, March 23,CPUG:http://python.cn/
- 9.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 lambdareq:subject_ui(req, subject) # luz/subject/subject_ui.ptl def subject_ui [html] (request, subject): site_header(request) “%s” % subject.title site_footer(request) Monday, March 23,
- 10.Lighttpd • 很好的动态和静态性能 • 原生SCGI支持 •SCGI:一个简化版本的FastCGI,由 Quixote开发者开发 • 所有的请求都通过80端口的lighttpd进程 分发,动态内容走SCGI到localhost上的 Quixote进程。 Monday, March 23,
- 11.Memcache • • 从上线起就在使用,有效减轻MySQL负担 对libmemcache做了python封装(使用Pyrex),性能是 纯python版的3x+ def get_subject(subject_id): subject = mc.get(‘s:'>s: