您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 分布式系统-“大型”网站架构设计
分布式系统DistributedSystems“大型”网站架构设计LARGESCALEWEBSITEARCHITECTURE1大型网站架构的目标与挑战网站架构演变及其技术脉络架构设计理论与原则讨论及总结23大型网站架构的目标与挑战•■何谓“大型”网站?网站日均流量[IP/PV]≈5,972,587PV≈9,376,962≈229,680,000PV≈2,955,981,600≈25,680,000PV≈222,132,000≈5,532,000PV≈25,723,800≈300,000PV≈747,000没有统一的判断标准,流量大小是一个重要指标日均流量至少IP1,000,000才算大型网站4大型网站架构的目标与挑战•■何谓“大型”网站?网站内容是否“动态”才是关键5大型网站架构的目标与挑战•■网站架构目标与挑战每个目标背后面临着技术、设计、维护等诸多方面的挑战。而目标本身的期望值也会根据实际情况进行调整,这也意味着网站架构建设是个不断调整的过程。负载均衡数据备份异地容灾。。。高速缓存并行计算异地镜像。。。开发框架多层设计业务分割。。。大型网站架构的目标与挑战网站架构演变及其技术脉络架构设计理论与原则讨论及总结67LAMP◦Linux◦Apache(orLightHTTPd,Nginx)◦MySQL(orPostgres)◦PHP(orPerl,Python,Ruby)•开源•良好的社区支持•可应用于大型系统■LAMP网站架构演变及其技术脉络8InternetLinuxApachePHP,Python,Perl..MySQLAppScript■LAMP网站架构演变及其技术脉络9■LAMP网站调用流程网站架构演变及其技术脉络10大量网站使用•Top20中绝大部分网站Microsoft,GoogleandChinesesites•例如:–Digg(Apache,PHP,MySQL)–Wikipedia(Apache,PHP,MySQL)–Yahoo(Apache,PHP,MySQL)–WordPress.com(PHP,MySQL)–Youtube(Apache)■谁使用LAMP网站架构演变及其技术脉络11■[Step0]基于LAMP的Webserver网站架构演变及其技术脉络■[Step1]Web动静态资源分离及其与DB物理分离优点:“简单”、安全性提高缺点:存在单点,谈不上高可用性(highavailability架构目标)技术点:应用设计要保证可扩展(framework很重要Spring/Beetle)、WebServer动/静态资源分离WebServer(Apache\Nginx\IIS\JBoss…)、DatabaseServer(Mysql\Oracle\Redis…)12网站架构演变及其技术脉络■[Step1]技术点—Web动静态资源分离img,doc,js,css等静态资源使用单独的WebHTTPServer处理请求动态页面静态化处理网站架构演变及其技术脉络13■[Step1]技术点—动态页面静态化处理网站架构演变及其技术脉络14MySQL■[Step1]技术点—动态页面静态化处理网站架构演变及其技术脉络15img,js,css使用单独的服务器处理请求apachehttpdtomcat浏览器静态资源静态资源动态请求动态请求动态请示动态请示16■[Step1]技术点—动态页面静态化处理网站架构演变及其技术脉络现实网站图片存储分析://img08.taobaocdn.com图片服务器的域名不同多台机器保存相同的图片(img3,img2子域名)同一页面不同图片随机生成不同的子域名进行负载均衡■[Step2]采取缓存处理优点:简单有效、维护方便缺点:依然存在单点技术点:客户端(浏览器)缓存、前端页面缓存、页面片段缓存、本地数据缓存/数据库缓存网站架构演变及其技术脉络减少对网站的访问减少对Web应用服务器的请求减少对数据库的查询减少文件系统I/O操作17■[Step2]技术点—客户端(浏览器)缓存技术点说明根据HTTP协议特性,修改Header参数(Cache-Control、Expires、Pragma、Last-Modified、Etag),让浏览器来缓存页面(一些优秀开发框架会对此做透明的封装,例如:Beetle)使用HTTP1.1协议,由于httppipelining技术特性,能够使用get请求的决不采取post请求为了节约带宽,压缩页面(Content-Encoding:gzip);页面各个元素能“小”即“小”,例如:js包压缩,js合并,图片压缩等会话状态信息采取Cookie代替传统使用服务器Sessions对象存储习惯做法;使用Ajax实现页面局部刷新如果可能,可采取浏览器插件技术突破浏览器功能限制,将原本在服务器端运算,尽量迁到浏览器端。ActiveX/Applet/Flash/….能够让浏览器缓存的数据一定要缓存;浏览器能够处理的运算,决不放在服务器端来处理。网站架构演变及其技术脉络18■[Step2]技术点—前端页面缓存采用具备缓存功能的http反向代理服务器作前端页面缓存器,Varnish\Squid\Ncache\AiCache(商业)…【硬件F5】网站架构演变及其技术脉络19■[Step2]技术点—页面片段缓存ESI(EdgeSideIncludes)ESI需要服务器端支持,常见apache(mod_esi)、WebLogic、JSP标签库(JESI)等。网站架构演变及其技术脉络20■[Step2]技术点—本地数据缓存需要从数据库系统和Web应用服务器两个层面考虑缓存优化网站架构演变及其技术脉络技术点说明关系数据库系统(如:Oracle\MySql)QueryCache策略:一般以sql为key来缓存查询结果,尽量不要拼sql,使用PreparedStatement的“?”模式sql;QueryCache大小要根据数据库系统具体情况合理设置,过大只会浪费内存,参考值:128M关系数据库系统DataBuffer策略:就是数据库数据内存缓存器,其访问命中率决定数据库性能,可根据实际物理内存大小适量增大,如:MySql建议buffer值为物理内存60-80%应用服务器Cache包括:对象缓存(例如:对象线程安全,做成单例),更新频率不大数据考虑缓存(如:基表数据、配置文件信息),考虑使用线程池,对象池,连接池等常见java解决方案:map\OSCache\EHCache等21■[Step3]技术点—负载均衡网站架构演变及其技术脉络22•DNS负载均衡简单缺少灵活性(DNS缓存)D:\python\Django-1.1.1nslookup:2001:470:20::2Non-authoritativeanswer:Name:optoversea3.xdwscache.speedcdns.comAddresses:8.37.233.6,8.37.233.2,8.37.233.4,8.37.233.5Aliases:■[Step3]技术点—负载均衡网站架构演变及其技术脉络24RequestsToClientBrowserForwardsRequestS1S2S3S4S5S6W(S1)≈W(S2)≈W(S3)≈…≈W(S6)Ar(S1)≈Ar(S2)≈Ar(S3)≈…≈Ar(S6)■[Step3]技术点—负载均衡网站架构演变及其技术脉络•反向代理负载均衡•负载均衡软件/硬件–nginx–HAProxy–apachehttpd–LVS(网络第四层工作)–F5(硬件,四层/七层)■[Step3]技术点—负载均衡网站架构演变及其技术脉络■[Step3]技术点—负载均衡网站架构演变及其技术脉络LinuxVirtualServer(LVS)■[Step3]技术点—负载均衡网站架构演变及其技术脉络网络地址转换(NAT):VS-NAT用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。■[Step3]技术点—负载均衡网站架构演变及其技术脉络IP隧道方式:VS-TUN用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等.29■[Step3]技术点—负载均衡网站架构演变及其技术脉络直接路由方式:VS-DR用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。30类型说明DNS负载均衡实现简单、有Cache缺乏灵活性,但对分区域(如构建CDN方案)访问简单有效反向代理软件HAProxy、Nginx、Apache、Lighttpd等硬件产品F5、NetScaler等LVS(LinuxVirtualServer)自己写代码某些情况下简单有效■[Step3]技术点—负载均衡网站架构演变及其技术脉络■[Step4]增加机器做HA、数据库读写分离网站架构演变及其技术脉络优点:增加服务器和HA机制,系统性能及可用性得到保证缺点:读写分离,增加程序难度,架构变复杂,维护难度增加技术点:负载均衡、DAL、数据库读写分离3132■[Step4]技术点—高可用性HA网站架构演变及其技术脉络使用双机热备故障时切换至备份机工具(Linux-HA)heartbeat■[Step4]技术点—数据库读写分离及DAL(数据访问层)网站架构演变及其技术脉络■读写分离逻辑分批■负载均衡■失效转移(failover)■数据库分区透明支持■两大实现模式:独立Proxy服务器;单独API库文件各个数据库厂商都有自己复制方案常见通用方案:ETL、GoldenGateTJS…3334■[Step4]技术点—DAL(数据访问层)网站架构演变及其技术脉络对应用透明的使用数据库的水平分区及垂直分区应用DAL服务器useruserDALProxy(实现1)35■[Step4]技术点—DAL(数据访问层)网站架构演变及其技术脉络对应用透明的使用数据库的水平分区及垂直分区DALProxy(实现2)应用DALuseruser36■[Step4]技术点—DAL(数据访问层)网站架构演变及其技术脉络独立的DALProxy服务器◦MySQL:Amoeba◦PostgreSQL:PL/Proxy(Skype)DALAPI◦Java:HibernateShard,IbatisShard,HiveDB◦Python:Pyshards■[Step5]CDN、分布式缓存、分库网站架构演变及其技术脉络优点:异地缓存有效解决不同地方用户访问过慢的问题;分库策略带来网站性能整体提升缺点:成本大幅增加,架构进一步复杂化,也维护难度进一步增大,架构开始
本文标题:分布式系统-“大型”网站架构设计
链接地址:https://www.777doc.com/doc-3128975 .html