您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 腾讯大讲堂08-可扩展Web架构探讨
可扩展Web架构探讨echouzhou高性能网站每秒能处理成千上万个请求,关键是Scalability良好的可伸缩性Caching无处不在的缓存Scalability是系统适应不断增长用户数量的能力性能平稳负载均衡、容错接入保护、Cache缓冲扩容容易所有组件都应当可以简单扩展无共享架构可控状态VerticalScaling更大的服务器更快的CPU扩展性/价格比很差超级计算机都是平行扩展的!可伸缩性vs.高性能在系统可扩展的前提下提高性能Web的可扩展性Web服务器负载均衡南北互通Web服务器Web服务器的选择Apache不适合静态文件的支持内存、CPU占用比较大非常成熟,功能强大,配置丰富TWS架构中心自主开发对CGI的支持比较独特CGI性能非常好Qhttpd公司内部软件只适合静态文件的支持非常稳定可靠Lighttpd、Nginx内存、CPU开销小静态文件性能胜出很多越来越多的网站开始用它性能改进动态、静态内容分开静态文件:qhttpd/lighttpd/nginx动态内容:Apache某些静态文件压缩传输:lighttpd的mod_compress动态内容性能提升传统CGIPHP、Rails、SSIFastCGITWSCGIFastCGI出现很早的技术减少传统CGI调用的消耗基本保持源代码级的兼容性#includestdio.h#includefcgi_stdio.hWhile(FCGI_Accept()=0){//CGI代码}FastCGI的配置负载均衡技术负载均衡(LoadBalancing)是可扩展性的关键提高网站的可用性接入保护、失效检测DNS轮询是最简单的负载均衡域名设置多条A记录,DNS轮询硬件负载均衡CiscoAlteonFoundryF5软件负载均衡免费解决方案LinuxVirturalServer基于内核,通过修改TCP/IP数据报文实现负载均衡,确保可用性的守护进程ldirectord高性能,部署相对麻烦,不便于观察HAproxy基于layer7效率相对较低,部署容易,有web界面便于观察Layer4TCP层的交换根据源/目的地址和端口进行负载均衡负载均衡策略round-robin最少连接Layer7基于HTTP请求最常用的是URL分发南北互通双线服务器多个IP地址一个IP地址,多个路由深南花园:电信、网通、教育网三通机房北方网通访问深圳网通仍然很慢动态DNS根据来自不同ISP的用户接入到就近的服务器公司自己开发的动态DNS软件自己开发的DNS服务器IP地址库和IP测速存在业务分布的问题CDNContentDeliveryNetwork就近接入代理缓存域名解析增加CNAME即可CachingWebCache的类型浏览器Cache私有缓存可以缓存“private”响应CacheProxySurrogates-缓存代理Web加速共享缓存只能缓存“public”响应一些数据多至43%的Web请求访问不可缓存的内容Web缓存命中率为40%左右是比较现实的页面静态化理想状态:静态化所有页面——实际做不到如何静态化?由模板生成静态页面定时或有更新时困难:成千上万个页面的静态化不现实页面有变体,不适合静态化多台服务器维护麻烦页面既包含静态内容,又包含动态内容页面缓存按需静态化前端cache存储动态页面内容mod_cacheSquidVarnish*遵循HTTP的Cache规范可精细控制CacheExpiresCache-control适合GET类CGI请求HTTP的Cache规范要充分发挥Cache的效用,就必须了解HTTPCache规范和机制条件请求ExpirationCache-controlCookie条件请求If-Modified-Since/Last-Modified1.服务器响应:200OKLast-Modified:…2.浏览器请求GET…HTTP/1.1If-Modified-Since:…3.服务器响应200OK或304NotModified条件请求(2)If-None-Match/ETag1.Server响应200OKETag:abcdef2.浏览器请求GET…HTTP/1.1If-None-Match:abcdef3.Server响应200OK或304NotModifiedExpirationExpires设置对象的绝对失效时间是HTTP/1.0规范max-age是Cache-control的一个指令设置对象的年龄(秒数)是HTTP/1.1规范max-age优先于ExpiresCache-controlno-cache=[Set-cookie]浏览器和squid都不可以缓存再次使用前需发送条件请求max-age=NNN指定缓存有效时间(秒)public浏览器和squid都可以缓存max-age指定缓存时间private只有浏览器可以缓存CookiesHTTP请求携带Cookies:Cookie:name=profile,domain==mysecrets.html,cookie=day-traderHTTP响应设置Cookies:Set-cookie:name=profile,domain==mysecrets.html,cookie=day-traderCachedcontent需要的时候才设置Cookies——太理想化Squid添加一个IMS头一些典型的Cache场景返回个人信息Cache-control:private,max-age=NNNCGI写操作Cache-control:no-store,no-cacheCGI获取状态等信息Cache-control:public,max-age=NNNQQvideo实践分享QQvideoWeb架构图实践要点3DNS+HAProxy实现负载均衡、接入保护动态、静态文件分用不同服务器首页静态化某些频繁调用CGI:Squid缓存视频播放:CDN加速缩略图:Squid缓存Web数据缓存:MemcachedQQvideo的一些数据HAProxy:每天转发HTTP请求:5500万CPU占用率:10~20%<增加图片>图片Squid:命中率:90%<增加图片>Memcached:命中率:40%左右<增加图片>相关软件介绍HAProxy,效率很高配置简单灵活,部署很容易Gracefulrestart–不影响已有连接Web监控界面–清晰直观内容分发(ContentSwitching)ACL定义规则ACL灵活组合选择分发backend请求/响应头改写负载均衡和过载保护负载均衡策略:加权round-robin、Source、URLStickysessions接入连接数限制后端服务器健康监测HAproxy与LVS比较HAProxy效率不如LVSUser级vs.内核级HAProxy部署简单一个程序vs.内核patchHAProxy功能丰富L7vs.L4HAProxy性能可满足大部分网站需要,达到较大规模时可改用LVS.HAproxy配置URL分发规则多个server池Stickysessions健康检测和接入限制HAProxyWeb界面Memcached高性能的,分布式的内存对象缓存系统Epoll驱动,效率高高效的内存管理机制缓存对象可设置Expire时间使用简单,部署更简单万金油WebCache昵称缓存用户观看历史后台管理系统用户操作频率控制Memcached运行状况Squid!Squid监控谢谢!
本文标题:腾讯大讲堂08-可扩展Web架构探讨
链接地址:https://www.777doc.com/doc-6009811 .html