收藏 分享(赏)

大规模网站架构.ppt

上传人:您的文秘员 文档编号:3466796 上传时间:2018-11-01 格式: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,PHP facebook,yahoo Java taobao,163 Python google .NET MySpace,语言不是可伸缩性的关键,架构才是关键,网站架构的目标,高可用性(High Availability) 可伸缩性(Scalability) 高性能(High Performance),事务,传统的事务(ACID),原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability),CAP原则,Consistency 一致性 Availability 可用性

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

3、og,App,DAL,水平分区,user 33%,user 33%,App,DAL,user 34%,水平分区,DAL(数据访问层),对应用透明的使用数据库的水平分区及垂直分区,DAL Proxy(实现1),应用,DAL 服务器,user,user,DAL API(实现2),应用,DAL,user,user,两种实现方式,独立的DAL Proxy服务器 MySQL: Amoeba PostgreSQL: PL/Proxy (Skype) DAL API Java: Hibernate Shard,Ibatis Shard,HiveDB Python: Pyshards,shard改变数据库设计

4、,尽量避免join 数据冗余/反范式,数据冗余 for shard,shard before comment(id,blog_id,content) shard after comment(id,blog_id,content,user_id),数据分区策略,水平分区 2 * N(如定单,购买者与网店各一份) N / n (按日期或ID范围分区) hash(N) % n( 按hash分) 查找表 垂直分区 按功能分(论坛,博客),消息队列(MessageQueue),程序解耦 隔离 消息的可靠传输(物理存储中转消息),A,C,B,MQ,MQ,消息总线,应用场景,耗时操作 邮件发送/短消息发送

5、日志 程序解耦(A挂了,但B继续可以使用),MQ产品,开源 RabbitMQ(Erlang) ActiveMQ(JAVA) 商业 IBM MQ WebLogic 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.2

6、12, 220.181.28.50, 220.181.28.51 Aliases: ,反向代理负载均衡,负载均衡软件 nginx HAProxy apache httpd LVS(网络第四层工作) F5(硬件,四层/七层),Linux Virtual Server(LVS),网络地址转换(NAT):VS-NAT,IP隧道方式:VS-TUN,直接路由方式:VS-DR,其它工作模式,Virtual Server via NAT(VS-NAT) 用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时

7、,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。 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) 动态内容缓存 浏览器缓存,数据

9、缓存,分布式memchched 基本满足大部分性能要求,动态内容缓存,页面片段缓存 静态化内容,反向代理缓存,squid 巨无霸 Varnish,反向代理缓存,Varnish 缓存,tomcat,Nginx负载均衡,静态资源分离,img,js,css使用单独的服务器处理请求,apache httpd,tomcat,浏 览 器,静态资源,静态资源,动态请求,动态请求,动态请示,动态请示,现实网站图片存储分析,http:/ http:/ http:/ http:/图片服务器的域名不同 多台机器保存相同的图片(img3,img2子域名) 同一页面不同图片随机生成不同的子域名进行负载均衡 CDN ?,

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报