Your SlideShare is downloading. ×
腾讯大讲堂08 可扩展web架构探讨
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

腾讯大讲堂08 可扩展web架构探讨

1,889
views

Published on


0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,889
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
48
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 可 展扩 Web 架 探构 讨 echouzhou
  • 2. 高性能网站 秒能 理成千上万个 求, 是每 处 请 关键 Scalability 良好的可伸 性缩 Caching 无 不在的 存处 缓
  • 3. Scalability 是系 不断 用 数量的能力统适应 增长 户 性能平稳 均衡、容负载 错 接入保 、护 Cache 冲缓 容容易扩 所有 件都 当可以 展组 应 简单扩 无共享架构 可控状态
  • 4. Vertical Scaling 更大的服 器务 更快的 CPU 展性扩 / 价格比很差 超 算机都是平行 展的级计 扩 !
  • 5. 可伸 性缩 vs. 高性能 在系统可扩展的前提下提高性能
  • 6. Web 的可 展性扩 Web 服 器务 均衡负载 南北互通
  • 7. Web 服 器务
  • 8. Web 服 器的务 选择 Apache 不适合静 文件的支持态 内存、 CPU 占用比 大较 非常成熟,功能强大,配置丰富 TWS 架 中心自主构 开发 对 CGI 的支持比 独特较 CGI 性能非常好 Qhttpd 公司内部 件软 只适合静 文件的支持态 非常 定可靠稳 Lighttpd 、 Nginx 内存、 CPU 小开销 静 文件性能 出很多态 胜 越来越多的网站 始用它开
  • 9. 性能改进 、静 内容分动态 态 开 静 文件:态 qhttpd/lighttpd/nginx 内容:动态 Apache 某些静 文件 :态 压缩传输 lighttpd 的 mod_compress 内容性能提升动态 传统 CGI PHP 、 Rails 、 SSI FastCGI TWS CGI
  • 10. FastCGI 出 很早的技现 术 少减 传统 CGI 用的消耗调 基本保持源代 的兼容性码级 #include <stdio.h> #include <fcgi_stdio.h> While (FCGI_Accept() >= 0) { // CGI 代码 }
  • 11. FastCGI 的配置
  • 12. 均衡技负载 术
  • 13. 均衡负载 (Load Balancing) 是可 展性的扩 关键 提高网站的可用性 接入保 、失效护 检测
  • 14. DNS 轮询 是最 的 均衡简单 负载 域名 置多条设 A ,记录 DNS 轮询
  • 15. 硬件 均衡负载 Cisco Alteon Foundry F5
  • 16. 件 均衡软 负载 免 解决方案费 Linux Virtural Server 基于内核 , 通 修改过 TCP/IP 数据 文 均衡, 保报 实现负载 确 可用性的守 程护进 ldirectord 高性能,部署相 麻 ,不便于 察对 烦 观 HAproxy 基于 layer 7 效率相 低,部署容易,有对较 web 界面便于 察观
  • 17. Layer 4 TCP 的交层 换 根据源 / 目的地址和端口进 行 均衡负载 均衡策略负载 round-robin 最少 接连
  • 18. Layer 7 基于 HTTP 求请 最常用的是 URL 分发
  • 19. 南北互通
  • 20. 双 服 器线 务 多个 IP 地址 一个 IP 地址,多个路由 深南花 :园 信、网通、教育网三通机房电 北方网通 深 网通仍然很慢访问 圳
  • 21. 动态 DNS 根据来自不同 ISP 的用 接入到就近的服 器户 务 公司自己 的开发 动态 DNS 件软 自己 的开发 DNS 服 器务 IP 地址 和库 IP 速测 存在 分布的业务 问题
  • 22. CDN Content Delivery Network 就近接入 代理 存缓 域名解析 加增 CNAME 即可
  • 23. Caching
  • 24. Web Cache 的类型 器浏览 Cache 私有 存缓 可以 存“缓 private” 响应 Cache Proxy Surrogates - 存代理缓 Web 加速 共享 存缓 只能 存“缓 public” 响应
  • 25. 一些数据 多至 43% 的 Web 求 不可 存的内容请 访问 缓 Web 存命中率缓 为 40% 左右是比 的较现实
  • 26. 面静 化页 态 理想状 :态 静 化所有 面—— 做不到态 页 实际 如何静 化?态 由模板生成静 面态页 定 或有更新时 时 困 :难 成千上万个 面的静 化不页 态 现实 面有 体,不适合静 化页 变 态 多台服 器 麻务 维护 烦 面既包含静 内容,又包含 内容页 态 动态
  • 27. 面 存页 缓 按需静 化态 前端 cache 存 面内容储动态页 mod_cache Squid Varnish* 遵循 HTTP 的 Cache 范规 可精 控制细 Cache Expires Cache-control 合适 GET 类 CGI 求请
  • 28. HTTP 的 Cache 范规 要充分发挥 Cache 的效用,就必 了解须 HTTP Cache 范和机制规 条件 求请 Expiration Cache-control Cookie
  • 29. 条件 求请 If-Modified-Since/Last-Modified 1. 服 器 :务 响应 200 OK Last-Modified: … 2. 器 求浏览 请 GET … HTTP/1.1 If-Modified-Since: … 3. 服 器务 响应 200 OK 或 304 Not Modified
  • 30. 条件 求请 (2) If-None-Match / ETag 1. Server 响应 200 OK ETag: abcdef 2. 器 求浏览 请 GET … HTTP/1.1 If-None-Match: abcdef 3. Server 响应 200 OK 或 304 Not Modified
  • 31. Expiration Expires 置 象的 失效设 对 绝对 时间 是 HTTP/1.0 范规 max-age 是 Cache-control 的一个指令 置 象的年 (秒数)设 对 龄 是 HTTP/1.1 范规 max-age 先于优 Expires
  • 32. Cache-control no-cache=[Set-cookie] 器和浏览 squid 都不可以 存缓 再次使用前需 送条件 求发 请 max-age=NNN 指定 存有效 (秒)缓 时间 public 器和浏览 squid 都可以 存缓 max-age 指定 存缓 时间 private 只有 器可以 存浏览 缓
  • 33. Cookies HTTP 求携请 带 Cookies: Cookie: name=profile,domain=www.bigmoney.com, path=mysecrets.html, cookie=day-trader HTTP 置响应设 Cookies: Set-cookie: name=profile,domain=www.bigmoney.com, path=mysecrets.html, cookie=day-trader Cached content 需要的 候才 置时 设 Cookies—— 太理想化 Squid 添加一个 IMS 头
  • 34. 一些典型的 Cache 景场 返回个人信息 Cache-control: private, max-age=NNN CGI 写操作 Cache-control: no-store, no-cache CGI 取状 等信息获 态 Cache-control: public, max-age=NNN
  • 35. QQvideo 践分享实
  • 36. QQvideo Web 架构图
  • 37. 践要点实 3DNS + HAProxy 均衡、接入保实现负载 护 、静 文件分用不同服 器动态 态 务 首 静 化页 态 某些 繁 用频 调 CGI : Squid 存缓 播放:视频 CDN 加速 略 :缩 图 Squid 存缓 Web 数据 存:缓 Memcached
  • 38. QQvideo 的一些数据 HAProxy : 每天转发 HTTP 求:请 5500 万 CPU 占用率: 10~20% <增加 片>图 片图 Squid: 命中率: 90% <增加 片>图 Memcached : 命中率: 40% 左右 <增加 片>图
  • 39. 相 件介关软 绍
  • 40. HAProxy http://haproxy.1wt.eu 特色 L7 交换 采用 epoll ,效率很高 配置 活,部署很容易简单灵 Graceful restart – 不影响已有 接连 Web 控界面 – 清晰直监 观 内容分 (发 Content Switching) ACL 定义规则 ACL 活 合 分灵 组 选择 发 backend 求请 / 响 改写应头 均衡和 保负载 过载 护 均衡策略:加权负载 round-robin 、 Source 、 URL Sticky sessions 接入 接数限制连 后端服 器健康务 监测
  • 41. HAproxy 与 LVS 比较 HAProxy 效率不如 LVS User 级 vs. 内核级 HAProxy 部署简单 一个程序 vs. 内核 patch HAProxy 功能 富丰 L7 vs. L4 HAProxy 性能可 足大部分网站需要, 到 大满 达 较 规 模 可改用时 LVS.
  • 42. HAproxy 配置 URL 分发规 则 多个 server 池 Sticky sessions 健康检测和接入 限制
  • 43. HAProxy Web 界面
  • 44. Memcached http://www.danga.com/memcached 高性能的,分布式的内存 象 存系对 缓 统 Epoll ,效率高驱动 高效的内存管理机制 存 象可 置缓 对 设 Expire 时间 使用 ,部署更简单 简单 万金油 Web Cache 昵称 存缓 用 看 史户观 历 后台管理系统 用 操作 率控制户 频
  • 45. Memcached 行状况运
  • 46. Squid http://www.squid-cache.org 有力的 争者竞 Varnish!
  • 47. Squid 控监
  • 48. !谢 谢