我的编程空间,编程开发者的网络收藏夹
学习永远不晚

什么是SpringCloud客户端负载均衡

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

什么是SpringCloud客户端负载均衡

本篇内容介绍了“什么是SpringCloud客户端负载均衡”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Spring Cloud Ribbon

Ribbon是什么?

  • (Spring Cloud Netflix) -->大量使用了Netflix公司的开源项目

  • (Spring Cloud Alibaba)-->大量使用了Alibaba公司的开源项目

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡器;

我们通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行,负载均衡分为硬件负载均衡和软件负载均衡:

  • 硬件负载均衡:比如 F5、深信服、Array 等;

  • 软件负载均衡:比如 Nginx、LVS、HAProxy 等;(是一个服务器实现的)

Ribbon是Netflix公司发布的开源项目(组件、框架、jar包),主要功能是提供客户端的软件负载均衡算法,它会从eureka中获取一个可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。

当客户端发送请求,则ribbon负载均衡器按某种算法(比如轮询、权重、 最小连接数等)从维护的可用服务端清单中取出一台服务端的地址,然后进行请求;

Ribbon非常简单,可以说就是一个jar包,这个jar包实现了负载均衡算法,Spring Cloud 对 Ribbon 做了二次封装,可以让我们使用  RestTemplate 的服务请求,自动转换成客户端负载均衡的服务调用。

Ribbon 支持多种负载均衡算法,还支持自定义的负载均衡算法。

客户端负载均衡 vs 服务端负载均衡

什么是SpringCloud客户端负载均衡

什么是SpringCloud客户端负载均衡

采用Ribbon实现服务调用

1、首先加入ribbon的依赖,但是eureka已经依赖了ribbon,所以这里不需要再引用ribbon的依赖;

2、要使用ribbon,只需要一个注解:

@Bean @LoadBalanced public RestTemplate restTemplate(){     RestTemplate restTemplate = new RestTemplate();     return restTemplate; }

在RestTemplate上面加入@LoadBalanced注解,这样就可以实现RestTemplate 在调用时自动负载均衡;

我们这里现在启动了eureka集群(3个eureka) 和服务提供者集群(2个service-goods)  和一个服务调用者(service-portal)

#告诉服务端,服务实例的唯一ID

eureka.instance.instance-id=34-sprinGCloud-service-portal

Ribbon 负载均衡策略

Ribbon 的负载均衡策略是由 IRule 接口定义, 该接口由如下实现:

在jar包:com.netflix.ribbon#ribbon-loadbalancer中;

什么是SpringCloud客户端负载均衡

要使用ribbon实现负载均衡,在Spring 的配置类里面把对应的负载均衡接口实现类作为一个Bean配置一下就行了;

负载均衡的入口:ILoadBalancer接口

如果要切换负载均衡策略:

@Bean public IRule iRule(){     return new RoundRobinRule(); }

 什么是SpringCloud客户端负载均衡

如果我们没有指定负载均衡策略,ribbon默认的负载均衡是ZoneAvoidanceRule;(新版本,G版本)

Spring Cloud Feign

Feign是什么?

Feign 是 Netflix 公司开发的一个声明式的 REST 调用客户端; (调用远程的restful风格的http接口的一个组件)

调用组件其实很多,比如:

1、Httpclient(apache)

2、Httpurlconnection (jdk)

3、restTemplate(spring)

4、OkHttp(android)

5、Feign (Netflix) --> 实现非常优雅

Spring Cloud Feign 对 Ribbon  负载均衡进行了简化,在其基础上进行了进一步的封装,在配置上大大简化了开发工作,它是一种声明式的调用方式,它的使用方法是定义一个接口,然后在接口上添加注解,使其支持了Spring  MVC标准注解和HttpMessageConverters,Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

Feign能干什么?

Feign旨在简化微服务消费方(调用者,客户端)代码的开发,前面在使用Ribbon+RestTemplate进行服务调用时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方式,但是在实际开发中,由于服务提供者提供的接口非常多,一个接口也可能会被多处调用,Feign在Ribbon+RestTemplate的基础上做了进一步封装,在Feign封装之后,我们只需创建一个接口并使用注解的方式来配置,即可完成对服务提供方的接口绑定,简化了使用Ribbon  + RestTemplate的调用,自动封装服务调用客户端,减少代码开发量;

