掌握高并发、高可用架构第三章 分布式

本章介绍分布式架构的底层技术。主要说明面试过程中可能被问到的技术点。

第五节 NGINX

nginx 反向代理

1. 正向代理和反向代理的区别

正向代理,指在客户端,代替客户端收发请求,使得真实客户端对服务器不可见。

反向代理,指在服务器端,代替服务器收发请求,使得真实服务器对客户端不可见

2. nginx是什么

nginx是一个高性能的HTT服务器、电子邮件(IMAP/POP3)代理服务器、非常高效的反向代理服务器

3. nginx的特性异步、事件驱动、非阻塞并发请求处理,通过epoll/select文件IO高度模块化4. 支持的并发数

每秒十万级别

5. nginx的使用场景静态资源服务器,例如图片、网站静态资源(css、js等)反向代理服务器,实现负载均衡6. 支持的负载均衡策略(upstream)

轮询(默认),每个请求按时间顺序逐一分配到不同的后端服务器

权重(weight),指定服务器的权重,数值越大的访问机率越多,用于服务器性能不均衡的情况

upstream domain { server 127.0.0.1:8080 weight=5; server 127.0.0.1:8040 weight=1;}

ip_hash,每个请求按照访问IP的hash值进行分配,这样每个客户端IP就会固定访问一台服务器

upstream domain { ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8040;}

fair(第三方提供),按照服务器的响应时间来分配请求,响应时间短的优先分配

url_hash(第三方提供),按照每个请求的URL的hash值进行分配,每个URL固定访问一台服务器

upstream还支持以下的状态值:

down,表示当前的server不参与负载

max_fails,允许请求失败的次数

fail_timeout,max_fails后,暂停负载的时间

backup,备用,当其他非backup的server处于down或忙的时候,启用该server

upstream domain { server 127.0.0.1:8080 down; server 127.0.0.1:8080 max_fails=3; server 127.0.0.1:8080 fail_timeout=10; server 127.0.0.1:8080 backup;}