PHP开发之架构扫盲篇

上传人:资****亨 文档编号:179712798 上传时间:2021-04-12 格式:PPT 页数:49 大小:3.62MB
返回 下载 相关 举报
PHP开发之架构扫盲篇_第1页
第1页 / 共49页
PHP开发之架构扫盲篇_第2页
第2页 / 共49页
PHP开发之架构扫盲篇_第3页
第3页 / 共49页
PHP开发之架构扫盲篇_第4页
第4页 / 共49页
PHP开发之架构扫盲篇_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《PHP开发之架构扫盲篇》由会员分享,可在线阅读,更多相关《PHP开发之架构扫盲篇(49页珍藏版)》请在金锄头文库上搜索。

1、PHP开发之架构扫盲篇,01,架构的演变史,02,03,Apache服务器,04,Nginx VS Apache,Contents 目录,05,PHP项目主流架构-LNAMP,Nginx服务器,一.架构的演变史,没有固定的架构,架构是一个逐步演变的过程,什么是架构 ,1) 根据要解决的问题,对目标系统的边界进行界定; (2) 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色, 对切分出来的部分,并行或串行开展工作,一般并行才能减少时间; (3) 并对这些切分出来的部分,设立沟通机制; (4) 根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整 体, 完成目标系统的所有

2、工作,一.架构的演变史,没有固定的架构,架构是一个逐步演变的过程,几乎所有的大型网站都是渐进式发展,慢慢壮大的,这也和互联网架构的发展演化 相对应;大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三 方面,高并发,大流量,高可用,海量数据,性价比,用户分布,一.架构的演变史,1).最初的架构,应用程序、数据库、文件都部署在一台服务器上,一.架构的演变史,2).应用、数据、文件分离:应用程序服务、数据库服务、文件服务三者分离,各自为首 分配一台服务器,一.架构的演变史,3). 利用缓存改善网站性能: 利用缓存技术改善系统的性能,对热点数据进行缓存,减少这些数据的访问路径,提高用户

3、体验。 . 本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在 文件,OSCache就是常用的本地缓存组件。 . 分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被 使用,常用的分布式缓存是Memcached、Redis,一.架构的演变史,一.架构的演变史,4). 使用集群改善应用服务器性能: 通过应用服务器集群来分担请求数,应用服务器前面部署负载均衡服务器调度用户请求,根 据分发策略将请求分发到多个应用服务器节点。 . 常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy; . LVS是四层负载均衡,根据目

4、标地址和端口选择内部服务器,Nginx是七层负载均衡和 HAProxy支持四层、七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路 径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来 做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器,一.架构的演变史,一.架构的演变史,5). 数据库读写分离和分库分表: 随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以 及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分 库分表则分为水平切分和垂直切分,水平切换则是对一个数据库

5、特大的表进行拆分,例如用 户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据 库中,一.架构的演变史,一.架构的演变史,6). 使用CDN和反向代理提高网站性能: . 网络覆盖范围地区广泛,造就了网络环境复杂,从而用户访问网站性能体现也各有差异, 鉴于这问题,网站架构使用CDN和反向代理以技术加速网站响应,二者原理都是缓存, CDN可以从距离用户最近网络提供点获取数据;反向代理则是首先从反向代理服务器中获 取数据。 . CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大 减少了网络访问的路径。 . 反向代理是部署在网站的机房,当用户请

6、求达到时首先访问反向代理服务器,反向代理服 务器将缓存的数据返回给用户,如果没有没有缓存数据才会继续走应用服务器获取,也减 少了获取数据的成本。反向代理有Squid,Nginx,一.架构的演变史,一.架构的演变史,7). 使用分布式文件系统: 用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足 需求。需要分布式的文件系统支撑。常用的分布式文件系统有NFS、MFS、GFS、HDFS、 Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等,一.架构的演变史,一.架构的演变史,8). 使用NoSql和搜索引擎: . 对于海量数据的查询,

7、我们使用nosql数据库加上搜索引擎可以达到更好的性能。 . 并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb和redis, 搜索引擎有php相关的sphinx、java相关的Lucene、Nutch、Solr、LIRE等,一.架构的演变史,一.架构的演变史,9). 将应用服务器进行业务拆分: . 随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分, 如Jollychic分为购物车、搜索、支付、订单等业务。每个业务应用负责相对独立的业务运 作。业务之间 通过消息进行通信或者同享数据库来实现,一.架构的演变史,一.架构的演变史,10). 搭建分布式

8、服务: . 这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、 支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来 利用分布式服务框架搭建分布式服务,例如淘宝的Dubbo是一个不错的选择,一.架构的演变史,企图用技术解决所有问题,技术虽是解决业务问题的,但也不是万能钥匙,有些业务的问题也是可以通过业务手段解决,为了技术而技术,网站技术是为业务而存在的,但是一味的追求新技术,可能会导致结构技术之路越走越难,一味的追随大公司解决方案,大公司的经验和成功固然重要,但是不能盲目的追从,要与 实际的具体业务需求有所改动,大型网站架构演化历经了长时间

