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

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

1,938

Published on

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

No Downloads
Views
Total Views
1,938
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
52
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

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

    Clipping is a handy way to collect important slides you want to go back to later.

×