More Related Content
Similar to 腾讯大讲堂08 可扩展web架构探讨
Similar to 腾讯大讲堂08 可扩展web架构探讨 (20)
More from George Ang (20)
腾讯大讲堂08 可扩展web架构探讨
- 3. Scalability
是系 不断 用 数量的能力统适应 增长 户
性能平稳
均衡、容负载 错
接入保 、护 Cache 冲缓
容容易扩
所有 件都 当可以 展组 应 简单扩
无共享架构
可控状态
- 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 代码
}
- 16. 件 均衡软 负载
免 解决方案费
Linux Virtural Server
基于内核 , 通 修改过 TCP/IP 数据 文 均衡, 保报 实现负载 确
可用性的守 程护进 ldirectord
高性能,部署相 麻 ,不便于 察对 烦 观
HAproxy
基于 layer 7
效率相 低,部署容易,有对较 web 界面便于 察观
- 20. 双 服 器线 务
多个 IP 地址
一个 IP 地址,多个路由
深南花 :园
信、网通、教育网三通机房电
北方网通 深 网通仍然很慢访问 圳
- 21. 动态 DNS
根据来自不同 ISP 的用 接入到就近的服 器户 务
公司自己 的开发 动态 DNS 件软
自己 的开发 DNS 服 器务
IP 地址 和库 IP 速测
存在 分布的业务 问题
- 24. Web Cache 的类型
器浏览 Cache
私有 存缓
可以 存“缓 private” 响应
Cache Proxy
Surrogates - 存代理缓
Web 加速
共享 存缓
只能 存“缓 public” 响应
- 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
- 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
- 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 头
- 37. 践要点实
3DNS + HAProxy 均衡、接入保实现负载 护
、静 文件分用不同服 器动态 态 务
首 静 化页 态
某些 繁 用频 调 CGI : Squid 存缓
播放:视频 CDN 加速
略 :缩 图 Squid 存缓
Web 数据 存:缓 Memcached
- 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.