文章目录
引言
- 一步一步把以前忘记的计算机网络知识再捡起来,重新整理一遍,这里算是一个新知识,之前并没有深度了解过,仅仅是知道,但是有的时候搞不清楚。
- 今天好好画个图片整理一下!然后在和着面试题,好好背一下!
正文
正向代理
定义
- 作为客户端的代理,去访问互联网上的资源,然后的所代理的具体客户信息对于服务端而言是不可见的。
通信流程
- 1、用户正常发送请求
- 2、请求转发至代理服务器
- 3、代理服务器转发请求到目标服务器
- 4、目标服务器处理请求并返回响应
- 5、代理服务器接受响应并转发给用户
- 6、用户接受响应并处理
应用
-
保护客户端,隐藏客户端真实的IP地址
-
科学上网
- 平常所说的飞机场就是正向代理,我们是通过VPN或者SSH等方式绕过端口限制,然后访问国外的飞机场,然后有飞机场访问外网
-
阻止访问某些内容
-
提高访问速度
- 代理服务器会有较大的硬盘缓冲区,将一些响应结果缓存在服务器端,便于后续使用
反向代理
定义
- 作为服务器的代理 ,接受客户端的请求,并分发给服务器。同时接受服务器的响应,返回给客户端。
- 真是服务器对客户端不可见
作用
-
保护服务器,隐藏服务器真实的IP地址
-
负载均衡
- 根据流量和服务器的性能,将请求发送给不同的服务器
-
缓存静态内容以及部分短时间的大量动态请求。
-
作为应用层防火墙提供防护。
-
加密/解密 SSL 通信。
负载均衡
作用
- 将网络流量或者一组任务以一种算法合理分配到各个处理节点,
- 使得节点得到平等的使用,
- 并及时可靠地返回结果给用户。
常见应用
- CDN内容分发网络 ,根据流量的来源,将流量导入相邻地区的服务器,以获得更短的响应时间和更高的可用性。(类似京东的仓储超时)
常见的算法
-
循环
- 按照顺序逐个将任务发送给服务端
- 任务必须是无状态的,任务随机分到每一个服务器,每一个服务器都能执行
-
粘性循环
- 相同客户的请求,会发送到一个服务器上(一开始给你,后续我的东西还是你处理)
- 适合客户端操作具有连续性的情况
-
加权循环
- 根据权重给每一个服务器分配不同数量的请求
-
散列
- 对传入的URL或者IP计算哈希值,然后给对应哈希值访问。
-
最少链接
- 发请求发送给处理最少请求的服务器
-
响应时间最少
- 将请求发送给响应时间最快的请求!
面试题
1、nginx属于七层网络结构中的哪一层?
- 应用层
2、Nginx有哪些负载均衡算法
具体算法
-
1、轮询
- 按照顺序依次将请求分配给后端服务器,无法特殊处理,有针对性地照顾
-
2、加权轮询
- 按照权重分配 请求给后端服务器,权重越高,服务器获得的请求会更多。
- 适用于后端服务器的性能不同的场景,充分利用高性能的服务器
- 按照权重分配 请求给后端服务器,权重越高,服务器获得的请求会更多。
-
3、IP哈希
- 根据客户端的IP地址的哈希值 ,分配请求到特定的服务器
- 适用于需要保持同一客户端请求使用发送到同一台服务器上,就像session分布式的解决方案,维系通话
- 根据客户端的IP地址的哈希值 ,分配请求到特定的服务器
-
4、URL哈希
- 每一个URL定向访问一个服务器,计算访问的URL的地址值
- 提高后端缓存服务器的效率
- 每一个URL定向访问一个服务器,计算访问的URL的地址值
-
5、最短响应时间
- 根据后台的平均响应时间来分配 ,响应时间越短的,分配的越多
- 适用于后端服务器性能不均衡的场景,实现负载均衡
- 根据后台的平均响应时间来分配 ,响应时间越短的,分配的越多
-
6、最短链接
- 新请求会发送到并发链接请求最少的服务器上
分类
- 任务平分类
- 将任务按照某种标准平分给每一个服务器
- 轮询
- 加权轮询
- 将任务按照某种标准平分给每一个服务器
- 负载均衡类
- 考虑了服务器的负载,包括CPU的利用率,连接数、IO使用率等衡量
- 最短连接
- 考虑了服务器的负载,包括CPU的利用率,连接数、IO使用率等衡量
- 性能最优类
- 任务优先分配给响应时间最快的
- 响应时间优先的方法
- 任务优先分配给响应时间最快的
- Hash类
- 根据请求中的没写关键信息进行Hash运算,并发送到特定的服务器
3、什么是反向代理?什么是正向代理?
反向代理
- 代替服务器
- 接受客户端请求,并将响应返回给客户端
- 真实服务器对客户端不可见
- 作用
- 保护服务器,隐藏服务器的真实IP地址
- 负载均衡,根据访问的流量情况和服务器的负载情况,将请求发送到服务器上。
- 充当缓存,缓存静态内容和大部分的瞬时访问的动态内容
- 加密解密SSL通信
正向代理
- 代替客户端
- 代替客户端访问服务端,客户端信息对服务端不可见
- 作用
- 科学上网
- 保护客户端
- 提高访问速度
总结
- 目前大概对于反向代理和正向代理,以及对应负载均衡服务都有了一个大概的了解,之前就是通过,但是具体的东西没有全面的整理过!这里主要是为了更好地面试!