作者:车小胖
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

技术交流qq群,交流起来方便一些:170933152

很久以前,老王去饭店吃饭,需要先到饭店,七荤八素点好菜,坐等饭菜上桌,然后大快朵颐,不亦乐乎。

有了第三方订餐外卖平台(代理),老王懒得动身前往饭店,老王打个电话或用APP,先选好某个饭店,再点好菜,外卖小哥会送上门来。

由于某个品牌的饭店口碑特别好,食客络绎不绝涌入,第三方订餐电话也不绝于耳,但是限于饭店接待能力有限,无法提供及时服务,很多食客等得不耐烦了,纷纷铩羽而归,饭店老总看着煮熟的鸭子飞走了,心疼不已。

痛定思痛,老总又成立了几个连锁饭店,形成一个集群,对外提供统一标准的菜品服务,电话订餐电话400-xxx-7777,当食客涌入饭店总台,总台将食客用大巴运到各个连锁店,这样食客既不需要排队,各连锁店都能高速运转起来,一举两得,老总乐开了花,并为此种运作模式起名为“反向代理”(Reverse Proxy)。

反向代理
在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。

反向代理的实现
1)需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上

2)服务器返回自己的服务到负载均衡设备

3)负载均衡将服务器的服务返回用户

以上的潜台词是:用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,解析得到的IP其实是负载均衡的IP,而不是服务器的IP,这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务。

谈完反向代理服务,再来谈谈终端用户常用的代理服务。

代理
1)用户希望代理服务器帮助自己,和要访问服务器通信,为了实现此目标,需要以下工作:

a) 用户IP报文的目的IP = 代理服务器IP
b) 用户报文端口号 = 代理服务器监听端口号
c) HTTP 消息里的URL要提供服务器的链接

2)代理服务器可以根据c)里的链接与服务器直接通信

3)服务器返回网页

4)代理服务器打包3)中的网页,返回用户。

代理服务器应用场景
场景一

如果不采用代理,用户的IP、端口号直接暴露在Internet(尽管地址转换NAT),外部主机依然可以根据IP、端口号来开采主机安全漏洞,所以在企业网,一般都是采用代理服务器访问互联网。

那有同学会有疑问,那代理服务器就没有安全漏洞吗?
相比千千万万的用户主机,代理服务器数量有限,修补安全漏洞更方便快捷。

场景二
在一个家庭局域网,家长觉得外部的世界是洪水猛兽,为了不让小盆友们学坏,决定不让小盆友们访问一些网站,可小盆友们有强烈的逆反心理,侬越是不让我看,我越是想看,于是小盆友们使用了代理服务器,这些代理服务器将禁止访问的网页打包好,然后再转交给小盆友,仅此而已。

当然关键的关键是代理服务器不在禁止名单当中!


正向代理代理客户端,反向代理代理服务器

SpringCloud学习笔记003---服务提供者和服务消费者补充:反向代理相关推荐

  1. SpringCloud学习笔记(五)服务发现Discovery

    对于注册进Eureka里的微服务,可以通过服务发现来获得该服务的信息 以下代码以payment8001模块为例 修改COntroller 通过调用DiscoveryClient的getServices ...

  2. SpringCloud学习笔记02-服务提供者与服务消费者

    文章目录 前言 一.SpringCloud简介? 二.SpringCloud特点 三.实战前提 1. 技术储备 2. 开发工具 四.编写服务消费者和提供者 1. 编写服务提供者 1. 构建项目 2. ...

  3. SpringCloud学习笔记003---服务提供者和服务消费者

    ============================================================= 服务提供者与服务消费者 技术交流群:170933152 ========== ...

  4. SpringCloud学习笔记(1)- Spring Cloud Netflix

    文章目录 SpringCloud学习笔记(1)- Spring Cloud Netflix 单体应用存在的问题 Spring Cloud Eureka Eureka Server代码实现 Eureka ...

  5. SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用

    1. 什么是负载均衡? 负载均衡,就是分发请求流量到不同的服务器. 负载均衡一般分为两种 1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 2. 服务提供者(spring-c ...

  6. 分布式系统服务注册与发现原理 SpringCloud 学习笔记

    分布式系统服务注册与发现原理 & SpringCloud 学习笔记 分布式系统服务注册与发现原理 引入服务注册与发现组件的原因 单体架构 应用与数据分离 集群部署 微服务架构 架构演进总结 服 ...

  7. SpringCloud 学习笔记(1 / 3)

    Spring Cloud 学习笔记(2 / 3) Spring Cloud 学习笔记(3 / 3) 文章目录 01\_前言闲聊和课程说明 02\_零基础微服务架构理论入门 03\_第二季Boot和Cl ...

  8. SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务

    SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务 - 一.大致介绍 1.众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和 ...

  9. SpringCloud学习笔记(1)- Spring Cloud Alibaba

    文章目录 SpringCloud学习笔记(1)- Spring Cloud Alibaba 服务治理 Nacos 服务注册 Nacos 服务发现与调用 Ribbon 负载均衡 Sentinel 服务限 ...

最新文章

  1. C++成员对象和封闭类
  2. 关于NHibernate
  3. 前后台传参类型、格式不同,解决思路
  4. 投资银行对Java进行的二十大核心面试问答
  5. linux gcc 简单使用记录01
  6. matlab画线不同颜色_怎样画线框图才有意义
  7. 命令端口C++检测本地网络端口占用
  8. 【数字信号】基于matlab GUI DTMF双音多频手机拨号仿真系统【含Matlab源码 1085期】
  9. 移动硬盘连接计算机接口类型,移动硬盘数据线接口类型有哪几种-单usb接口
  10. 根据录入的计算公式计算_增值税含税怎么计算?
  11. Mac CAD2018 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
  12. Ubuntu 22.4网易云音乐启动失败处理方法
  13. java 访问 domino_java程序远程访问Domino数据库简例
  14. 阶层是一条漫长的阶梯,你能爬到第几层?
  15. 仿qq聊天程序设计之借鉴
  16. 无lnternet_无internet访问,详细教您怎么解决无internet访问
  17. 交换机端口的PVID
  18. luogu P1332 血色先锋队
  19. 2020软件测试行业趋势
  20. docker login登录阿里云

热门文章

  1. 网络分裂(network partition)
  2. Spring IOC学习心得之源码级分析ContextLoaderListener的作用(IOC容器初始化入口)
  3. [2019.3.25]多项式求逆
  4. 5月8日——iOS中的3D Touch效果
  5. Android基础巩固进阶
  6. 移动国家号(MCC)
  7. Java 学习笔记之 线程安全
  8. 一个核物理学霸为何两次收到BlackHat的邀请
  9. Linux 删除mysql数据库失败的解决方法
  10. ASP.NET MVC View使用Conditional compilation symbols