使用Feign实现消费者

使用 Feign 实现消费者,我们通过下面步骤进行:

第一步:创建普通 Spring Boot 工程

把接口放在通用的接口层、常量类、model的项目中

第二步:添加依赖

要 添 加 的 依 赖 主 要 是

spring-cloud-starter-netflix-eureka-client 和  spring-cloud-starter-feign,如下:

<!-- spring-cloud-starter-openfeign --> <dependency>     <groupId>org.springframework.cloud</groupId>     <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

第三步:声明服务

定义一个 GoodsRemoteClient 接口,通过@FeignClient 注解来指定服务名称,进而绑定服务,然后再通过 SpringMVC  中提供的注解来绑定服务提供者提供的接口, 如下:

@FeignClient("34-SPRINGCLOUD-SERVICE-GOODS") public interface GoodsService { @RequestMapping("/service/goods") public String goods(); }

这相当于绑定了一个名叫34-SPRINGCLOUD-SERVICE-GOODS (这里34-SPRINGCLOUD-SERVICE-GOODS大小写34-sprinGCloud-service-goods都可以 )  的服务提供者提供的/service/goods 接口;

第四步:添加注解

在项目入口类上添加@EnableFeignClients 注解表示开启 Spring Cloud Feign的支持功能;

第五步:使用 Controller 中调用服务

接着来创建一个 Controller 来调用上面的服务,如下:

public class GoodsController {     @Autowired     private GoodsService goodsService;          @RequestMapping("/cloud/goodsFeign")     public ResultObject goodsFeign() {         //调用远程的一个controller, restful的调用         return goodsService.goods();     } }

第六步:属性配置

在 application.properties 中指定服务注册中心、端口号等信息,如下:

server.port=8090

#打开所有的web访问端点

management.endpoints.web.exposure.include=*

#此实例注册到eureka服务端的name

spring.application.name=34-sprinGCloud-service-feign

#不注册自己,我是一个消费者,别人如果不调用我的话,我就不用注册

eureka.client.register-with-eureka=false

#每间隔2s,向服务端发送一次心跳,证明自己依然"存活"

eureka.instance.lease-renewal-interval-in-seconds=2

#告诉服务端,如果我10s之内没有给你发心跳,就代表我故障了,将我踢出掉

eureka.instance.lease-expiration-duration-in-seconds=10

#告诉服务端,服务实例以IP作为链接,而不是取机器名

eureka.instance.prefer-ip-address=true

#告诉服务端,服务实例的唯一ID

eureka.instance.instance-id=34-sprinGCloud-service-feign

#eureka注册中心的连接地址

#eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka

#eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka,http://eureka8762:8762/eureka,http://eureka8763:8763/eureka

eureka.client.service-url.defaultZone=http://192.168.10.128:8761/eureka,http://192.168.10.128:8762/eureka,http://192.168.10.128:8763/eureka

第七步:测试

依次启动注册中心、服务提供者和 feign 实现服务消费者,然后访问如下地址:

http://localhost:8090/cloud/goodsFeign

使用Feign实现消费者的测试

负载均衡:

我们知道,Spring Cloud 提供了 Ribbon 来实现负载均衡,使用 Ribbo 直接注入一个 RestTemplate  对象即可,RestTemplate 已经做好了负载均衡的配置;

在 Spring Cloud 下,使用 Feign 也是直接可以实现负载均衡的,定义一个有@FeignClient  注解的接口,然后使用@RequestMapping 注解到方法上映射远程的 REST 服务,此方法也是做好负载均衡配置的;

通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用;

“什么是SpringCloud客户端负载均衡”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

什么是SpringCloud客户端负载均衡

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringCloud客户端负载均衡——Ribbon

