《2022年lamp网站架构 .pdf》由会员分享,可在线阅读,更多相关《2022年lamp网站架构 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 lamp 网站架构LAMP (Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux 操作系统, Apache 网络服务器,MySQL 数据库, Perl 、PHP或者 Python 编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE 架构相比, LAMP 具有 Web资源丰富、轻量、快速开发等特点,微软的.NET 架构相比, LAMP具有通用、跨平台、高性能、低价格的优势, 因此 LAMP 无论是性能、 质量还是价格都是企业搭建网站的首选平台。对于大流量、大并发量的网站系统
2、架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS ) 、高性能的网页服务器( WebServer) 、高性能的数据库(Databse ) 、高效率的编程语言等。下面我将从这几点对其一一讨论。操作系统Linux 操作系统有很多个不同的发行版,如 RedHatEnterpriseLinux、 SUSELinuxEnterprice、 Debian 、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定, Ubuntu 的易用,基于稳定性和性能的考虑,操作系统选择CentOS (Community
3、ENTerpriseOperatingSystem)是一个理想的方案。CentOS(CommunityENTerpriseOperatingSystem)是 Linux 发行版之一,是RHEL/RedHatEnterpriseLinux的精简免费版,和RHEL 为同样的源代码,不过,RHEL和 SUSELE 等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用 CentOS替代 RedHatEnterpriseLinux使用。LAMP网站架构图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
4、- 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - Web服务器、缓存和PHP加速Apache 是 LAMP架构最核心的WebServer,开源、稳定、模块丰富是Apache 的优势。但Apache 的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx )高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache 服务器。Apache 做为 WebServer 是负载 PHP的最佳选择,如果流量很大的话,可以采用nginx 来负载非PHP的 Web请求。nginx 是一个高性能的HT
5、TP和反向代理服务器,Nginx 以它的稳定性、 丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 不支持 PHP和 CGI 等动态语言,但支持负载均衡和容错,可和Apache 配合使用,是轻量级的HTTP服务器的首选。Web服务器的缓存也有多种方案,Apache 提供了自己的缓存模块,也可以使用外加的Squid 模块进行缓存,这两种方式均可以有效的提高Apache 的访问响应能力。SquidCache 是一个 Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置cache 服务器缓存相关请求来提高Web服务器的速度, 把 Squid 放在 Apache 的前端来缓存Web
6、服务器生成的动态内容,而 Web应用程序只需要适当地设置页面实效时间即可。如访问量巨大则可考虑使用memcache作为分布式缓存。PHP的加速使用eAccelerator加速器, eAccelerator是一个自由开放源码PHP加速器, 优化和动态内容缓存,提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10 倍。具体的解决方案有以下几种:1、squid+Apache+PHP+eAccelerator 使用 Apache 负载 PHP ,使用 squid进行缓存, html 或图
7、片的请求可以直接由squid 返回给用户。很多大型网站都采用这种架构。2、nginx/Apache+PHP (fastcgi)+eAccelerator 使用 nginx 或 Apache 负载 PHP , PHP使用 fastcgi方式运行,效率较高。3、nginx+Apache+PHP+eAccelerator 此方案综合了nginx 和 Apache 的优点,使用Apache 负载 PHP ,nginx 负责解析其他Web请求,使用nginx 的 rewrite模块, Apache 端口不对外开放。数据库开源的数据库中,MySQL 在性能、稳定性和功能上是首选,可以达到百万级别的数据存储
8、,网站初期可以将MySQL 和 Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL 数据库从WebServer 上独立出来, 在单独的服务器上运行,同时保持 WebServer 和 MySQL 服务器的稳定连接。当数据库访问量达到更大的级别,可以考虑使用MySQLCluster 等数据库集群或者库表散列等解决方案。总的来说, LAMP 架构的网站性能会远远优于WindowsIIS+ASP+Access(例如月光博客) 这样的网站,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用 LAMP架构是一个不错的方案。综上所述,基于LAMP架构设计具有成本低廉、部署
9、灵活、快速开发、安全稳定等特点,是Web网络应用和环境的优秀组合。2 大规模网站架构8U网络推广是中国互联网应用服务优质提供商中国8U旗下推广团队。8U网络推广团队是一个集网络推广与网络营销一体的专业网络推广平台。服务对象包括:企业、产品、政府、个人、游戏、赛事、活动、影视节目、网络小说等。8U网络推广团队拥有专业的网络推广技术和网络推广方案,并拥有众多媒体资源以及良好的信誉,能够提供专业的网络推广服务。?PHP facebook,yahoo 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
10、- 第 2 页,共 20 页 - - - - - - - - - ?Java taobao,163 ?Python google ?.NET MySpace 语言不是可伸缩性的关键,架构才是关键网站架构的目标?高可用性 (HighAvailability) ?可伸缩性 (Scalability) ?高性能 (HighPerformance) 事务传统的事务 (ACID) ?原子性( Atomicity)?一致性( Consistency )?隔离性( Isolation)?持久性( Durability)CAP原则?Consistency一致性?Availability可用性?Partitio
11、nTolerance分区耐受性?在任意时刻,只有两项能同时成立?不要浪费精力可能突破上面限制新的事务策略-BASE策略?避免分布式事务?基本可用( BasicallyAvailable)?软状态( Softstate)?选择最终一致(Eventuallyconsistent)数据库读写分离名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - MySQLProxy(数据库读写分离) ?loadbalancing ?failover ?
12、queryanalysis ?R/WSplitting 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - 数据库 Shard ?水平分区?垂直分区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - ShardingvsPartition ShardingPartit
13、ion存储依赖可跨越 DB 可跨越物理机器可跨越表空间, 不同的物理属性不能跨 DB存储存储方式分布式集中式扩展性ScaleOut( 横向扩展,增加便宜设备) ScaleUp( 升级设备 ) 可用性无单点存在单点 (DB 数据本身 ) 价格低廉适中,甚至昂贵应用场景web2.0 网站多数传统应用垂直分区水平分区user blog App DAL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - - - - 水平分区DAL(数据访问层 ) ?
14、对应用透明的使用数据库的水平分区及垂直分区DALProxy( 实现 1) user 33% user 33% App DAL user 34% 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - DALAPI(实现 2) DALProxy( 实现 1) DALAPI(实现 2) 应用DAL 服务器user user 应用DAL user user 应用DAL 服务器user user 名师资料总结 - - -精品资料欢迎下载 -
15、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - 两种实现方式?独立的 DALProxy 服务器MySQL:Amoeba PostgreSQL:PL/Proxy(Skype) ?DALAPI Java:HibernateShard,IbatisShard,HiveDB Python:Pyshards shard 改变数据库设计?尽量避免join ?数据冗余 / 反范式数据冗余forshard ?shardbefore comment(id,blog_id,content)
16、?shardafter comment(id,blog_id,content,user_id) 数据分区策略?水平分区2*N(如定单,购买者与网店各一份)N/n( 按日期或ID 范围分区)hash(N)%n( 按 hash 分) 查找表?垂直分区按功能分 ( 论坛,博客)消息队列 (MessageQueue) ?程序解耦?隔离?消息的可靠传输( 物理存储中转消息) 消息总线应用DAL user user 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - -
17、 - - - - - - 应用场景?耗时操作邮件发送 / 短消息发送?日志?程序解耦 (A 挂了,但B继续可以使用) MQ产品?开源RabbitMQ(Erlang) ActiveMQ(JAVA) ?商业IBMMQ WebLogicMQ 回顾 CAP及 BASE 负载均衡?DNS负载均衡?反向代理负载均衡?直接路由?. failover 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - DNS负载均衡名师资料总结 - - -精品
18、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - 反向代理负载均衡?负载均衡软件nginx HAProxy apachehttpd LVS(网络第四层工作) F5( 硬件,四层 /七层 ) D:pythonDjango-1.1.1nslookup Server: Address: 10.20.18.10 Non-authoritative answer: Name: Addresses: 220.181.28.54, 220.181.28.212, 22
19、0.181.28.50, 220.181.28.51 Aliases: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - LinuxVirtualServer(LVS) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - 网络地址转换(NAT):VS-NAT I
20、P 隧道方式 :VS-TUN 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - 直接路由方式:VS-DR 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 其它工作模式?VirtualServerviaNAT(VS-NAT )用地址翻译实现虚拟服务器。地址转换
21、器有能被外界访问到的合法IP 地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器。?VirtualServerviaIPTunneling(VS-TUN )用 IP 隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制,是将IP 包封装在其他网络流量中的方法。为了安全的考虑,应该使用隧道技术中的VPN ,也可使用租用专线。集群所能提供的服务是基于TCP/IP 的 Web服务、 Mail 服务、 New
22、s服务、 DNS服务、 Proxy 服务器等等?VirtualServerviaDirectRouting(VS-DR )用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法,控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机,速度快开销少。高可用性?使用双机热备?故障时切换至备份机?工具 (Linux-HA) heartbeat 缓存?让数据更靠近用户DataBaseMemchched 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
23、 - - - - - - - 第 16 页,共 20 页 - - - - - - - - - AppCache PageCache/Static BrowseCache ThreePartyCDN 本地缓存?节点有状态,状态更新需要同步至其它服务器可以使用组播方式通知数据改变需要通知的服务器过多会存在性能问题?比远程缓存更高性能?慎用,不具备可伸缩性ShareNothingArchitecture 无共享架构?数据缓存 (memchched) ?动态内容缓存?浏览器缓存数据缓存?分布式 memchched ?基本满足大部分性能要求名师资料总结 - - -精品资料欢迎下载 - - - - - -
24、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - 动态内容缓存?页面片段缓存?静态化内容反向代理缓存?squid 巨无霸?Varnish 反向代理缓存静态资源分离Varnish 缓存tomcat Nginx负载均衡名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 20 页 - - - - - - - - - img,js,css使用单独的服务器处理请求现实网站图片存储
25、分析?http:/ ?http:/ ?http:/ ?http:/ ?图片服务器的域名不同?多台机器保存相同的图片(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
26、 集成Session ?cookie( 强烈推荐 ) ?集中式 sessionmemcached( 推荐 ) ?session复制 (过多服务器复制存在性能问题) 分布式文件系统?MogileFS Automaticfilereplication 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 20 页 - - - - - - - - - Nosinglepointoffailure 自动化总结?CAP原则?BASE策略?异步 (MessageQueue) ?数据库?数
27、据的水平切分及垂直切分?数据库读写分离?避免分布式事务?反范式的数据库设计?负载均衡? DNS 负载均衡?反向代理负载均衡? LVS ?缓存?数据库缓存?服务器缓存 / 页面缓存 / 数据缓存 / 静态化?反向代理缓存?Session/ShareNothingArchitecture架构?浏览器优化?浏览器缓存 /CDN/小图片合并?分布式文件系统(MogileFS) ?http:/ ?http:/ ?http:/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -