《精编》大规模网站架构介绍

上传人:tang****xu2 文档编号:133183900 上传时间:2020-05-25 格式:PPT 页数:57 大小:2.20MB
返回 下载 相关 举报
《精编》大规模网站架构介绍_第1页
第1页 / 共57页
《精编》大规模网站架构介绍_第2页
第2页 / 共57页
《精编》大规模网站架构介绍_第3页
第3页 / 共57页
《精编》大规模网站架构介绍_第4页
第4页 / 共57页
《精编》大规模网站架构介绍_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《《精编》大规模网站架构介绍》由会员分享,可在线阅读,更多相关《《精编》大规模网站架构介绍(57页珍藏版)》请在金锄头文库上搜索。

1、大规模网站架构介绍 PHPfacebook yahooJavataobao 163Pythongoogle NETMySpace 语言不是可伸缩性的关键 架构才是关键 网站架构的目标 高可用性 HighAvailability 可伸缩性 Scalability 高性能 HighPerformance 事务 传统的事务 ACID 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持久性 Durability CAP原则 Consistency一致性Availability可用性PartitionTolerance分区耐受性在任意时刻 只有两项能同时成立不要浪

2、费精力可能突破上面限制 可用性 一致性 分区耐受性 新的事务策略 BASE策略 避免分布式事务基本可用 BasicallyAvailable 软状态 Softstate 选择最终一致 Eventuallyconsistent 数据库读写分离 MySQLProxy 数据库读写分离 loadbalancingfailoverqueryanalysisR WSplitting 数据库Shard 水平分区垂直分区 ShardingvsPartition 垂直分区 user blog App DAL 水平分区 user33 user33 App DAL user34 水平分区 DAL 数据访问层 对应用

3、透明的使用数据库的水平分区及垂直分区 DALProxy 实现1 应用 DAL服务器 user user DALAPI 实现2 应用 DAL user user 两种实现方式 独立的DALProxy服务器MySQL AmoebaPostgreSQL PL Proxy Skype DALAPIJava HibernateShard IbatisShard HiveDBPython Pyshards shard改变数据库设计 尽量避免join数据冗余 反范式 数据冗余forshard shardbeforecomment id blog id content shardaftercomment id

4、 blog id content user id 数据分区策略 水平分区2 N 如定单 购买者与网店各一份 N n 按日期或ID范围分区 hash N n 按hash分 查找表垂直分区按功能分 论坛 博客 消息队列 MessageQueue 程序解耦隔离消息的可靠传输 物理存储中转消息 A C B MQ MQ 消息总线 应用场景 耗时操作邮件发送 短消息发送日志程序解耦 A挂了 但B继续可以使用 MQ产品 开源RabbitMQ Erlang ActiveMQ JAVA 商业IBMMQWebLogicMQ 回顾CAP及BASE 可用性 一致性 分区容忍性 负载均衡 DNS负载均衡反向代理负载均衡

5、直接路由 failover DNS负载均衡 简单缺少灵活性 DNS缓存 D python Django 1 1 1 Server Address 10 20 18 10Non authoritativeanswer Name Addresses 220 181 28 54 220 181 28 212 220 181 28 50 220 181 28 51Aliases 反向代理负载均衡 负载均衡软件nginxHAProxyapachehttpdLVS 网络第四层工作 F5 硬件 四层 七层 LinuxVirtualServer LVS 网络地址转换 NAT VS NAT IP隧道方式 VS

6、TUN 直接路由方式 VS DR 其它工作模式 VirtualServerviaNAT VS NAT 用地址翻译实现虚拟服务器 地址转换器有能被外界访问到的合法IP地址 它修改来自专有网络的流出包的地址 外界看起来包是来自地址转换器本身 当外界包送到转换器时 它能判断出应该将包送到内部网的哪个节点 优点是节省IP地址 能对内部进行伪装 缺点是效率低 因为返回给请求方的流量经过转换器 VirtualServerviaIPTunneling VS TUN 用IP隧道技术实现虚拟服务器 这种方式是在集群的节点不在同一个网段时可用的转发机制 是将IP包封装在其他网络流量中的方法 为了安全的考虑 应该使

7、用隧道技术中的VPN 也可使用租用专线 集群所能提供的服务是基于TCP IP的Web服务 Mail服务 News服务 DNS服务 Proxy服务器等等 VirtualServerviaDirectRouting VS DR 用直接路由技术实现虚拟服务器 当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法 控制管理的计算机接收到请求包时直接送到参与集群的节点 优点是返回给客户的流量不经过控制主机 速度快开销少 高可用性 使用双机热备故障时切换至备份机工具 Linux HA heartbeat 缓存 让数据更靠近用户 本地缓存 节点有状态 状态更新需要同步至其它服务器可以使用组播方式

8、通知数据改变需要通知的服务器过多会存在性能问题比远程缓存更高性能慎用 不具备可伸缩性 ShareNothingArchitecture 无共享架构 数据缓存 memchched 动态内容缓存浏览器缓存 数据缓存 分布式memchched基本满足大部分性能要求 动态内容缓存 页面片段缓存静态化内容 反向代理缓存 squid巨无霸Varnish 反向代理缓存 Varnish缓存 tomcat Nginx负载均衡 静态资源分离 img js css使用单独的服务器处理请求 apachehttpd tomcat 浏览器 静态资源 静态资源 动态请求 动态请求 动态请示 动态请示 现实网站图片存储分析

9、图片服务器的域名不同多台机器保存相同的图片 img3 img2子域名 同一页面不同图片随机生成不同的子域名进行负载均衡CDN ContentDeliveryNetwork 浏览器优化 节省带宽 js css的静态gzip压缩httpheader Content Encoding gzip浏览器缓存httpheader Etag Last Modified小图片 css js合并 js混淆工具 JSA 推荐 http www xidea org js压缩多个js合并为一个可以与ant集成 Session cookie 强烈推荐 集中式sessionmemcached 推荐 session复制 过多服务器复制存在性能问题 分布式文件系统 MogileFSAutomaticfilereplicationNosinglepointoffailure 自动化 总结 CAP原则BASE策略异步 MessageQueue 数据库数据的水平切分及垂直切分数据库读写分离避免分布式事务反范式的数据库设计负载均衡DNS负载均衡反向代理负载均衡LVS缓存数据库缓存服务器缓存 页面缓存 数据缓存 静态化反向代理缓存Session ShareNothingArchitecture架构浏览器优化浏览器缓存 CDN 小图片合并分布式文件系统 MogileFS

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号