曹力:屌丝创业者如何打造日PV百万的网站架构.pdf

上传人:爱问知识人 文档编号:3333790 上传时间:2019-08-13 格式:PDF 页数:63 大小:2.37MB
返回 下载 相关 举报
曹力:屌丝创业者如何打造日PV百万的网站架构.pdf_第1页
第1页 / 共63页
曹力:屌丝创业者如何打造日PV百万的网站架构.pdf_第2页
第2页 / 共63页
曹力:屌丝创业者如何打造日PV百万的网站架构.pdf_第3页
第3页 / 共63页
曹力:屌丝创业者如何打造日PV百万的网站架构.pdf_第4页
第4页 / 共63页
曹力:屌丝创业者如何打造日PV百万的网站架构.pdf_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《曹力:屌丝创业者如何打造日PV百万的网站架构.pdf》由会员分享,可在线阅读,更多相关《曹力:屌丝创业者如何打造日PV百万的网站架构.pdf(63页珍藏版)》请在三一文库上搜索。

1、 程序员如何一个人打造 日PV百万的网站架构 曹力 ShiningRay 本人经历 2008年2011年维护过糗事百科 2011年2012年创办过博聆网 2012年2013年暴走漫画 深受广大无节操朋友的喜爱 的特征 穷! CPU吃紧(4核不错了) 内存吃紧(8G高端啊) 磁盘IO吃紧(RAID真奢侈) 勒紧裤带买个一两台服务器 野心大! 要赚大钱! 要逆袭有木有! 为何选用Ruby/Rails? 因为别的我不会啊! 智商情商有限 用户说:We dont care! 我们也有闪光点 勤奋 坚持 有那么一点点聪明 Lets go! 回顾应用场景 功能类似Blog、留言板 用户以浏览为主 同一时刻

2、大部分用户看到的内容大体一致 有一定的交互(投票,留言,私信) 需要SEO 初始的架构 Rails Rails Mysql Memcache Nginx Rails Rails Nginx 一台服务器 穷 初始的架构 勉强支持了每日110w PV的请求 目标每天100wPV 怎么破!? 难点 Rails在大并发下效率差 每个页面都需要显示用户信息 每个文章的顶埋数量变化非常快 根据长期观察 50%80%访客是不登陆的 首页等几个页面占了50%以上访问量 页面上80%内容是不变的,剩下的主要为用 户相关信息 根据长期观察 用户关注的核心是内容,这部分是变化少 未登录用户交互更少,也不关注数据的准

3、 确性 有变化的部分 策略 未登录用户直接返回缓存内容 分离页面上的静态内容和动态内容 先载入相对不常变的缓存的内容 然后加载经常变化的内容 Rails Mysql Memcache Nginx PageCache 浏览器 /session.json /scores.json? ids=1,2,3,4 异步载入优势 最快速地让用户看到他们最希望看到的页 面内容 子请求不进行模板渲染 子请求仍然可以进行缓存 子请求可以和HTTP API放在一起实现(可单 独进行优化,如使用其他框架或语言开发) 简单估算 首页等页面可缓存的页面占80%访问量=80w PV 即,实际只有20w的请求是需要单独处理

4、的 完整页面 80%的用户是非登录用户,80w实时数据请 求可以被(短时)缓存。 20w用户信息的请求(亦可缓存) 一台服务器一天100wPV 挑战成功 计算有错误? 不要在意这种细节 有一天高帅富王尼玛找到我 曹力,我们来搞一票大的吧 目标 日访问量1000万PV! 高帅富的开发方式 我眼中的软件开发 老板眼中的软件开发 X 10个月 X 1个月 系统性能不够?! 多买几台服务器! 我眼中的容量规划 老板眼中的容量规划 1台服务器=100w PV 10台 = 10 * 100w PV = 1000w PV 100台 = 1亿 PV 1亿 PV = $ 这不是扯淡么 Thanks to Ope

5、n Source Software Thanks to Cloud computing 有了云服务 现在1人顶过去10人 一口气弄10台服务器 腰不酸腿不疼 妈妈再也不用担心我的Scalability 一些准备工作 监控所有服务的状态 服务器的CPU 内存 磁盘IO MySQL slowlog 各个页面的效率 一些准备工作 优化系统参数sysctl.conf 优化Ruby虚拟机的参数 优化MySQL参数 优化磁盘参数、文件系统 And more . Challenge1. 多台Rails服务器与缓存 caches_page的问题 只能使用文件系统 多机共享则必须使用NFS NFS需要进行较多的

6、配置、挂载 如果不进行定期清理,文件数量会不断增 加 如果在文件数量很多,遍历目录进行清理 消耗时间太长 优势:省内存。 文件系统Memcache Memcache的优势 配置简单 nginx内建对memcache后端的支持 自动失效 SuperCache https:/ super_caches_page :index use Rails.cache Rails Mysql Nginx MemCache Rails Rails Challenge2. 缓存的横向扩展 nginx+多台memcache的问题 nginx不支持使用一致性哈希来选择 memcache后端(可以使用第三方模块) Me

7、mbase to rescue Membase特点 完全兼容Memcached协议 横向扩展性极强 任意节点可以读取到全部数据 GUI操作简便 高可用性,自动故障转移 Couchbase/Membase 控制台 Rails Mysql Master Membase Nginx Nginx Nginx Membase Membase Rails Rails Rails Rails Rails Mysql Slave Challenge3. Dog Pile Effect Whats Dog Pile Effect A Rails Rails Rails Rails A A A A ? Rails

8、 Rails Rails Rails A A A A 解决方案 WriteThrough:不失效缓存,当更新数据 后直接更新缓存(适合Model层) Lock:当缓存对象过期时,只有获得锁的 进程才能更新缓存 过期A Rails 1 Rails 2 A A lock 无法获取锁 使用过期的内容 Lock 机制 Distributed Lock实现方式 Memcache的原子操作 Redis的原子操作 SuperCache super_caches_page :index, :lock = true 日1000万PV达成! 总结 使用80/20原则进行缓存 使用云服务减少开发量 Membase替换Memcache 使用锁来防止Dog Pile Effect 谢谢观赏 谢谢观赏 http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1