当前位置: 首页 > news >正文

正向代理与反向代理

正向代理

客户端想要直接与目标服务器连接,但是无法直接进行连接,就需要先去访问中间的代理服务器,让代理服务器代替客户端去访问目标服务器

反向代理

屏蔽掉服务器的信息,经常用在多台服务器的分布式部署上,像一些大型网站,由于访问人数很多,就需要多台服务器来解决,由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,按一定的规则分发到明确的服务器,但客户端不知道是哪台服务器,常用Nginx做反向代理

什么是负载均衡

将工作任务或者访问请求进行平衡,然后分摊到多个单元、服务器或者组件上执行,解决高并发,高可用(单点故障)、扩展性(水平伸缩)的最高解决方案

代码仓库定义

开发人员分别将前段和后端代码都存入自己的代码仓库,由分支进行分类(分支、主分支、分分支)分类储存后,打包上传服务器

后端打包工具Maven(打包为War、jar包)

前段打包工具Npm、nodejs

一般前端打包后会放入/usr/local/nginx/html目录当中(nginx配置)

后端的打包回放入在Tomcat服务里的Webapps中

私有仓库  gitlab

公有仓库  github

分流策略

Nginx负载均衡模式(rr负载均衡模式)

每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails)默认为1,在失效时间内(fail_timeout)默认为10秒,该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效,继续探测,一般来说rr可以根据权重进行均匀分配

四层代理和七层代理之间的区别:
七层代理:走都是用户态,需要对http的请求进行处理和解析,解析过程中,可以根据请求头和请求体的内容进行流量控制,内容过滤。但是提供的功能更高级,客户的体验更好。
四层代理:基于IP地址和端口号,只负责ip和端口转发后端服务器,不对请求做任何处理。只负责转发,四层走的是内核,四层速度较快。四层代理无法提供更加高级的功能,只能转发。

2、选择场景:


        七层代理:需要对http请求进行和处理,只能选择七层代理(常见的处理方式)
        四层代理: 只需要转发tcp/udp数据包,可以选择四层,也可以选择七层。
七层可以对ip和端口进行转发,也可以对域名进行代理
四层只能是ip和端口
负载均衡算法:有些是无法在四层代理使用。

3、模块
七层代理的模块:

只能写在http模块的全局配置当中。
upstream: 用于处理http请求,支持反向代理,负载均衡,缓存功能
在upstream模块中可以配置对个服务器

四层代理的模块 :
stream只能写在全局模块当中的单独配置。stream代理无谓协议,只管流量。

七层代理:
http全局配置下

upstream liu {
        server 192.168.10.30;
        server 192.168.10.20;
}
location {
        proxy_pass http://test;
}

1、轮询
rr (round robin)负载均衡最简单的算法,轮询。请求轮流分配到后端服务器.
默认算法,可以不加。
默认算法,每发起一次都是新的请求,服务器上没有缓存。
处理器理解能力相近,而且对访问量比较小的网站使用。

2、加权轮询
weight 建立在默认轮询基础上。为后端服务器分配不同的权重,处理能力强的可以分配的权重值要高一些。
轮询次数基本上按照权重进行分配。服务器上也没有缓存。
中大型网站可以使用加权轮询。
权重高的服务会被频繁的请求响应。权重低的可能闲置。会和另外一种算法配合使用:最少连接算法。

3、最少连接算法

最少连接算法:会把请求放送到连接数量比较少的服务器。
最少连接数算法可以单独使用,但是一般都是结合加权轮询一块使用,避免所有的请求都发送到处理能力强的服务器,提高整个集群的稳定性。
中大型网站,可以满足日常访问

4、ip_hash

ip_hash: iphash会根据客户端ip地址解析出一个hash值,然后将请求放到对应的后端服务器,下一次用户访问时,同一客户的请求将会被分配到同一台服务器。

ip_hash第一次 200 访问之后,后续访问都是缓存。第二次访问会304 加载缓存
       注:如果后端服务器的数量发生变化,可能会进行重新分配

ip_hash适用于高并发,请求不会跳转,请求的是缓存。


5、url_hash

url_hash 根据请求的url地址计算hash值,然后将请求发送到相应的后端服务器,相同的url地址请求分配到同一台的服务器

usl_hash和ip_hash一般是结合一起使用,可以适用于并发较高的场员,只要是ip_hash和url hash

基于域名的反向代理:

在/usr/local/nginx/conf/nginx.conf下

upstream ky32 (
server www.kgc.com;
server www.benet.com;
}
 
location {
proxy_pass http://ky32
proxy_set_header HoST $host
#把请求的主机名发送给后端
proxy_set header X-Real-IP $remote_addr;
#后端服务器获取客户端的真实ip地址。
}

四层反向代理

不能用 hash,只可以使用weight 和 least_conn。
因为:四层不能对请求处理,只是转发数据包。
http七层代理:可以处理请求地址和请求的url。
不能处理,只是转发数据流量

http://www.lryc.cn/news/197670.html

相关文章:

  • idea热加载,JRebel 插件是目前最好用的热加载插件,它支持 IDEA Ultimate 旗舰版、Community 社区版
  • 0基础学习PyFlink——Map和Reduce函数处理单词统计
  • 在 Ubuntu 22.04安装配置 Ansible
  • 【大数据 - Doris 实践】数据表的基本使用(三):数据模型
  • PMP和CSPM证书,怎么选?
  • 企业宣传为何要重视领军人物包装?领军人物对企业营销的价值和作用分析
  • 什么是内存泄漏?JavaScript 垃圾回收机制原理及方式有哪些?哪些操作会造成内存泄漏?
  • C++项目实战——基于多设计模式下的同步异步日志系统-⑫-日志宏全局接口设计(代理模式)
  • 京东数据接口:京东数据分析怎么做?
  • 使用Git在本地创建一个仓库并将其推送到GitHub
  • 5.覆盖增强技术——PUCCHPUSCH
  • 徐建鸿:深耕中医康养的“托钵行者”
  • 基于svg+js实现简单动态时钟
  • 端到端测试(End-to-end tests)重试策略
  • 三相交错LLC软启动控制驱动波形分析--死区时间与占空比关系
  • 数据结构详细笔记——栈与队列
  • JVM调试命令与调试工具
  • 《软件方法》第1章2023版连载(07)UML的历史和现状
  • chromium 54 chrome 各个版本发布功能列表(109-119)
  • Linux实现原理 — I/O 处理流程与优化手段
  • 第 367 场 LeetCode 周赛题解
  • 最新百度统计配置图文教程,获取siteId、百度统计AccessToken、百度统计代码教程
  • 【C++ 学习 ㉘】- 详解 C++11 的列表初始化
  • OpenCV12-图像卷积
  • MVCC与BufferPool缓存机制
  • POI、Easy Excel操作Excel
  • 网络安全(黑客)自学方向
  • react写一个简单的3d滚轮picker组件
  • Compose竖向列表LazyColumn
  • 6.自定义相机控制器