  Ribbon——A ribbon is a long, narrow piece of cloth that you use for tying things together or as a decoration.  Ribbon是一
2023-06-02

客户端负载均衡是什么意思

本篇文章为大家展示了客户端负载均衡是什么意思,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。服务端负载均衡负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,但是一般情况下我们所说的
2023-06-19

springcloud负载均衡的作用是什么

Spring Cloud负载均衡的作用是帮助应用程序在多个服务提供者之间分配负载,以提高系统的可扩展性和可靠性。具体来说,Spring Cloud负载均衡可以通过以下方式提供作用:1. 服务发现:Spring Cloud负载均衡可以与服务注
2023-09-01

SpringCloud Ribbon负载均衡使用策略是什么

这篇“SpringCloud Ribbon负载均衡使用策略是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringC
2023-07-05

什么是负载均衡?

负载均衡是在分布式系统中分散流量,优化资源利用率的技术。它通过负载均衡器将请求分配给服务器,保障系统可用性、性能和扩展性。不同算法(如轮询、最少连接)用于优化请求分配。负载均衡器有硬件和软件类型,提供不同性能和可配置性。它广泛应用于Web应用程序、电子商务、视频流和云计算,具备提高可用性、性能、可扩展性、安全性和灵活性的优点。在选择解决方案时,需考虑流量模式、服务器容量、可用性要求、安全要求、预算和可扩展性等因素。
什么是负载均衡?
2024-04-02

springcloud负载均衡怎么实现

Spring Cloud提供了多种方式来实现负载均衡,常用的有以下几种方式:1. Ribbon:Ribbon是Spring Cloud中默认的负载均衡组件,它可以集成到RestTemplate和Feign中。通过在配置文件中配置服务名和服务
2023-09-02

springcloud怎么实现负载均衡

Spring Cloud中实现负载均衡,可以使用Ribbon和Feign两种方式。1. Ribbon负载均衡:Ribbon是一个客户端负载均衡器,可以与Spring Cloud中的服务发现组件(如Eureka)结合使用。通过在应用程序中引入
2023-08-26

springcloud负载均衡怎么配置

Spring Cloud提供了多种负载均衡的方式,可以通过在配置文件中配置相关参数来进行配置。使用Ribbon负载均衡器:在Spring Cloud项目中添加Ribbon依赖:org.springframework.cloudspring-
2023-10-26

springcloud负载均衡怎么搭建

要搭建Spring Cloud负载均衡,你可以使用Ribbon作为负载均衡器。下面是搭建Spring Cloud负载均衡的步骤:1. 首先,在你的Spring Boot项目的pom.xml文件中,添加以下依赖:```xmlorg.sprin
2023-09-01

SpringCloud怎么实现Ribbon负载均衡

这篇文章主要讲解了“SpringCloud怎么实现Ribbon负载均衡”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringCloud怎么实现Ribbon负载均衡”吧!Ribbon使用R
2023-06-30

springcloud负载均衡策略怎么实现

在Spring Cloud中,负载均衡策略的实现主要依赖于Ribbon和Eureka。Ribbon是Netflix开源的负载均衡组件,它可以在客户端进行负载均衡。在Spring Cloud中,Ribbon被集成在了Spring Cloud
2023-09-27

什么是弹性负载均衡

弹性负载均衡(Elastic Load Balancing)是一种分布式系统的技术,用于均衡不同的网络请求负载,并将其分配给多个服务器实例。它可以根据实时的网络流量情况对服务器实例进行动态调整,以确保每个实例都能够处理合理的负载。弹性负载均
2023-09-01

什么是四层负载均衡

四层负载均衡是指在网络通信中,负载均衡设备在网络传输的第四层(传输层,即TCP/UDP层)对数据流进行负载均衡操作。四层负载均衡主要通过分析传输层的源IP地址、目标IP地址、源端口、目标端口等信息来实现负载均衡,从而实现将网络请求分发到多台
什么是四层负载均衡
2024-04-17

什么是七层负载均衡

七层负载均衡是指在OSI网络模型中的应用层,通过对网络流量进行分析和处理,将请求分发到不同的服务器上,以实现负载均衡。七层负载均衡能够基于应用层协议(如HTTP、HTTPS、SMTP等)进行智能的流量分发,从而提高服务器的性能和可靠性。常见
什么是七层负载均衡
2024-04-17

负载均衡到底是什么,负载均衡结构和流程(图)

负载均衡到底是什么,负载均衡结构和流程(图)负载均衡,英文名Load Balance,作用是将操作分摊到多个执行单元上执行。随着如今网络流量的不断增大,服务的负载均衡是必须的,这里就来讲一讲负载均衡的结构。 说到负载均衡,同学最
2023-06-04

编程热搜

目录