Web 服务基础介绍
1 Apache
经典的
Web
服务端
- Apache起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发
- 目前经历了两大版本分别是1.X和2.X
- 其可以通过编译安装实现特定的功能
2.Apache prefork
模型
- 预派生模式,有一个主控制进程,然后生成多个子进程,使用select模型,最大并发1024
- 每个子进程有一个独立的线程响应用户请求
- 相对比较占用内存,但是比较稳定,可以设置最大和最小进程数
- 是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景
优点:稳定
缺点:每个用户请求需要对应开启一个进程
,
占用资源较多,并发性差
,
不适用于高并发场景。

Apache worker
模型
- 一种多进程和多线程混合的模型
- 有一个控制进程,启动多个子进程
- 每个子进程里面包含固定的线程
- 使用线程程来处理请求
- 当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,
- 由于其使用了线程处理请求,因此可以承受更高的并发
优点:相比
prefork
占用的内存较少,可以同时处理更多的请求
缺点:使用
keepalive
的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用(该问题在prefork模式下,同样会发生)

3 Apache event
模型
Apache
中最新的模式,
2012
年发布的
apache 2.4.X
系列正式支持
event
模型
,
属于事件驱动模型
(epoll)
每个进程响应多个请求,在现在版本里的已经是稳定可用的模式
它和
worker
模式很像,最大的区别在于,它解决了
keepalive
场景下长期被占用的线程的资源浪费问题 (某些线程因为被keepalive
,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)
event MPM
中,会有一个专门的线程来管理这些
keepalive
类型的线程
当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场
景下的请求处理能力
优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理
keep
alive
类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放
缺点:没有线程安全控制
Nginx-
高性能的
Web
服务端
Nginx
是由
1994
年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯
rambler.ru
公司开发的,开发工作最早从2002
年开始,第一次公开发布时间是
2004
年
10
月
4
日,版本号是
0.1.0
2019
年
3
月
11
日
F5
与
NGINX
达成协议
,F5
将收购
NGINX
的所有已发行股票,总价值约为
6.7
亿美元。6.7亿美金约合
44.97
亿人民币
,nginx
核心模块代码长度
198430
(包括空格、注释),所以一行代码约为2.2万人民币
官网地址
www.nginx.org
Nginx
历经十几年的迭代更新(
https://nginx.org/en/CHANGES
), 目前功能已经非常完善且运行稳定,另外Nginx
的版本分为开发版、稳定版和过期版,
nginx
以功能丰富著称,它即可以作为
http
服务器,也可以作为反向代理服务器或者邮件服务器能够快速的响应静态网页的请求
支持
FastCGI/SSL/Virtual Host/URL Rwrite /Gzip / HTTP Basic Auth/http
或者
TCP
的负载均衡
(1.9
版本以上且开启stream
模块
)
等功能,并且支持第三方的功能扩展。
天猫 淘宝 京东 小米
163
新浪等一线互联网公司都在用
Nginx
或者进行二次开发
基于
Nginx
的工作场景:

用户访问体验和性能
1.
用户访问体验统计
互联网存在用户速度体验的
1-3-10
原则,即
1
秒最优,
1-3
秒较优,
3~10
秒比较慢,
10
秒以上用户无法接受。用户放弃一个产品的代价很低,只是换一个URL
而已。
全球最大搜索引擎
Google
:慢
500ms = 20%
将放弃访问。
全球最大的电商零售网站亚马逊:慢
100ms = 1%
将放弃交易
有很多研究都表明,性能对用户的行为有很大的影响:
79%
的用户表示不太可能再次打开一个缓慢的网站
47%
的用户期望网页能在
2
秒钟以内加载
40%
的用户表示如果加载时间超过三秒钟,就会放弃这个网站
页面加载时间延迟一秒可能导致转换损失
7%
,页面浏览量减少
11%
8
秒定律:用户访问一个网站时,如果等待网页打开的时间超过
8
秒,会有超过
30%
的用户放弃等待
2 影响用户体验的因素
据说马云在刚开始创业在给客户演示时,打开一个网站花了不到四个小时。
3.影响用户体验的因素
1.
客户端
客户端硬件配置
客户端网络速率
客户端与服务端距离
2.
服务器
服务端网络速率
服务端硬件配置
服务端架构设计
服务端应用程序工作模式
服务端并发数量服务端响应文件大小及数量
buffer cache
服务端
I/O
压力
1.2.4
服务端
I/O
流程