soul网关系列(二):HTTP服务负载均衡运行实例和初步分析

divide插件是一个http代理插件,当请求头的rpcType为http的时候, soul根据请求参数匹配到规则,进行响应式的代理调用。

一、divide插件简介

1.1 divide概述

soul网关处理HTTP协议请求的核心处理插件就是divide。
divide插件是进行http正向代理的插件,所有http类型的请求,都是由该插件进行负载均衡的调用。

1.2 divide的配置参数

在这里插入图片描述
从昨天的soul整体框架来看,soul在启动的时候,会把相应的配置参数缓存止JVM内存中。divide插件在此处共有两个配置项。

  • soul.upstream.check:true 默认为 ture,设置为false,不检测
  • soul.upstream.scheduledTime:10 定时检测时间间隔,默认10秒。

查阅官方文档,这两参数主要是做客户端IP+Port检测使用,在soul-admin中会有一个定时任务来扫描配置的接口,如果发现掉线了,则移除ip+port。
在这里插入图片描述

1.3 divide插件目录结构概述

在这里插入图片描述

二、负载均衡和相关常用算法

2.1 负载均衡算法

负载平衡(Load balancing)是一种电子计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。 主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。wiki-负载均衡

负载均衡是一个看似很高大上,其实是个5毛钱的概念,类似孩子多了分食。

2.2 常见的几种负载均衡算法

1、轮询法–对应RoundRobinLoadBalance
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、随机法–对应RandomLoadBalance
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。
3、源地址哈希法–对应HashLoadBalance
源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
4、加权轮询法
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
5、加权随机法
与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。
6、最小连接数法
最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

三、soul网关负载均衡运行实例

3.1 使用soul-test-http启动两个spring-boot服务

  • Run/Debug Configuration配置勾选Allow parallel run
    在这里插入图片描述
  • 修改配置文件
    在这里插入图片描述
  • 启动两个soulTestHttpApplication服务,分别分配8188端口和8189端口
    在这里插入图片描述

3.2 web端配置

在这里插入图片描述

3.3 postman测试

因为8188的权重比较大,基本上请求都会到达8188服务至上,证明达到了期望的负载均衡效果
在这里插入图片描述

四、参考链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值