9、磨练才发展如此,在过程中也是出现一些误区,真实的架构现场要远比这些描述复杂得多,二.Nginx服务器,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP服务器,开源免费,nginx在启动后会以daemon的 方式在后台运行,后台进程包含一个master进程和多个worker进程, master进程主要用来管理worker进程,包含:接收来自外界的信号, 向各worker进程发送信号,监控worker进程的运行状态,当worker进 程退出后(异常情况下),会自动重新启动新的worker进程,多进程方式 是nginx的默认方式,1)

10、Nginx 简介,二.Nginx服务器,nginx采用了异步非阻塞的方式来处理请求,nginx在启动时,会解析配置 文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面, 先初始化好这个监控的socket,然后再fork出多个子进程出来,然后子进程 会竞争accept新的连接,这些work进程都没有同步锁,相互独立,自己完 成自己请求处理,woker之间没有相互通信,它们只于服从于master进程。 Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过 查找配置文件将此次请求映射到一个location block,而此location中所配 置的各个指

11、令则会启动不同的模块去完成工作,2) Nginx的模块与工作原理,二.Nginx服务器,2) Nginx的模块与工作原理,二.Nginx服务器,use epoll Nginx使用了最新的epoll网络I/O模型; . worker_processes NGINX工作进程数,建议将这个指令设置成自动; . worker_connections 65535 每个工作进程允许最大的同时连接数 (Maxclient = work_processes *worker_connections); . keepalive_timeout 75 keepalive超时时间; . server_tokens o

12、n|off 可以关闭在错误页面中的nginx版本数字,这样 对于安全性是有好处的,3) nginx.conf的参数优化,二.Nginx服务器,open_file_cache 开启关闭打开文件缓存,默认值 off 关闭,如需开 启必须后接参数 max=数字,设置缓存元素的最大数量,可选参数 inactive=时间 设置超时, 在这段时间内缓存元素如果没有被访问, 将从缓存中删除,例如:open_file_cache max=65536 inactive=60s; . open_file_cache_min_uses:设置在由open_file_cache指令的 inactive参数配置的超时时间

13、内, 文件应该被访问的最小次数。如果访 问次数大于等于此值,文件描述符会保留在缓存中,否则从缓存中删除; . open_file_cache_valid:设置检查open_file_cache缓存的元素的时间 间隔,3) nginx.conf的参数优化,二.Nginx服务器,limit_conn_zone 限制并发连接数以及下载带宽 加在http段, 例:limit_conn_zone $binary_remote_addr zone=addr:10m (要限制连接,必须先有一个容器对连接进行计数。zone名要 与limit_comm对应); . limit_conn 用于限制并发连接数,限制

14、某个IP某一时间段的访问次数, 特别面对恶意的ddos攻击的时候有效,加在server段;例: limit_conn addr 1; #是限制每个IP只能发起1个连接 (addr 要跟 limit_conn_zone 的变量对应); . accept_mutex on|off on时,那么将轮流唤醒一个工作进程接收处 理新的连接,其余工作进程继续保持睡眠;off 时,那么将唤醒所有工 作进程,可以提高性能和吞吐量,3) nginx.conf的参数优化,二.Nginx服务器,sendfile on | off 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来

15、输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。 . worker_cpu_affinity(绑定CPU):绑定工作进程到对应CPU核心, Nginx默认未开启CPU绑定,当并发很大时,服务器各个CPU的使用 率可能出现严重不均衡的局面,这时候可以考虑使用CPU绑定,以达 到CPU使用率相对均匀的状态,充分发挥多核CPU的优势。如: worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000,3) nginx.conf的参数优化,二.Nginx

16、服务器,expires 浏览器缓存:当设置了expires时,浏览器第一次访问Web页 面元素,会下载页面中的的静态文件到本机临时缓存目录下,第二次 及之后再次访问相同URL时将发送带头标识If-Modified-Since和本 地缓存文件时间属性值的请求给服务器,服务器比对服务器本地文件 时间属性值,如果未修改,服务器直接返回http 304状态码,浏览器 直接调用本地已缓存的文件;如果时间属性值修改了,重新发送新文 件。 . keepalive_timeout 持久连接:启用Http的持久连接Keepalive属性, 复用之前已建立的TCP连接接收请求、发送回应,减少重新建立TCP连 接的资源时间开销HTTP层的连接超时时间。 当网站页面内容以静态 为主时,开启持久连接;若主要是动态网页,且不能被转化为静态页 面,则关闭持久连接,3) nginx.conf的参数优化,二.Nginx服务器,tcp_nopush on|off :告诉nginx在一个数据包里发送所有头文件,而 不一个接一个的发送; . tcp_nodelay on|off:告诉nginx不要缓存数据,当需要及时发送数据

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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