豆瓣网技术框架发展历程

上传人:我*** 文档编号:133014468 上传时间:2020-05-23 格式:PDF 页数:54 大小:1.36MB
返回 下载 相关 举报
豆瓣网技术框架发展历程_第1页
第1页 / 共54页
豆瓣网技术框架发展历程_第2页
第2页 / 共54页
豆瓣网技术框架发展历程_第3页
第3页 / 共54页
豆瓣网技术框架发展历程_第4页
第4页 / 共54页
豆瓣网技术框架发展历程_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《豆瓣网技术框架发展历程》由会员分享,可在线阅读,更多相关《豆瓣网技术框架发展历程(54页珍藏版)》请在金锄头文库上搜索。

1、Text 豆瓣网技术架构的 发展历程 2009 4 洪强宁 hongqn Monday March 23 2009 豆瓣网简介 2005年3月上线 以分享和发现为 核心的社区 读书 电影 音 乐 小组 同 城 九点 我的豆瓣 友邻 Monday March 23 2009 一些数据 2 8M注册用户 约1 4活跃用户 千万级非注册用户 20M动态请求 天 峰值500 600 sec 23台普通PC服务器 1U 15 2U 8 12台提供线上服务 38G memcached Monday March 23 2009 单服务器 单台1U服务器 frodo 单核AMD Athlon 64 1 8GH

2、z 1G内存 160G SATA 2 Gentoo Linux MySQL 5 Quixote a Python web framework Lighttpd SCGI shire Memcached Monday March 23 2009 Internet MySQL Lighttpd App SCGI MemcacheStatic Files FS Monday March 23 2009 Gentoo Linux 容易维护 emerge mysql ebuild 便于管理 patch 只安装需要的东西 安全性 GLSA Gentoo Linux Security Advisories

3、Monday March 23 2009 MySQL The world s most popular open source database 写少读多 写多读少 MyISAM 读写并发高 InnoDB Replicate for backup Monday March 23 2009 Python 开发迅速 Battery Included 第三方库成熟 社区成长中 CPUG Monday March 23 2009 Quixote 简单 轻量 易于实现REST风格的URL 当时还没有Django TurboGears Pylons这些选择 只有一 个笨重的ZOPE luz subject

4、 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 s subject title site footer request Monday March 23 2009 Lighttpd 很好的动态和静态性能 原生SCGI支持 SCGI 一个简化版本的FastCGI 由 Quixote开

5、发者开发 所有的请求都通过80端口的lighttpd进程 分发 动态内容走SCGI到localhost上的 Quixote进程 Monday March 23 2009 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 subjec

6、t id subject Subject store farm fetchone mc set s subject id subject return subject Monday March 23 2009 问题出现 1 2M动态请求 天 磁盘IO成为瓶颈 需要寻找新机房 Monday March 23 2009 解决方案 购买两台1U服务器 pippin 和 meriadoc 后改名merry 双核 4G内存 250G SATA 3 一台作为应用服务器 一台作为数据库服务器 迁移到双线双IP机房 使用DNS解析不同网段 IP b 开始多人协作开发 frodo做为开发用机 subversio

7、n trac etc Monday March 23 2009 Internet DNS Lighttpd Lighttpd App MySQL HTTP Proxy MemcacheStatic Files FS SCGI Monday March 23 2009 几点发现 数据库的内存分配对性能影响重大 innodb buffer pool size 磁盘随机寻道速度比吞吐量更重要 网上找来的IP段分布很不靠谱 Monday March 23 2009 问题出现 1 5M动态请求 天 尚未到性能瓶颈 机房不靠谱 频繁故障 IP段分布数据不靠谱 用户反映访问缓慢 Monday March 2

8、3 2009 解决方案 换到靠谱的机房 多线单IP BGP 购买了一台新服务器 arwen 74G 1w转 SATA 3 做为数据库服务器 开始使用专门的服务器作后台计算 Monday March 23 2009 Internet Lighttpd App Memcache Data Mining MySQL Master MySQL Slave Replicate Static Files SCGI read write Monday March 23 2009 问题出现 2M动态请求 天 静态文件服务磁盘IO成为瓶颈 上百万的小图片 用户头像 封面图 片 etc 数据库服务器接近瓶颈 Mo

9、nday March 23 2009 解决方案 购买三台服务器 双核 4G 250G SATA 3 将图片从一个大目录切分成10000个文件一个目录 mod rewrite保持URL不变 独立的图片lighttpd进程 启用mod memcache模块 缓存小图片 减小磁盘IO对页面访问的影响 将应用服务从web服务器独立出去 把更多的内存分配给静态文件服务 增加一个只读数据库 Monday March 23 2009 Web Service Internet Lighttpd App Memcache MySQL Master MySQL Slave Replicate Static Fil

10、es Lighttpd WebDAV WebDAV SCGI Memcache Spiders Data Mining MySQL Slave Replicate Lighttpd w mod memcache HTTP Proxy store farm store farmr write read Monday March 23 2009 只读数据库 store增加farmr属性 为一个可用的只读数据库游标 头疼的replicate delay问题 辅库复制需要时间 更新主库后 下一个请求往往就是要读数据 更新数据后刷 新页面 从辅库读会导致cache里存放的是旧数据 灵异事件 解决方法 更

11、新数据库后 在预期可能会马上用到的情况下 主 动刷新缓存 不完美 but it works Monday March 23 2009 避免replicate delay引 起的灵异事件 def get subject sid sbj mc get s sid if sbj is None sbj flush subject sid store farmr return sbj def flush subject sid cursor None cursor cursor or store farm cursor execute select from subject subject Subje

12、ct cursor fetchone mc set s sid subject return subject def update subject subject props store farm execute update subject mit flush subject subject id store farm Monday March 23 2009 问题出现 2 5M动态请求 天 数据库磁盘空间不够了 我上 九点数据量庞大 SATA盘故障率高 数据库压力增大 Monday March 23 2009 解决方案 Scale Up 购买四台1U服务器 16G内存 147G SCSI

13、2 500G SATA SCSI 做 RAID 0 用MySQL Slave来保证冗余 增加memcached节点数目 所有的MyISAM表都改为InnoDB表 提高内存利用效率 将全文搜索移至Sphinx Monday March 23 2009 Internet Lighttpd App Memcache MySQL Master MySQL Slave Replicate Static Files Lighttpd WebDAV WebDAV SCGI Memcache Spiders Lighttpd w mod memcache HTTP Proxy store farm store

14、 farmr Sphinx Web Service Memcache Memcache Web Service Monday March 23 2009 问题出现 5 2M动态请求 天 图片流量费用成为最大成本 Web服务器的磁盘IO还是会影响动态页 面性能 应用服务器进程数不够了 机柜空间不够了 Monday March 23 2009 解决方案 天津的机房便宜一些 承担图片流量 后台数据挖掘计算 容灾备份 购买3台1U服务器 4核 32G内存 1T SATA 3 优化前端 启用 和 域名 lighttpd 1 5 with aio support 部署LVS Scale Up 应用服务器内

15、存升级 4G 8G Monday March 23 2009 Internet Lighttpd Static Files Lighttpd WebDAV Lighttpd HTTP Proxy Lighttpd 1 5 w mod cache Lighttpd 1 5 w mod cache LVS LB Master LVS LB backup Keepalived Monday March 23 2009 MySQL Master MySQL Slave Replicate Data Mining Data Mining MySQL Slave replicate read read w

16、rite write Monday March 23 2009 问题出现 6 4M动态请求 天 5M PV 应用服务器成为瓶颈 内存 占用总是增长 似乎有内存泄 露 CPU memcache对象序列化 反序列化 Monday March 23 2009 解决方案 第二台应用服务器上线 lighttpd的mod scgi只能round robin lighttpd 1 5不稳定 mod proxy proxy balance fair load based passive balancing 当进程占用内存超过阈值 当前请求完成后自杀 使用spread聚合日志 Monday March 23 2009 Lighttpd Static Files Lighttpd WebDAV Lighttpd HTTP Proxy App Memcache Lighttpd AppMemcache Lighttpd Internet SCGI SCGI HTTP Proxy HTTP Proxy Log Aggregator spread spread Monday March 23 2009 问题出现

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号