关于spring boot的负载均衡策略及其扩展----代理策略

微服务spring boot的负载均衡实现分为两种策略模式,也可以算是负载均衡定义的两层含义的实现;

(挖坑:此处的负载均衡为软件负载均衡,硬件负载均衡暂无介绍;)

  • 负载均衡(Load Balance)的两层含义: 

1.集群含义:负载均衡服务器作为对外端口,接收请求,并分发计算请求,把其它服务器当做资源,本身作为数据汇总,将计算结果返回;对外表现是同一台服务器,但性能超强,适用于大量计算的服务请求;如:代理服务器模式

2.分布式含义(葫芦娃模式):负载均衡服务器作为对外端口,不做数据整合计算,只做部分流量处理+流量转发,其他服务器和其功能相当(像我这么吊的还有六个)每个葫芦娃处理的请求类似,适用于高并发,高请求,大流量的服务架构。常用的有:DNS服务器的负载均衡

  • 负载均衡在spring cloud中的两种策略:
  • 1.集群实现:实现依赖的功能模块,1个Eureka+1个ribbon+两个业务服务模块

  •  实现原理:两个业务服务模块,如chickenA和chickenB(功能一样,代码一样,配置一样,俩双胞胎,就端口名字不一样)分别注册到Eureka(注册中心/服务发现)这一步对于业务服务模块又叫服务注册,等业务服务模块去Eureka找其他业务服务模块时,Eureka帮助业务模块男找到业务模块女对象,就叫服务发现。ribbon是Eureka实现负载均衡的核心模块,也需要注册到Eureka;当一个外部请求叫了个鸡,先走ribbon(中文翻译:缎带,即飘飘老鸨),飘飘老鸨会问大管家Eureka(拉丁语:我找到了,即:管找鸡),大管家会去看看那个chicken可用(可用的含义包括:1.在楼里,没出台--即服务可用,且服务空闲,2.在楼里,出台了,但有时间上厕所---即服务可用,且服务不空闲,但服务能处理多个请求),每次都随机返回一个可用chicken,对于一个外部请求来说,每次叫的鸡都不是同一个,且不知道是哪一个,多刺激?当然,两个是双胞胎,除了端口名不一样,其他都一样;大管家会比较忙;

  • 2.分布式的实现:实现依赖的功能模块:两个Eureka+1个Feign声明式使用,即:@Feignclient注解+一个客户端

  • 实现原理:当业务做大做强,再创辉煌时候,大管家难免发生意外,忙不过来,飘飘老鸨也得假装一下,做个有档次有身份的飘,(feign中文意思是假装,底层是靠ribbon实现,作用是把一个业务服务模块,声明式的注册成为hhtp客户端),而两个chicken也在动荡混乱中还剩下一个;但业务总要开展的啊,所以多找了个大管家;管家a忙了就让b顶上;儿chickenA只需要大声宣布(声明,加上@Feignclient注解)自己可用,再加上两个大管家,那就是高可用,妥妥滴永远在线,永不掉线;

  • 目前公司使用的是分布式实现,原因:单个服务性能足够,且经常更新服务功能和模块,而且Eureka注册不稳定,所有配置两个注册中心,防止注册中心宕机,注册发现失败的情况;

扩展:和负载均衡不得不说的网络代理

网络代理分类(拓扑结构略):用到的概念:客户端,代理服务器,资源服务器,路由

正向代理(Forward Proxy):客户端进行相关配置,然后跳转到指定的代理服务器,代理服务器去访问真正的资源服务器,这样子相当于客户端直接访问资源服务器,这时候,客户端指定自己在访问资源服务器;正向代理服务器的使用场景:1.客户端访问不到资源服务器;2.静态资源缓存;3.授权管理;4.隐藏访问者(客户端)的行踪,此时正向代理服务器也叫“肉鸡”;例如:VPN,迅雷下载;权限管理软件

反向代理(reverse proxy):客户端什么不用搞,想访问资源服务器,但其实是访问的代理服务器,代理服务器去访问资源服务器,然后把资源返回给客户端,假装客户端真的在访问资源;反向代理服务器使用场景:1.保护资源服务器 2.静态资源缓存;例子:大多数的互联网企业,云服务器等等

透明代理:客户端不设置参数,代理服务器管理客户端的行为,传递客户端的ip等信息,透明化客户端;极少用;如:企业行为管理软件

注:代理是对客户端而言的,听客户端的话就是正向代理,欺骗客户端就是反向代理,把客户端信息暴露就是透明代理;

提到了反向代理,就不得不说负载均衡,反向代理一直是和负载均衡联起来说的,其实也是这样子,因为当客户端太多,有n多请求的时候,对资源服务的要求就多,要求要么性能要高,要么并发处理要高,无论什么情况,不是一台服务器可以解决的,这样子,代理服务器后面有多个服务器处理请求;所以,反向代理是对客户端而言,负载均衡是对代理服务器而言;负载均衡又细分多种算法,如:1.按照ip分类:同一ip访问同一服务器;2.按照资源分类:同一资源访问同一服务器等;

Nginx的优势:

1.权重轮训,减少宕机概率,提高可用性;即:好用的权重大;

2.智能调度,依旧请求访问的处理时间进行请求服务器调度

3.用的人多;

spring cloud中有可以实现负载均衡的模块:zuul;

zuul是spring cloud的网关,可以实现负载均衡,拦截器等功能;需要自己编写代码;

Nginx是代理服务器,需要配置;

zuul:只有spring cloud使用;

Nginx:多种编程语言支持

 

参考文章:

https://blog.51cto.com/z00w00/1031287

https://blog.csdn.net/tsummerb/article/details/79248015

https://blog.csdn.net/neosmith/article/details/52449921

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值