反向代理与正向代理分析
代理服务器:位于发起请求的客户端与原始服务器端之间的一台跳板服务器,代理服务器分为正向代理服务器和反向代理服务器
-
正向代理 :代理客户端,隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端发出的请求都被代理服务器代替,正向代理最典型的应用就是代理浏览器访问,实现资源的访问控制,缓存等功能。正向代理部署在用户端。
-
反向代理 : 帮客户端把请求转发到真实的服务器, 用于解决单机处理能力不足问题,多机冗余部署,代理隐藏目标IP。反响代理部署在服务端
反向代理在分布式架构中的作用
- 承载海量连接: 承担更多的用户高并发连接
- 保证内网的安全: 任何来自外部用户的请求都必须先经过代理服务器进行安全校验
- 负载均衡: 充当负载均衡服务器均衡地分发请求,平衡集群中各个Web服务器的负载压力
- 缓存加速Web请求: 缓存真实Web服务器上的静态资源,减轻真实Web服务器的负载压力
- 隐藏目标服务器: 用户实际看到的只是反向代理,后端真是服务被隐藏
反向代理
LVS
Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术
LVS反向代理机制
- 四层负载:通过报文中的目标地址和端口
- 七层负载:通过报文中的真正有意义的应用层内容
LVS后端架构组成
- Load Balancer:Director Server 最前端的负载均衡层, 也就是
- Server Array:RealServer 服务器集群层,负责具体业务
- Shared Storage:数据共享存储层
HAProxy
- HAProxy是一个使用C语言编写的开源产品,提供高可用性负载均衡,支持基于TCP和HTTP的应用程序代理
- HAProxy用法详解 全网最详细中文文档
Nginx
Nginx 是一个强大的 Web 服务器软件,用于处理高并发的 HTTP 请求和作为反向代理服务器做负载均衡。
具有高性能、轻量级、内存消耗少,强大的负载均衡能力等优势。
Nginx反向代理机制
- 四层负载:通过报文中的目标地址和端口
- 七层负载:通过报文中的真正有意义的应用层内容\
Nginx整体架构
- 特点: 模块化、事件驱动、异步、 单线程、 非阻塞
- Master进程:监视工作进程的状态、当工作进程死掉后启动新进程、处理信号和通过进程通信的管道机制,Master指令下发到Worker
- Worker进程:处理客户端请求,从主进程处获得信号做相应的事情
- Cache loader进程:加载缓存索引文件信息
- Cache manager进程:管理磁盘的缓存大小,超过预定值大小后最少使用数据将被删除
- Master-Worker 模式优点:各Worker进程之间互相不会影响、独立进程,不需要加锁,所以省掉了锁带来的开销提升稳定性,降低系统风险
- Nginx 惊群问题
参考
- Nginx 从入门到实践