




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP开发之架构扫盲篇 01 架构的演变史 02 03 Apache服务器 04 NginxVSApache Contents目录 05 PHP项目主流架构 LNAMP Nginx服务器 一 架构的演变史 没有固定的架构 架构是一个逐步演变的过程 什么是架构 1 根据要解决的问题 对目标系统的边界进行界定 2 并对目标系统按某个原则的进行切分 切分的原则 要便于不同的角色 对切分出来的部分 并行或串行开展工作 一般并行才能减少时间 3 并对这些切分出来的部分 设立沟通机制 4 根据3 使得这些部分之间能够进行有机的联系 合并组装成为一个整体 完成目标系统的所有工作 一 架构的演变史 没有固定的架构 架构是一个逐步演变的过程 几乎所有的大型网站都是渐进式发展 慢慢壮大的 这也和互联网架构的发展演化相对应 大型网站技术主要的挑战来自于庞大的用户 高并发以及海量的数据这三方面 高并发 大流量 高可用 海量数据 性价比 用户分布 一 架构的演变史 1 最初的架构 应用程序 数据库 文件都部署在一台服务器上 一 架构的演变史 2 应用 数据 文件分离 应用程序服务 数据库服务 文件服务三者分离 各自为首分配一台服务器 一 架构的演变史 3 利用缓存改善网站性能 利用缓存技术改善系统的性能 对热点数据进行缓存 减少这些数据的访问路径 提高用户体验 本地缓存 顾名思义是将数据缓存在应用服务器本地 可以存在内存中 也可以存在文件 OSCache就是常用的本地缓存组件 分布式缓存的特点是 可以缓存海量的数据 并且扩展非常容易 在门户类网站中常常被使用 常用的分布式缓存是Memcached Redis 一 架构的演变史 一 架构的演变史 4 使用集群改善应用服务器性能 通过应用服务器集群来分担请求数 应用服务器前面部署负载均衡服务器调度用户请求 根据分发策略将请求分发到多个应用服务器节点 常用的负载均衡技术硬件的有F5 价格比较贵 软件的有LVS Nginx HAProxy LVS是四层负载均衡 根据目标地址和端口选择内部服务器 Nginx是七层负载均衡和HAProxy支持四层 七层负载均衡 可以根据报文内容选择内部服务器 因此LVS分发路径优于Nginx和HAProxy 性能要高些 而Nginx和HAProxy则更具配置性 如可以用来做动静分离 根据请求报文特征 选择静态资源服务器还是应用服务器 一 架构的演变史 一 架构的演变史 5 数据库读写分离和分库分表 随着用户量的增加 数据库成为最大的瓶颈 改善数据库性能常用的手段是进行读写分离以及分表 读写分离顾名思义就是将数据库分为读库和写库 通过主备功能实现数据同步 分库分表则分为水平切分和垂直切分 水平切换则是对一个数据库特大的表进行拆分 例如用户表 垂直切分则是根据业务不同来切换 如用户业务 商品业务相关的表放在不同的数据库中 一 架构的演变史 一 架构的演变史 6 使用CDN和反向代理提高网站性能 网络覆盖范围地区广泛 造就了网络环境复杂 从而用户访问网站性能体现也各有差异 鉴于这问题 网站架构使用CDN和反向代理以技术加速网站响应 二者原理都是缓存 CDN可以从距离用户最近网络提供点获取数据 反向代理则是首先从反向代理服务器中获取数据 CDN将数据内容缓存到运营商的机房 用户访问时先从最近的运营商获取数据 这样大大减少了网络访问的路径 反向代理是部署在网站的机房 当用户请求达到时首先访问反向代理服务器 反向代理服务器将缓存的数据返回给用户 如果没有没有缓存数据才会继续走应用服务器获取 也减少了获取数据的成本 反向代理有Squid Nginx 一 架构的演变史 一 架构的演变史 7 使用分布式文件系统 用户一天天增加 业务量越来越大 产生的文件越来越多 单台的文件服务器已经不能满足需求 需要分布式的文件系统支撑 常用的分布式文件系统有NFS MFS GFS HDFS Lustre Ceph GridFS mogileFS TFS FastDFS等 一 架构的演变史 一 架构的演变史 8 使用NoSql和搜索引擎 对于海量数据的查询 我们使用nosql数据库加上搜索引擎可以达到更好的性能 并不是所有的数据都要放在关系型数据中 常用的NOSQL有mongodb和redis 搜索引擎有php相关的sphinx java相关的Lucene Nutch Solr LIRE等 一 架构的演变史 一 架构的演变史 9 将应用服务器进行业务拆分 随着业务进一步扩展 应用程序变得非常臃肿 这时我们需要将应用程序进行业务拆分 如Jollychic分为购物车 搜索 支付 订单等业务 每个业务应用负责相对独立的业务运作 业务之间通过消息进行通信或者同享数据库来实现 一 架构的演变史 一 架构的演变史 10 搭建分布式服务 这时我们发现各个业务应用都会使用到一些基本的业务服务 例如用户服务 订单服务 支付服务 安全服务 这些服务是支撑各业务应用的基本要素 我们将这些服务抽取出来利用分布式服务框架搭建分布式服务 例如淘宝的Dubbo是一个不错的选择 一 架构的演变史 企图用技术解决所有问题 技术虽是解决业务问题的 但也不是万能钥匙 有些业务的问题也是可以通过业务手段解决 为了技术而技术 网站技术是为业务而存在的 但是一味的追求新技术 可能会导致结构技术之路越走越难 一味的追随大公司解决方案 大公司的经验和成功固然重要 但是不能盲目的追从 要与实际的具体业务需求有所改动 大型网站架构演化历经了长时间磨练才发展如此 在过程中也是出现一些误区 真实的架构现场要远比这些描述复杂得多 二 Nginx服务器 Nginx enginex 是一个高性能的HTTP和反向代理服务器 也是一个IMAP POP3 SMTP服务器 开源免费 nginx在启动后会以daemon的方式在后台运行 后台进程包含一个master进程和多个worker进程 master进程主要用来管理worker进程 包含 接收来自外界的信号 向各worker进程发送信号 监控worker进程的运行状态 当worker进程退出后 异常情况下 会自动重新启动新的worker进程 多进程方式是nginx的默认方式 1 Nginx简介 二 Nginx服务器 nginx采用了异步非阻塞的方式来处理请求 nginx在启动时 会解析配置文件 得到需要监听的端口与ip地址 然后在nginx的master进程里面 先初始化好这个监控的socket 然后再fork出多个子进程出来 然后子进程会竞争accept新的连接 这些work进程都没有同步锁 相互独立 自己完成自己请求处理 woker之间没有相互通信 它们只于服从于master进程 Nginx本身做的工作实际很少 当它接到一个HTTP请求时 它仅仅是通过查找配置文件将此次请求映射到一个locationblock 而此location中所配置的各个指令则会启动不同的模块去完成工作 2 Nginx的模块与工作原理 二 Nginx服务器 2 Nginx的模块与工作原理 二 Nginx服务器 useepollNginx使用了最新的epoll网络I O模型 worker processesNGINX工作进程数 建议将这个指令设置成自动 worker connections65535每个工作进程允许最大的同时连接数 Maxclient work processes worker connections keepalive timeout75keepalive超时时间 server tokenson off可以关闭在错误页面中的nginx版本数字 这样对于安全性是有好处的 3 nginx conf的参数优化 二 Nginx服务器 open file cache开启关闭打开文件缓存 默认值off关闭 如需开启必须后接参数max 数字 设置缓存元素的最大数量 可选参数inactive 时间设置超时 在这段时间内缓存元素如果没有被访问 将从缓存中删除 例如 open file cachemax 65536inactive 60s open file cache min uses 设置在由open file cache指令的inactive参数配置的超时时间内 文件应该被访问的最小次数 如果访问次数大于等于此值 文件描述符会保留在缓存中 否则从缓存中删除 open file cache valid 设置检查open file cache缓存的元素的时间间隔 3 nginx conf的参数优化 二 Nginx服务器 limit conn zone限制并发连接数以及下载带宽加在http段 例 limit conn zone binary remote addrzone addr 10m 要限制连接 必须先有一个容器对连接进行计数 zone名要与limit comm对应 limit conn用于限制并发连接数 限制某个IP某一时间段的访问次数 特别面对恶意的ddos攻击的时候有效 加在server段 例 limit connaddr1 是限制每个IP只能发起1个连接 addr要跟limit conn zone的变量对应 accept mutexon offon时 那么将轮流唤醒一个工作进程接收处理新的连接 其余工作进程继续保持睡眠 off时 那么将唤醒所有工作进程 可以提高性能和吞吐量 3 nginx conf的参数优化 二 Nginx服务器 sendfileon off开启高效文件传输模式 sendfile指令指定nginx是否调用sendfile函数来输出文件 对于普通应用设为on 如果用来进行下载等应用磁盘IO重负载应用 可设置为off 以平衡磁盘与网络I O处理速度 降低系统的负载 worker cpu affinity 绑定CPU 绑定工作进程到对应CPU核心 Nginx默认未开启CPU绑定 当并发很大时 服务器各个CPU的使用率可能出现严重不均衡的局面 这时候可以考虑使用CPU绑定 以达到CPU使用率相对均匀的状态 充分发挥多核CPU的优势 如 worker processes4 worker cpu affinity0001001001001000 3 nginx conf的参数优化 二 Nginx服务器 expires浏览器缓存 当设置了expires时 浏览器第一次访问Web页面元素 会下载页面中的的静态文件到本机临时缓存目录下 第二次及之后再次访问相同URL时将发送带头标识 If Modified Since 和本地缓存文件时间属性值的请求给服务器 服务器比对服务器本地文件时间属性值 如果未修改 服务器直接返回http304状态码 浏览器直接调用本地已缓存的文件 如果时间属性值修改了 重新发送新文件 keepalive timeout持久连接 启用Http的持久连接Keepalive属性 复用之前已建立的TCP连接接收请求 发送回应 减少重新建立TCP连接的资源时间开销HTTP层的连接超时时间 当网站页面内容以静态为主时 开启持久连接 若主要是动态网页 且不能被转化为静态页面 则关闭持久连接 3 nginx conf的参数优化 二 Nginx服务器 tcp nopushon off 告诉nginx在一个数据包里发送所有头文件 而不一个接一个的发送 tcp nodelayon off 告诉nginx不要缓存数据 当需要及时发送数据时 就应该给应用设置这个属性 Nginx不能直接解析PHP代码文件 需要调用FastCGI接口转给PHP解释器执行 然后将结果返回给Nginx 关于Nginx支持PHP的相关fastcgi配置可结合Nginx配置文件说明 3 nginx conf的参数优化 二 Nginx服务器 proxy pass设置被代理服务器的地址和被映射的URI proxy set header将发送到被代理服务器的请求头重新定义或者增加一些字段 proxy buffering开启或关闭从后端被代理服务器的响应内容缓冲 proxy buffers设置缓冲区的大小和数量 从被代理的后端服务器取得的响应内容 会放置到这里 默认情况下 一个缓冲区的大小等于内存页面大小 可能是4K也可能是8K 这取决于平台 proxy buffer size设置缓冲区大小 小的响应header通常位于这部分响应内容里边 默认来说 该缓冲区大小等于指令proxy buffers所设置的 proxy busy buffers size设置系统很忙时可以使用的proxy buffers的大小 用来控制同时传输到客户端的buffer数量的 4 Nginx反向代理 配置在server段的location指令 二 Nginx服务器 upstreammysvr serverhttp 192 168 33 10 3333 serverhttp 192 168 33 11 3333 serverhttp 192 168 33 12 3333 serverhttp 192 168 33 13 3333backup 热备 server location proxy passmysvr 请求转向mysvr定义的服务器列表 5 Nginx负载均衡HTTPUpstream模块 配置在server段 二 Nginx服务器 负载均衡的算法 热备 如果你有2台服务器 当一台服务器发生事故时 才启用第二台服务器给提供服务 轮询 nginx默认就是轮询其权重都默认为1 加权轮询 跟据配置的权重的大小而分发给不同服务器不同数量的请求 ip hash nginx会让相同的客户端ip请求相同的服务器 Nginx的最大优势在于处理静态文件和代理转发功能 支持7层负载均衡和故障隔离 5 Nginx负载均衡HTTPUpstream模块 配置在server段 三 Apache服务器 ApacheHTTP服务器是一个模块化的服务器 Apache的特点是简单 速度快 性能稳定 并可做代理服务器来使用 Apache是以进程为基础的结构 进程要比线程消耗更多的系统开支 不太适合于多处理器环境 因此 在一个ApacheWeb站点扩容时 通常是增加服务器或扩充群集节点而不是增加处理器 到目前为止Apache仍然是世界上用的最多的Web服务器 市场占有率达60 左右 1 Apache服务器相关简介 三 Apache服务器 ServerAdminwebmaster 站长邮箱设置DocumentRoot var www html DirectoryIndexindex phpindex htmlindex htmServerNErrorLog logs error log 错误日志CustomLog logs access log commonOptionsFollowSymLinksAllowOverrideNoneOrderallow denyAllowfromall 2 Apache虚拟主机配置 针对配置文件 三 Apache服务器 在LoadModule处添加 LoadModulephp5 modulemodule libphp5 so在AddTypeapplication处添加 AddTypeapplication x httpd php php 3 Apache与PHP集成配置 安装完PHP 三 Apache服务器 Options指令可以在Apache服务器核心配置 serverconfig 虚拟主机配置 virtualhost 特定目录配置 directory 以及 htaccess文件中使用 Options指令的主要作用是控制特定目录将启用哪些服务器特性 特性选项之间以空格分隔 Options指令的完整语法为 Options option option 例 OptionsIndexesFollowSymLinks 4 ApacheOptions指令 三 Apache服务器 All表示除MultiViews之外的所有特性 这也是Options指令的默认设置 None表示不启用任何的服务器特性 FollowSymLinks服务器允许在此目录中使用符号连接 FollowSymLinks决定是否可以通过符号连接跨越DocumentRoot Indexes如果输入的网址对应服务器上的一个文件目录 而此目录中又没有DirectoryIndex指令 例如 DirectoryIndexindex htmlindex php 那么服务器会返回由mod autoindex模块生成的一个格式化后的目录列表 并列出该目录下的所有文件 4 ApacheOptions指令 三 Apache服务器 MultiViews如果客户端请求的路径可能对应多种类型的文件 那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件 SymLinksIfOwnerMatch只有当符号连接和符号连接指向的目标文件或目录的所有者是同一用户时 才会使用符号连接 ExecCGI允许使用mod cgi模块执行CGI脚本 Includes允许使用mod include模块提供的服务器端包含功能 AllowOverride定义是否允许各个目录用目录中的 htaccess 后面解释 覆盖这里设定的Options 4 ApacheOptions指令 三 Apache服务器 DirectoryIndex指定欢迎页面 Apache允许在一个目录配置中设置多个Options指令 但如果一个目录被多次设置了Options 则指定特性数量最多的一个Options指令会被完全接受 其它的被忽略 而各个Options指令之间并不会合并 4 ApacheOptions指令 三 Apache服务器 在Apache配置文件中 给指定目录设置基本的访问权限 主要是靠Allow Deny Order三个指令的配合使用来实现的 Allow指令 用于设置允许访问当前目录 及其子目录 或文件的用户范围 Deny指令 作用就是 Deny 拒绝 用于设置拒绝访问当前目录或文件的用户范围 Order指令 用于控制Allow指令和Deny指令的生效顺序 例如 OrderAllow Deny表示当前配置段中的Allow指令先生效 Deny指令后生效 5 Apache目录访问权限 三 Apache服务器 ServerTokensOS当服务器响应主机头 header 信息时显示Apache的版本和操作系统名称 ServerRoot etc httpd 设置服务器的根目录 KeepAliveOff不使用保持连接的功能 即客户一次请求连接只能响应一个文件 MaxKeepAliveRequests100在使用保持连接功能时 设置客户一次请求连接能响应文件的最大上限 KeepAliveTimeout15在使用保持连接功能时 两个相邻的连接的时间间隔超过15秒 就切断连接 6 Apache配置相关 三 Apache服务器 StartServers8设置服务器启动时运行的进程数 MinSpareServers5Apache在运行时会根据负载的轻重自动调整空闲子进程的数目 KeepAliveOff不使用保持连接的功能 即客户一次请求连接只能响应一个文件 MaxSpareServers20若存在高于20个空闲子进程 就创建逐一删除子进程来提高系统性能 MaxClients150限制同一时间的连接数不能超过150 6 Apache配置相关 三 Apache服务器 MaxClients150限制同一时间的连接数不能超过150 MaxRequestsPerChild1000限制每个子进程在结束处理请求之前能处理的连接请求为1000 TypesConfig etc mime types指定负责处理MIME对应格式的配置文件的存放位置 DefaultTypetext plain指定默认的MIME文件类型为纯文本或HTML文件 MaxClients150限制同一时间的连接数不能超过150 HostnameLookupsOff只记录连接Apache服务器的IP地址 而不记录主机名 6 Apache配置相关 三 Apache服务器 启用FollowSymLinks选项 并禁用SymLinksIfOwnerMatch 禁用AllowOverride 如果Apache的配置文件中允许了Allo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电网调度知识培训心得
- note英语写作考试及答案
- 青海省海东市2022-2023学年九年级上学期线上期中考试化学试题(含答案)
- 电磁铁电磁继电器课件
- 高精密机床基础知识培训课件
- 北京林业大学考试题库及答案
- S-Anabasine-d4-生命科学试剂-MCE
- Cariprazine-d8-1-RGH-188-d-sub-8-sub-生命科学试剂-MCE
- 北京安管人员考试试题及答案
- 物理的中考试题及答案
- 《死亡医学证明(推断)书》培训试题(附答案)
- 【中考真题】2025年贵州省中考数学真题(含解析)
- 护理核心制度2025年
- 软式内镜培训课件
- 福寿园内部培训课件
- 汽车户外互动活动方案
- 篆刻教学课件
- 华文版二年级上册-写字-书法
- 慢性根尖周炎病例分析
- 2025年初中学业水平考试生物试卷(附答案)
- 车辆运输安全培训
评论
0/150
提交评论