性能影响因素:CPU,Memory,IO(network,Disk)
解决:纵向扩展,横向扩展
工作的协议层次:
4 layer:转发,交换
7 layer:代理
代理:proxy
正向,反向
snat:代表客户端,正向
dnat:代表服务端,反向
静态资源
动态资源
数据:
结构化数据:mysql。。。
半结构化数据:json、xml、kv。redis。。。
非结构化数据:图片、视频 分布式存储(SDS):分布式文件存储
分布式对象存储
分布式块存储
灰度发布:调度器摘掉服务器—>(等待服务链接超时,被动断开)服务器发布—>调度器上线
滚动发布:
金丝雀发布:两个环境,A环境有生产流量,B环境没有流量,把新版本发布到B环境,然后把流量按1%、5%、10%…慢慢引入B环境
进程:一个子进程处理一个请求
线程:一个子进程生成多个线程,每个线程处理一个请求
事件驱动:一个进程同时处理多个请求
nginx:
master worker进程
修改完配置文件,不用重启服务,直接nginx -s reload 加载配置文件就ok
功能:
Web Server
虚拟主机
Proxy Server
http
smtp
pop3/imap4
Stream Server
三大特性:
事件驱动
异步
非阻塞
配置:
global
http{
...
server{}
server{}
}
命令:
nginx -t 检测配置文件是否配置正确
nginx -s reload 加载配置文件
性能优化相关的配置:
worker_processes number | auto
worker进程的数量,通常应该等于或小于当前主机的CPU的物理核心数
auto:当前主机物理CPU核心数
worker_cpu_affinity cpumask
worker_cpu_affinity auto [cpumask]
worker_priority number
指定worker进程的nice值,设定worker进程优先级 【-20,20】
worker__rlimit_nofile number
事件驱动相关的配置
events{
...
}
1、worker_connections number
每个worker进程所能够打开的最大并发连接数量
worker_processes(一般以cpu核心数为上线,不能调大) * worker_connections(如果不够用,可以调大这个参数)
URL rewrite:把一个url重写到另一个url
方法:根据正则匹配,然后选择url
referer模块:防盗链机制,匹配所有非法的url,然后重写到其他url