【我的架构之路】什么是代理服务器以及什么是负载均衡?

正向代理与反向代理

普通概念来说:

  1. 正向代理是向外的,我通过一个终端访问外面的服务
  2. 反向代理是向内的,当外面的人像通过一个终端访问我的服务

这样看来是不是很好理解,下面拿生活举例来说明代理过程。


代入生活:

前提: 我的母亲非常严格,给我买了台电脑但只允许我使用QQ,除了QQ以外的所有网站均被墙(无法访问)。

正向代理: 有一天我需要查看期中测评成绩,但是我无法访问学校的网站,于是我通过QQ向老师询问我的成绩,让他替我查询,老师是可以访问到学校网站的所以他帮我查到了成绩并告诉了我。
正向代理图解
反向代理: 有一天我的同学也想知道我的成绩,但突然发现没有加我QQ好友,于是他去问咱们班主任,我们班主任又替他查了一次我的成绩并告诉了他。
反向代理图解
总结: 正反向代理的过程是正好相反的。

性能优化: 在刚刚同学询问班主任的过程中,如果我的老师已经知道了我的成绩就可以直接告诉那位同学,而没有必要再去发起请求去查询一次成绩,所以代理服务器可以设置缓存提高性能。

反向代理有一个服务器通常有一个外网IP也有一个内网IP,此时外界访问的是公网,我们内部通信使用私网,由于在一个内网不需要发送HTTPS请求,直接发送HTTP请求就行,代理服务器还可以设置缓存,如果代理服务器有我的数据直接应答转告新来的请求,从而节省资源请求。


负载均衡

谈到了“反向代理”必然也离不开“负载均衡”,那负载均衡是如何进行数据分发的呢?

实际上负载均衡就是反向代理服务器,但是它反向代理的目标节点有多个。

案例2: 银行的资金管理系统是非常复杂且需要高安全性的,让外部访问代理服务器,内部目标服务器做数据存储是不是很安全?

此时我们将目标服务器一模一样的部署了两份。

现在当一位用户访问资金管理系统时,代理服务器一会儿将他分配给了A服务器处理,一会儿让B服务器处理,这时AB两服务器的压力都减少了许多。
负载均衡图解

负载均衡的实质就是反向代理服务器,并且应用了一个负载均衡算法

  1. 轮转法:
    让多台服务器形成一个大圆圈,一会儿让A处理,一会儿让B处理,一会儿让C处理。
    但是真实场景不允许我们这样做,我们需要保证在一个用户接入进来的时候只有一个服务器为他服务。
    轮转法

  2. Hash法
    概念:hash法是一个散列算法,例如我们要去食堂打饭如何保证每位同学不拥挤呢,可以采用学号除以10取余数,f(x) = 学号%10 ,所得到的个位数就是对应窗口号。

    这样hash操作可以保证每个请求来的客户端最终只能拿到一台服务器作为他的目标服务器。

在实际中我们常常采用原地址hash,因为发来的HTTP请求基于TCP/IP协议,而TCP/IP协议中又很容易取到IP地址,直接将IP地址一hash就可以得到目标服务器的编号。


疑点解答

单点故障: 无论有多少台目标服务器,但负载均衡可能被宕机,这是横向扩展中的“单点故障”,所以一定要启用主从备用计划,主服务器宕机了立刻让从服务器接上工作,并且紧急排查故障。

健康监视算法: 如果我们购买了1000台服务器作为目标服务器,但其中某些存在隐患,随着业务的扩大,隐患服务器突然内存烧了,这个时候就不应该把外接请求交给这台坏掉的服务器。
这个时候采用健康监视算法,负载均衡设备每隔10s对一台服务器运行集成测试或者直接ping一下,如果能够ping通那么这个服务器就是“健康”的。

什么采用横向扩展?
无状态服务可以被横向扩展,无状态服务的特点是任何一个时间点宕机,再开启它依然能够承载原服务。另一个概念为一个服务不存储数据就是无状态服务。
而有状态服务采取纵向扩展,直接扩展硬件配置。但是纵向扩展回报率和投入率不是线性关系,投入的越高、回报越低。

有时候会发现我买了一台电脑,2G的运存可能吃不消现在主流玩法,但是我提升到8G了就可以直观感受到8G带来的速度提升,可如果我扩展到了16G或者是128G,这个时候并不能感受到大运存带来的直观速度体验。

负载均衡和静态端口映射有什么不同吗?
反向代理工作在应用层。端口映射工作在传输层。

如果1000台服务器处理请求,也要从数据库中读取,数据库是不是得性能非常好的数据库?
数据库一般是没法横向扩展的,所以只能靠主从,缓存,读写分离这些层面去提升可扩展性,或者使用纵向扩展法提升内存处理器。当然,现在社区中逐渐流行起来分布式数据库了,这样就能解决横向扩展了

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值