本文内容摘抄自李智慧的《大型网站技术架构:核心原理与案例分析》一书。内容整理如有问题,请联系我或在下方评论
概念:nginx服务器 允许的最大并发数为
65535 (理论峰值)
网站优化的第一定律:
优先使用缓存
影响网站的性能的因素:1.硬件 2.软件3.CPU 4.内存 5.核数 6.硬盘 7.宽带 等。
系统的环境Lnmp
LNMP 不只是代表Windows、Nginx、MySQL、PHP
L运行环境 n服务器环境 m数据库 p编程语言
注意:pear可以作为php的依赖库 也是一门编程语言
服务器伸缩性架构分割:
①.横向分割:按照业务逻辑进行分割。将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。
②.纵向分割:纵向方向上对软件进行切分,将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。ps:可以简单的理解为各个服务(如apache、PHP、MySQL)自己干自己的活。
③分布式
分层和分割的主要目的时为了切分后的模块便于分布式部署,将不同的模块部署在不同的服务器上,通过远程调用协同工作。
可以分布式应用和服务,分布式静态资源(动静分离,减轻应用服务器负载压力,独立域名加快浏览器并发加载速度等)
④集群
多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务。
4.1.负载均衡:
4.1.1负载均衡的形式:
1.http重定向的负载均衡(301:永久重定向、302:临时重定向,此处使用302)
优点:搭建相对简单
缺点:损耗性能(需要两次访问),响应时间长。负载服务器承受有限,容易成为网站 发展的瓶颈。不利于SEO优化。危险,用户直接访问应用服务器,安全性差。
延伸:SEO优化:搜索引擎优化。
SEO是指通过对网站进行
站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和
站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度。ps:如:百度蜘蛛的搜索引擎。
2.DNS重解析服务器
优点:搭建简单。负载服务器不再是瓶颈。支持基于地理位置解析,加快访问速度
缺点:多级解析,生效时间内会导致用户访问失败。控制权在运营商那里,无法做更多的改善和管理
3. 反向代理负载均衡:
优点:架构简单,安全,效率高
缺点:反向代理所有的请求中转站,容易成为性能的瓶颈
4.IP代理负载均衡
优点:性能高
缺点:数据量大比较吃力,带宽会成为限制
5.数据链路层负载均衡:在通信协议的数据链路层修改mac地址,从而实现负载均衡。Linux上最好的开源产品:LVS(Linux Virtual Server)
优点:三角传输,返回的数据无需经过数据链路层负载服务器,负载服务器的网卡带宽不再是瓶颈。目前大型网站大多采用这种技术。
缺点:多层路由,带宽会限制网速。
PS:6、fair:nginx第三方负载均衡模块(前五种自带的)
4.1.2:负载服务器的算法
1.轮询
优点:轮流的,默认的,一碗水端平
缺点:由于是轮流制,应用服务器的配置不同,会出现大马拉小车,小马拉大车的情况
改善:加权轮询。(权重)
2.随机:http请求随机分配,与轮询其实差不多。优缺点与轮询差不多
3.最少链接:谁的连接数最少给谁
4.源地址散列:把用户的IP转化为哈希值存在某台服务器,该用户下次访问还会访问这台服务器
session共享:可以使用公共的硬盘来存session,或者存在所有服务器公用的缓存服务器中(如memcache、Redis等)。
⑤缓存
包括本地缓存、反向代理、CDN服务等。
⑥异步
典型的生产者消费者模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化而互不影响,对网站扩展新功能非常便利。异步方式处理业务可能会影响用户体验、对业务流程造成影响,需要网站产品设计方面的支持。
⑦冗余
冷热备份,灾备数据中心等等
⑧自动化
发布自动化、测试自动化、自动化失效转移等等技术
⑨安全
通过密码手机验证,验证码识别,防止XSS攻击、SQL攻击,编码转换,进行风险控制
单一变量原则
ab测试:切换到ab.exe(apache/bin)目录下
命令:ab -n 请求数 -c 并发数 请求的地址(要到具体的文件)
优化:
1.浏览器方面考虑
1.1 减少http的请求
1.1.1 js
1.1.2 css
1.1.3 images 雪碧图
1.2 使用浏览器缓存
1.3 减少cookie传输(cookie的value老版本能存20个 新版本能存50个)
1.4 启用压缩
1.5 css放最上面 js放最下面
2.CDN(内容分发网络) 本质为一个缓存 部署在网络运营商的机房里
2.1 好处:
2.1.1 节省计算时间
2.1.2 节省读取时间
2.1.13 节省传输时间 <-- 节省的时间最长
2.2 坏处:
2.2.1 买买买
2.2.2 数据不一致引起脏读
3.缓存
3.1 热点
3.2 缓存的意义:高读写比 (读和写的比例很大,至少2:1 缓存才有意义。八二原则,百分之八十的访问量落在百分之20的页面上)
3.3 坏处:脏读、缓存穿透、缓存预热