一、ribbon
Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它只具备负载均衡的能力,不具备发送请求的能力,所以要配合服务通讯组件来一起使用 ,比如restTemplate。
ribbon使用方法:
方法一:DiscoveryClient
优点:客户获得指定服务名称下的所有服务实例,缺点:没有负载均衡,需要通过获取服务列表,来编程实现负载均衡。
这种方式我们需要手动设置均衡负载的规则。
结果:
方法二:LoadBlanceClient
优点:自带负载均衡算法,不需要自己实现了。缺点:使用时需要每次先根据服务id获取一个负载均衡机器,然后再通过RestTemplate调用服务。
结果:
方法三:@LoadBalanced注解
结果:
补充
ribbon的均衡方式,如果没有配置,一般默认的是轮询策略
轮询策略:如果给服务器从0到N编号,轮询均衡策略会从0开始依次选择一个服务器作为处理本次请求的服务器。
权重轮询策略:按照服务器的不同处理能力,给服务器分配不同的权重,然后请求会按照权重分配给不同的服务器。
随机策略:将请求随机分配给不同的服务器。
响应速度策略:负载均衡设备对每个服务器发送一个探测请求,看看哪台服务器的响应速度更快,就分配给哪个服务器。
二、nginx
nginx使用方法:
打开linux配置好的nginx.config文件
将配置改成服务ip和端口 后面的weight为权重
再打开conf.d下的default.conf文件,配置一下url路径
proxy_pass是通过反向代理将客户端的请求转发给后端的一个或多个服务器,并将后端服务器的响应返回给客户端。
保存好之后 重启nginx容器。
然后在网页输入nginx容器的ip加端口号
结果:
三:nginx与ribbon在负载均衡方面的不同与优缺点
差异:
1.类型和用途:Nginx是一款高性能的Web服务器和反向代理服务器。它的负载均衡功能通常用于分发HTTP请求,将流量分发到多个后端服务器。Ribbon是Netflix开发的一个客户端负载均衡库,主要用于在微服务架构中的服务间通信。
2.架构和适用范围:Nginx是一个独立的反向代理服务器,适用于HTTP、HTTPS等协议的负载均衡。Ribbon是一个嵌入在服务消费者端的库,适用于在微服务环境下处理服务之间的通信和负载均衡。
3.配置和管理:Nginx通常需要在独立的配置文件中定义负载均衡规则,配置相对独立。管理员需要管理Nginx服务器的整体配置。Ribbon的配置通常嵌入在服务消费者的代码中,通过注解或配置文件进行定义。微服务的开发团队可以更灵活地管理服务间通信的负载均衡配置。
4.生态系统:Nginx是一个通用性负载均衡和反向代理服务器,在各种场景下都有广泛的应用,不仅限于微服务架构。Ribbon更专注于微服务架构中服务间通信的负载均衡,通常与Netflix的其他组件(如Eureka、Hystrix)搭配使用。