大规模网站架构.ppt

上传人:您的****手 文档编号:297741 上传时间:2018-09-16 格式:PPT 页数:59 大小:1.72MB
下载 相关 举报
大规模网站架构.ppt_第1页
第1页 / 共59页
大规模网站架构.ppt_第2页
第2页 / 共59页
大规模网站架构.ppt_第3页
第3页 / 共59页
大规模网站架构.ppt_第4页
第4页 / 共59页
大规模网站架构.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、大规模网站架构,19楼小濠XH0507VIP.QQ.COM,PHPfacebook,yahoo Javataobao,163 Pythongoogle.NETMySpace,语言不是可伸缩性的关键,架构才是关键,网站架构的目标,高可用性(High Availability)可伸缩性(Scalability)高性能(High Performance),事务,传统的事务(ACID),原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability),CAP原则,Consistency 一致性 Availability 可用性Partition T

2、olerance分区耐受性在任意时刻,只有两项能同时成立不要浪费精力可能突破上面限制,可用性,一致性,分区耐受性,新的事务策略-BASE策略,避免分布式事务基本可用(Basically Available)软状态(Soft state)选择最终一致(Eventually consistent),数据库读写分离,MySQL Proxy(数据库读写分离),load balancingfailoverquery analysisR/W Splitting,数据库Shard,水平分区垂直分区,Sharding vs Partition,垂直分区,user,blog,App,DAL,水平分区,user

3、33%,user 33%,App,DAL,user 34%,水平分区,DAL(数据访问层),对应用透明的使用数据库的水平分区及垂直分区,DAL Proxy(实现1),应用,DAL 服务器,user,user,DAL API(实现2),应用,DAL,user,user,两种实现方式,独立的DAL Proxy服务器MySQL: AmoebaPostgreSQL: PL/Proxy (Skype)DAL APIJava: Hibernate Shard,Ibatis Shard,HiveDBPython: Pyshards,shard改变数据库设计,尽量避免join数据冗余/反范式,数据冗余 for

4、 shard,shard beforecomment(id,blog_id,content)shard aftercomment(id,blog_id,content,user_id),数据分区策略,水平分区2 * N(如定单,购买者与网店各一份)N / n (按日期或ID范围分区)hash(N) % n( 按hash分)查找表垂直分区按功能分(论坛,博客),消息队列(MessageQueue),程序解耦隔离消息的可靠传输(物理存储中转消息),A,C,B,MQ,MQ,消息总线,应用场景,耗时操作邮件发送/短消息发送日志程序解耦(A挂了,但B继续可以使用),MQ产品,开源RabbitMQ(Erl

5、ang)ActiveMQ(JAVA)商业IBM MQWebLogic MQ,回顾CAP及BASE,可用性,一致性,分区容忍性,负载均衡,DNS负载均衡反向代理负载均衡直接路由.,failover,DNS负载均衡,简单缺少灵活性(DNS缓存),D:pythonDjango-1.1.1nslookup Server: Address: 10.20.18.10Non-authoritative answer:Name: Addresses: 220.181.28.54, 220.181.28.212, 220.181.28.50, 220.181.28.51Aliases: ,反向代理负载均衡,负载

6、均衡软件nginxHAProxyapache httpdLVS(网络第四层工作)F5(硬件,四层/七层),Linux Virtual Server(LVS),网络地址转换(NAT):VS-NAT,IP隧道方式:VS-TUN,直接路由方式:VS-DR,其它工作模式,Virtual Server via NAT(VS-NAT)用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经

7、过转换器。Virtual Server via IP Tunneling (VS-TUN)用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN,也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等Virtual Server via Direct Routing(VS-DR)用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到

8、参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。,高可用性,使用双机热备故障时切换至备份机工具(Linux-HA)heartbeat,缓存,让数据更靠近用户,本地缓存,节点有状态,状态更新需要同步至其它服务器可以使用组播方式通知数据改变需要通知的服务器过多会存在性能问题比远程缓存更高性能慎用,不具备可伸缩性,Share Nothing Architecture,无共享架构,数据缓存(memchched)动态内容缓存浏览器缓存,数据缓存,分布式memchched基本满足大部分性能要求,动态内容缓存,页面片段缓存静态化内容,反向代理缓存,squid 巨无霸Varnish,反向代

9、理缓存,Varnish 缓存,tomcat,Nginx负载均衡,静态资源分离,img,js,css使用单独的服务器处理请求,apache httpd,tomcat,浏览器,静态资源,静态资源,动态请求,动态请求,动态请示,动态请示,现实网站图片存储分析,http:/http:/http:/http:/图片服务器的域名不同多台机器保存相同的图片(img3,img2子域名)同一页面不同图片随机生成不同的子域名进行负载均衡CDN ?,Content Delivery Network,浏览器优化,节省带宽:js,css的静态gzip压缩http header: Content-Encoding: gz

10、ip浏览器缓存http header: Etag,Last-Modified小图片,css,js合并,js混淆工具,JSA(推荐)http:/www.xidea.org/js压缩多个js合并为一个可以与ant集成,Session,cookie(强烈推荐)集中式session memcached(推荐)session复制(过多服务器复制存在性能问题),分布式文件系统,MogileFSAutomatic file replicationNo single point of failure,自动化,总结,CAP原则BASE策略异步(MessageQueue)数据库数据的水平切分及垂直切分数据库读写分离避免分布式事务反范式的数据库设计负载均衡DNS负载均衡反向代理负载均衡LVS缓存数据库缓存服务器缓存/页面缓存/数据缓存/静态化反向代理缓存Session/Share Nothing Architecture架构浏览器优化浏览器缓存/CDN/小图片合并分布式文件系统(MogileFS),参考,http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 信息网络

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。