Ribbon负载均衡(自己总结的)

文章目录

Ribbon负载均衡

负载均衡解决的问题

首先Ribbon负载均衡配合Eureka注册中心一块使用。

在SpringCloud中为什么会有负载均衡?以及它解决的主要是什么问题?

负载均衡主要解决的问题是如何把请求高效地分发到多个服务实例上,以及如何保证服务的高可用性和弹性。

注意这里的服务实例不是指Eureka服务器注册中心,而是指Eureka注册中心的微服务,比如下图:

怎么理解这里的spring.application.name和instance-id?那个才表示一个具体单位的微服务?

Instance-id表示一个微服务,而spring.application.name表示一个微服务大类,里面可以包含多个具体的微服务实例。比如cloud-payment-service就表示提供者payment的一个微服务大类,这个大类里面有多个微服务实例,每个微服务实例除了端口号不同,其它的东西都是相同的。

因为我们idea里面的每个微服务模块在注册到Eureka注册中心的时候,spring.application.name微服务的名字,也就是serviceid是可以一样的,但是每个微服务的instace-id实例id是不可以一样的。

然后我们开头说的服务实例,指的就是Eureka注册中心中每个instance-id实例id所代表的微服务。

Ribbon负载均衡作用:

  • 避免单点故障造成的程序崩溃。比如如果我们的Cloud-payment-service微服务大类中只写了一个微服务实例payment8001,那么如果这个微服务崩溃之后,我们的整个程序就会崩溃了,但是如果我们写了多个微服务实例(这些微服务实例除了端口号其他都是相同的),比如我们又写了一个微服务实例payment8002,那么既便微服务实例payment8001崩溃了,我们的程序也不会崩溃,因为通过负载均衡我们可以去访问payment8002微服务实例。
  • 可以处理更多的客户端请求。如果客户端请求非常多,但我们只有一个payment8001微服务实例,那么我们处理的请求个数就有限。但如果我们想要提高请求的处理能力该怎么办呢?我们可以新加一个相同的微服务实例比如说payment8002。

不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了

刚开始的时候我还以为负载均衡指的是每次请求来了之后,我把这些请求分发给不同的Eureka-Server注册中心;其实不是的,我们的多个请求来了还是给一个Eureka-Server服务器,但是我们会把这些请求分发给一个spring.application.name微服务大类里面的多个instance-id微服务实例,以减轻多个请求如果都给同一个instance-id微服务实例造成的负担。

那么Eureka-Server服务器集群有什么功能呢?其实很简单,你可以理解成是一个Eureka注册中心的备份,当一个Eureka注册中心崩了之后,我们可以去读取Eureka-Server服务器集群中另外一个Eureka注册中心的微服务,这样就可以保证我们的程序正常的运行下去。

Eureka-Server服务器集群中所有的Eureka注册中心中注册的微服务都是相同的。

Ribbon负载均衡代码怎么写

Ribbon负载均衡一般都是配合RestTemplate一块使用。

首先写RestTemplate配置类,如下图:

然后写负载均衡配置类(注意不能被@ComponentScan注解扫描到,因此不能和主启动类放到同一个包中),如下图:

负载均衡的规则可以是随机,可以是按照顺序,可以是加权,直接返回相关的对象即可。

然后在启动类上写@RibbonClient负载均衡注解,如下图:

上面的name表示我们会负载均衡调用cloud-payment-service微服务大类下面的每个instance-id微服务实例。

ribbon负载均衡依赖是怎么引入的?

可以发现我们只是引入了eureka-client依赖,但是并没有明确引入ribbon负载均衡相关的依赖,那么为什么可以使用@RibbonClient负载均衡的注解呢?因为在eureka中已经包含了ribbon负载均衡依赖了,如下图:

相关推荐
工业互联网专业2 小时前
基于springcloud微服务架构的巡游出租管理平台
java·vue.js·spring cloud·微服务·毕业设计·源码·课程设计
喻米粒06225 小时前
RabbitMQ消息相关
java·jvm·spring boot·spring·spring cloud·sentinel·java-rabbitmq
小杨40415 小时前
springboot框架项目实践应用十四(扩展sentinel错误提示)
spring boot·后端·spring cloud
程序员 小柴15 小时前
SpringCloud概述
后端·spring·spring cloud
半路_出家ren19 小时前
网络安全设备介绍:防火墙、堡垒机、入侵检测、入侵防御
安全·网络安全·负载均衡·堡垒机·防火墙·网络安全设备·上网行为管理
H1346948901 天前
局域网数据同步软件,局域网数据备份的方法
运维·服务器·负载均衡
小杨4042 天前
springboot框架项目实践应用十三(springcloud alibaba整合sentinel)
spring boot·后端·spring cloud
m0_664047022 天前
基于Spring Boot+Layui构建企业级电子招投标系统源码
java·spring cloud·招投标系统源码·电子招标采购系统源码·企业电子招标采购系统源码
Cloud_.2 天前
用Nginx实现负载均衡与高可用架构(整合Keepalived)
nginx·架构·负载均衡·keepalived
H1346948902 天前
服务器定时备份,服务器定时备份有哪些方法?
运维·服务器·负载均衡