- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
腾讯大讲堂可扩展Web架构探讨
可扩展Web架构探讨 高性能网站每秒能处理成千上万个请求,关键是 Scalability 良好的可伸缩性 Caching 无处不在的缓存 Scalability 是系统适应不断增长用户数量的能力 性能平稳 负载均衡、容错 接入保护、Cache缓冲 扩容容易 所有组件都应当可以简单扩展 无共享架构 可控状态 Vertical Scaling 更大的服务器 更快的CPU 扩展性/价格比很差 超级计算机都是平行扩展的! 可伸缩性vs.高性能 Web的可扩展性 Web服务器 负载均衡 南北互通 Web服务器 Web服务器的选择 Apache 不适合静态文件的支持 内存、CPU占用比较大 非常成熟,功能强大,配置丰富 TWS 架构中心自主开发 对CGI的支持比较独特 CGI性能非常好 Qhttpd 公司内部软件 只适合静态文件的支持 非常稳定可靠 Lighttpd、Nginx 内存、CPU开销小 静态文件性能胜出很多 越来越多的网站开始用它 性能改进 动态、静态内容分开 静态文件:qhttpd/lighttpd/nginx 动态内容:Apache 某些静态文件压缩传输:lighttpd的mod_compress 动态内容性能提升 传统CGI PHP、Rails、SSI FastCGI TWS CGI FastCGI 出现很早的技术 减少传统CGI调用的消耗 基本保持源代码级的兼容性 #include stdio.h #include fcgi_stdio.h While (FCGI_Accept() = 0) { // CGI代码 } FastCGI的配置 负载均衡技术 负载均衡(Load Balancing) 是可扩展性的关键 提高网站的可用性 接入保护、失效检测 DNS轮询 是最简单的负载均衡 域名设置多条A记录,DNS轮询 硬件负载均衡 Cisco Alteon Foundry F5 软件负载均衡 免费解决方案 Linux Virtural Server 基于内核,通过修改TCP/IP数据报文实现负载均衡,确保可用性的守护进程ldirectord 高性能,部署相对麻烦,不便于观察 HAproxy 基于 layer 7 效率相对较低,部署容易,有web界面便于观察 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类CGI请求 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: … 3.服务器响应 200 OK 或 304 Not Modified 条件请求(2) If-None-Match / ETag 1. Server响应 200 OK ETag: abcdef 2. 浏览器请求 GET … HTTP/1.1 If-None-Match: abcdef
文档评论(0)